using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Configuration; using HarmonyLib; using Jotunn; using Jotunn.Configs; using Jotunn.Entities; using Jotunn.Managers; using Jotunn.Utils; using Microsoft.CodeAnalysis; using UnityEngine; using WingsoftheValkyrie.VFX; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")] [assembly: AssemblyCompany("WingsoftheValkyrie")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyDescription("Valheim Wings of the Valkyrie Mod")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("WingsoftheValkyrie")] [assembly: AssemblyTitle("WingsoftheValkyrie")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Embedded] [AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace WingsoftheValkyrie { [HarmonyPatch(typeof(Player))] public static class FlightController { private static bool isGliding; private static bool wantsToFlap; [HarmonyPatch("Update")] [HarmonyPostfix] public static void UpdatePostfix(Player __instance) { //IL_0072: Unknown result type (might be due to invalid IL or missing references) //IL_0091: Unknown result type (might be due to invalid IL or missing references) //IL_00bf: Unknown result type (might be due to invalid IL or missing references) //IL_00ed: Unknown result type (might be due to invalid IL or missing references) //IL_0249: Unknown result type (might be due to invalid IL or missing references) //IL_0204: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)__instance != (Object)(object)Player.m_localPlayer || !ModConfig.EnableMod.Value) { return; } RuneWingVFX runeWingVFX = ((Component)__instance).GetComponent(); if ((Object)(object)runeWingVFX == (Object)null) { runeWingVFX = ((Component)__instance).gameObject.AddComponent(); } string equippedWingsName = WingsItem.GetEquippedWingsName(__instance); if (equippedWingsName != null) { switch (equippedWingsName) { case "WingsOf_Crude": runeWingVFX.SetTierColor(Color.green); break; case "WingsOf_Troll": runeWingVFX.SetTierColor(Color.cyan); break; case "WingsOf_Lox": runeWingVFX.SetTierColor(new Color(0.8f, 0.8f, 1f)); break; case "WingsOf_Dragon": runeWingVFX.SetTierColor(new Color(0.8f, 0.1f, 1f)); break; } if (!((Character)__instance).IsOnGround() && !((Character)__instance).IsSwimming() && !((Character)__instance).InWater()) { if (ZInput.GetButtonDown("Jump")) { float num = 10f; switch (equippedWingsName) { case "WingsOf_Crude": num = ModConfig.CrudeFlapStaminaCost.Value; break; case "WingsOf_Troll": num = ModConfig.TrollFlapStaminaCost.Value; break; case "WingsOf_Lox": num = ModConfig.LoxFlapStaminaCost.Value; break; case "WingsOf_Dragon": num = ModConfig.DragonFlapStaminaCost.Value; break; } if (((Character)__instance).HaveStamina(num)) { ((Character)__instance).UseStamina(num); runeWingVFX.TriggerFlap(); wantsToFlap = true; } else { ((Character)__instance).Message((MessageType)2, "Not enough stamina to flap!", 0, (Sprite)null); } } if (!isGliding && (wantsToFlap || ((Character)__instance).GetVelocity().y < -5f)) { isGliding = true; } if (isGliding) { Traverse.Create((object)__instance).Field("m_maxAirAltitude").SetValue((object)((Component)__instance).transform.position.y); } } else { isGliding = false; } } else { isGliding = false; } runeWingVFX.SetGlidingState(isGliding); } [HarmonyPatch("FixedUpdate")] [HarmonyPostfix] public static void FixedUpdatePostfix(Player __instance) { //IL_01af: Unknown result type (might be due to invalid IL or missing references) //IL_01b4: Unknown result type (might be due to invalid IL or missing references) //IL_01bd: Unknown result type (might be due to invalid IL or missing references) //IL_0182: Unknown result type (might be due to invalid IL or missing references) //IL_018f: Unknown result type (might be due to invalid IL or missing references) //IL_0199: Unknown result type (might be due to invalid IL or missing references) //IL_01ed: Unknown result type (might be due to invalid IL or missing references) //IL_01dc: Unknown result type (might be due to invalid IL or missing references) //IL_0238: Unknown result type (might be due to invalid IL or missing references) //IL_023d: Unknown result type (might be due to invalid IL or missing references) //IL_0204: Unknown result type (might be due to invalid IL or missing references) //IL_0211: Unknown result type (might be due to invalid IL or missing references) //IL_021b: Unknown result type (might be due to invalid IL or missing references) //IL_0254: Unknown result type (might be due to invalid IL or missing references) //IL_0258: Unknown result type (might be due to invalid IL or missing references) //IL_025d: Unknown result type (might be due to invalid IL or missing references) //IL_0262: Unknown result type (might be due to invalid IL or missing references) //IL_0273: Unknown result type (might be due to invalid IL or missing references) //IL_0278: Unknown result type (might be due to invalid IL or missing references) //IL_0285: Unknown result type (might be due to invalid IL or missing references) //IL_02b1: Unknown result type (might be due to invalid IL or missing references) //IL_0358: Unknown result type (might be due to invalid IL or missing references) //IL_0371: Unknown result type (might be due to invalid IL or missing references) //IL_038b: Unknown result type (might be due to invalid IL or missing references) //IL_039b: Unknown result type (might be due to invalid IL or missing references) //IL_03a5: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)__instance != (Object)(object)Player.m_localPlayer || !ModConfig.EnableMod.Value || !isGliding || ((Character)__instance).IsOnGround() || ((Character)__instance).IsSwimming() || ((Character)__instance).InWater()) { return; } Rigidbody component = ((Component)__instance).GetComponent(); if (!((Object)(object)component != (Object)null)) { return; } float num = 15f; float num2 = 50f; float num3 = 12f; switch (WingsItem.GetEquippedWingsName(__instance)) { case "WingsOf_Crude": num = ModConfig.CrudeGlideSpeed.Value; num2 = ModConfig.CrudeFlightCeiling.Value; num3 = ModConfig.CrudeFlapForce.Value; break; case "WingsOf_Troll": num = ModConfig.TrollGlideSpeed.Value; num2 = ModConfig.TrollFlightCeiling.Value; num3 = ModConfig.TrollFlapForce.Value; break; case "WingsOf_Lox": num = ModConfig.LoxGlideSpeed.Value; num2 = ModConfig.LoxFlightCeiling.Value; num3 = ModConfig.LoxFlapForce.Value; break; case "WingsOf_Dragon": num = ModConfig.DragonGlideSpeed.Value; num2 = ModConfig.DragonFlightCeiling.Value; num3 = ModConfig.DragonFlapForce.Value; break; } if (wantsToFlap) { component.velocity = new Vector3(component.velocity.x, num3, component.velocity.z); wantsToFlap = false; } else { Vector3 lookDir = ((Character)__instance).GetLookDir(); float num4 = -2f; if (lookDir.y < 0f) { num4 = Mathf.Lerp(-2f, -20f, 0f - lookDir.y); } if (component.velocity.y < num4) { component.velocity = new Vector3(component.velocity.x, num4, component.velocity.z); } } Vector3 value = Traverse.Create((object)__instance).Field("m_moveDir").GetValue(); if (((Vector3)(ref value)).magnitude > 0.1f) { Vector3 val = value * num; val.y = component.velocity.y; component.velocity = Vector3.Lerp(component.velocity, val, 3f * Time.fixedDeltaTime); } if ((Object)(object)ZoneSystem.instance != (Object)null) { float groundHeight = ZoneSystem.instance.GetGroundHeight(((Component)__instance).transform.position); float num5 = 50f; switch (WingsItem.GetEquippedWingsName(__instance)) { case "WingsOf_Crude": num5 = ModConfig.CrudeFlightCeiling.Value; break; case "WingsOf_Troll": num5 = ModConfig.TrollFlightCeiling.Value; break; case "WingsOf_Lox": num5 = ModConfig.LoxFlightCeiling.Value; break; case "WingsOf_Dragon": num5 = ModConfig.DragonFlightCeiling.Value; break; } if (((Component)__instance).transform.position.y - groundHeight > num5 && component.velocity.y > 0f) { component.velocity = new Vector3(component.velocity.x, 0f, component.velocity.z); } } } } public static class ModConfig { public static ConfigEntry EnableMod { get; private set; } public static ConfigEntry CrudeFlightCeiling { get; private set; } public static ConfigEntry CrudeGlideSpeed { get; private set; } public static ConfigEntry CrudeFlapForce { get; private set; } public static ConfigEntry CrudeFlapStaminaCost { get; private set; } public static ConfigEntry CrudeCraftingStation { get; private set; } public static ConfigEntry CrudeMinStationLevel { get; private set; } public static ConfigEntry CrudeCraftingRequirements { get; private set; } public static ConfigEntry TrollFlightCeiling { get; private set; } public static ConfigEntry TrollGlideSpeed { get; private set; } public static ConfigEntry TrollFlapForce { get; private set; } public static ConfigEntry TrollFlapStaminaCost { get; private set; } public static ConfigEntry TrollCraftingStation { get; private set; } public static ConfigEntry TrollMinStationLevel { get; private set; } public static ConfigEntry TrollCraftingRequirements { get; private set; } public static ConfigEntry LoxFlightCeiling { get; private set; } public static ConfigEntry LoxGlideSpeed { get; private set; } public static ConfigEntry LoxFlapForce { get; private set; } public static ConfigEntry LoxFlapStaminaCost { get; private set; } public static ConfigEntry LoxCraftingStation { get; private set; } public static ConfigEntry LoxMinStationLevel { get; private set; } public static ConfigEntry LoxCraftingRequirements { get; private set; } public static ConfigEntry DragonFlightCeiling { get; private set; } public static ConfigEntry DragonGlideSpeed { get; private set; } public static ConfigEntry DragonFlapForce { get; private set; } public static ConfigEntry DragonFlapStaminaCost { get; private set; } public static ConfigEntry DragonCraftingStation { get; private set; } public static ConfigEntry DragonMinStationLevel { get; private set; } public static ConfigEntry DragonCraftingRequirements { get; private set; } public static void Init(ConfigFile config) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000f: Expected O, but got Unknown //IL_0076: Unknown result type (might be due to invalid IL or missing references) //IL_0080: Expected O, but got Unknown //IL_00a6: Unknown result type (might be due to invalid IL or missing references) //IL_00b0: Expected O, but got Unknown //IL_00d6: Unknown result type (might be due to invalid IL or missing references) //IL_00e0: Expected O, but got Unknown //IL_0106: Unknown result type (might be due to invalid IL or missing references) //IL_0110: Expected O, but got Unknown //IL_0137: Unknown result type (might be due to invalid IL or missing references) //IL_0141: Expected O, but got Unknown //IL_0167: Unknown result type (might be due to invalid IL or missing references) //IL_0171: Expected O, but got Unknown //IL_0194: Unknown result type (might be due to invalid IL or missing references) //IL_019e: Expected O, but got Unknown //IL_01c4: Unknown result type (might be due to invalid IL or missing references) //IL_01ce: Expected O, but got Unknown //IL_01f4: Unknown result type (might be due to invalid IL or missing references) //IL_01fe: Expected O, but got Unknown //IL_0224: Unknown result type (might be due to invalid IL or missing references) //IL_022e: Expected O, but got Unknown //IL_0254: Unknown result type (might be due to invalid IL or missing references) //IL_025e: Expected O, but got Unknown //IL_0285: Unknown result type (might be due to invalid IL or missing references) //IL_028f: Expected O, but got Unknown //IL_02b5: Unknown result type (might be due to invalid IL or missing references) //IL_02bf: Expected O, but got Unknown //IL_02e2: Unknown result type (might be due to invalid IL or missing references) //IL_02ec: Expected O, but got Unknown //IL_0312: Unknown result type (might be due to invalid IL or missing references) //IL_031c: Expected O, but got Unknown //IL_0342: Unknown result type (might be due to invalid IL or missing references) //IL_034c: Expected O, but got Unknown //IL_0372: Unknown result type (might be due to invalid IL or missing references) //IL_037c: Expected O, but got Unknown //IL_03a2: Unknown result type (might be due to invalid IL or missing references) //IL_03ac: Expected O, but got Unknown //IL_03d3: Unknown result type (might be due to invalid IL or missing references) //IL_03dd: Expected O, but got Unknown //IL_0403: Unknown result type (might be due to invalid IL or missing references) //IL_040d: Expected O, but got Unknown //IL_0430: Unknown result type (might be due to invalid IL or missing references) //IL_043a: Expected O, but got Unknown //IL_0460: Unknown result type (might be due to invalid IL or missing references) //IL_046a: Expected O, but got Unknown //IL_0490: Unknown result type (might be due to invalid IL or missing references) //IL_049a: Expected O, but got Unknown //IL_04c0: Unknown result type (might be due to invalid IL or missing references) //IL_04ca: Expected O, but got Unknown //IL_04f0: Unknown result type (might be due to invalid IL or missing references) //IL_04fa: Expected O, but got Unknown //IL_0521: Unknown result type (might be due to invalid IL or missing references) //IL_052b: Expected O, but got Unknown //IL_0551: Unknown result type (might be due to invalid IL or missing references) //IL_055b: Expected O, but got Unknown //IL_057e: Unknown result type (might be due to invalid IL or missing references) //IL_0588: Expected O, but got Unknown //IL_05ae: Unknown result type (might be due to invalid IL or missing references) //IL_05b8: Expected O, but got Unknown ConfigurationManagerAttributes val = new ConfigurationManagerAttributes { IsAdminOnly = true }; AcceptableValueRange val2 = new AcceptableValueRange(10f, 5000f); AcceptableValueRange val3 = new AcceptableValueRange(1f, 100f); AcceptableValueRange val4 = new AcceptableValueRange(1f, 100f); AcceptableValueRange val5 = new AcceptableValueRange(0f, 100f); AcceptableValueRange val6 = new AcceptableValueRange(1, 10); EnableMod = config.Bind("1. General", "EnableMod", true, new ConfigDescription("Enable or disable the Valkyrie Wings mod.", (AcceptableValueBase)null, new object[1] { val })); CrudeFlightCeiling = config.Bind("2. Crude Wings", "FlightCeiling", 120f, new ConfigDescription("Flight ceiling limit above ground.", (AcceptableValueBase)(object)val2, new object[1] { val })); CrudeGlideSpeed = config.Bind("2. Crude Wings", "GlideSpeed", 10f, new ConfigDescription("Horizontal glide speed.", (AcceptableValueBase)(object)val3, new object[1] { val })); CrudeFlapForce = config.Bind("2. Crude Wings", "FlapForce", 15f, new ConfigDescription("Upward lift force when flapping.", (AcceptableValueBase)(object)val4, new object[1] { val })); CrudeFlapStaminaCost = config.Bind("2. Crude Wings", "FlapStaminaCost", 10f, new ConfigDescription("Stamina consumed per flap.", (AcceptableValueBase)(object)val5, new object[1] { val })); CrudeCraftingStation = config.Bind("2. Crude Wings", "CraftingStation", "piece_workbench", new ConfigDescription("Prefab name of the crafting station.", (AcceptableValueBase)null, new object[1] { val })); CrudeMinStationLevel = config.Bind("2. Crude Wings", "MinStationLevel", 1, new ConfigDescription("Minimum station level required.", (AcceptableValueBase)(object)val6, new object[1] { val })); CrudeCraftingRequirements = config.Bind("2. Crude Wings", "CraftingRequirements", "Feathers:10,LeatherScraps:10", new ConfigDescription("Required items. Format: ItemName:Amount,ItemName:Amount", (AcceptableValueBase)null, new object[1] { val })); TrollFlightCeiling = config.Bind("3. Troll Wings", "FlightCeiling", 135f, new ConfigDescription("Flight ceiling limit above ground.", (AcceptableValueBase)(object)val2, new object[1] { val })); TrollGlideSpeed = config.Bind("3. Troll Wings", "GlideSpeed", 15f, new ConfigDescription("Horizontal glide speed.", (AcceptableValueBase)(object)val3, new object[1] { val })); TrollFlapForce = config.Bind("3. Troll Wings", "FlapForce", 18f, new ConfigDescription("Upward lift force when flapping.", (AcceptableValueBase)(object)val4, new object[1] { val })); TrollFlapStaminaCost = config.Bind("3. Troll Wings", "FlapStaminaCost", 8f, new ConfigDescription("Stamina consumed per flap.", (AcceptableValueBase)(object)val5, new object[1] { val })); TrollCraftingStation = config.Bind("3. Troll Wings", "CraftingStation", "piece_workbench", new ConfigDescription("Prefab name of the crafting station.", (AcceptableValueBase)null, new object[1] { val })); TrollMinStationLevel = config.Bind("3. Troll Wings", "MinStationLevel", 2, new ConfigDescription("Minimum station level required.", (AcceptableValueBase)(object)val6, new object[1] { val })); TrollCraftingRequirements = config.Bind("3. Troll Wings", "CraftingRequirements", "TrollHide:5,Feathers:15", new ConfigDescription("Required items.", (AcceptableValueBase)null, new object[1] { val })); LoxFlightCeiling = config.Bind("4. Lox Wings", "FlightCeiling", 160f, new ConfigDescription("Flight ceiling limit above ground.", (AcceptableValueBase)(object)val2, new object[1] { val })); LoxGlideSpeed = config.Bind("4. Lox Wings", "GlideSpeed", 20f, new ConfigDescription("Horizontal glide speed.", (AcceptableValueBase)(object)val3, new object[1] { val })); LoxFlapForce = config.Bind("4. Lox Wings", "FlapForce", 22f, new ConfigDescription("Upward lift force when flapping.", (AcceptableValueBase)(object)val4, new object[1] { val })); LoxFlapStaminaCost = config.Bind("4. Lox Wings", "FlapStaminaCost", 6f, new ConfigDescription("Stamina consumed per flap.", (AcceptableValueBase)(object)val5, new object[1] { val })); LoxCraftingStation = config.Bind("4. Lox Wings", "CraftingStation", "forge", new ConfigDescription("Prefab name of the crafting station.", (AcceptableValueBase)null, new object[1] { val })); LoxMinStationLevel = config.Bind("4. Lox Wings", "MinStationLevel", 1, new ConfigDescription("Minimum station level required.", (AcceptableValueBase)(object)val6, new object[1] { val })); LoxCraftingRequirements = config.Bind("4. Lox Wings", "CraftingRequirements", "LoxPelt:5,Silver:5", new ConfigDescription("Required items.", (AcceptableValueBase)null, new object[1] { val })); DragonFlightCeiling = config.Bind("5. Dragon Wings", "FlightCeiling", 1100f, new ConfigDescription("Flight ceiling limit above ground.", (AcceptableValueBase)(object)val2, new object[1] { val })); DragonGlideSpeed = config.Bind("5. Dragon Wings", "GlideSpeed", 30f, new ConfigDescription("Horizontal glide speed.", (AcceptableValueBase)(object)val3, new object[1] { val })); DragonFlapForce = config.Bind("5. Dragon Wings", "FlapForce", 28f, new ConfigDescription("Upward lift force when flapping.", (AcceptableValueBase)(object)val4, new object[1] { val })); DragonFlapStaminaCost = config.Bind("5. Dragon Wings", "FlapStaminaCost", 4f, new ConfigDescription("Stamina consumed per flap.", (AcceptableValueBase)(object)val5, new object[1] { val })); DragonCraftingStation = config.Bind("5. Dragon Wings", "CraftingStation", "piece_magetable", new ConfigDescription("Prefab name of the crafting station.", (AcceptableValueBase)null, new object[1] { val })); DragonMinStationLevel = config.Bind("5. Dragon Wings", "MinStationLevel", 1, new ConfigDescription("Minimum station level required.", (AcceptableValueBase)(object)val6, new object[1] { val })); DragonCraftingRequirements = config.Bind("5. Dragon Wings", "CraftingRequirements", "Feathers:20,Eitr:5", new ConfigDescription("Required items.", (AcceptableValueBase)null, new object[1] { val })); } } public static class WingsItem { public static void Init() { PrefabManager.OnVanillaPrefabsAvailable += CreateCustomWings; } private static void CreateCustomWings() { //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_004a: Unknown result type (might be due to invalid IL or missing references) //IL_0065: Expected O, but got Unknown //IL_0060: Unknown result type (might be due to invalid IL or missing references) //IL_0066: Expected O, but got Unknown //IL_0088: Unknown result type (might be due to invalid IL or missing references) //IL_008d: Unknown result type (might be due to invalid IL or missing references) //IL_0099: Unknown result type (might be due to invalid IL or missing references) //IL_00a5: Unknown result type (might be due to invalid IL or missing references) //IL_00b6: Unknown result type (might be due to invalid IL or missing references) //IL_00c7: Unknown result type (might be due to invalid IL or missing references) //IL_00e2: Expected O, but got Unknown //IL_00dd: Unknown result type (might be due to invalid IL or missing references) //IL_00e3: Expected O, but got Unknown //IL_0105: Unknown result type (might be due to invalid IL or missing references) //IL_010a: Unknown result type (might be due to invalid IL or missing references) //IL_0116: Unknown result type (might be due to invalid IL or missing references) //IL_0122: Unknown result type (might be due to invalid IL or missing references) //IL_0133: Unknown result type (might be due to invalid IL or missing references) //IL_0144: Unknown result type (might be due to invalid IL or missing references) //IL_015f: Expected O, but got Unknown //IL_015a: Unknown result type (might be due to invalid IL or missing references) //IL_0160: Expected O, but got Unknown //IL_0182: Unknown result type (might be due to invalid IL or missing references) //IL_0187: Unknown result type (might be due to invalid IL or missing references) //IL_0193: Unknown result type (might be due to invalid IL or missing references) //IL_019f: Unknown result type (might be due to invalid IL or missing references) //IL_01b0: Unknown result type (might be due to invalid IL or missing references) //IL_01c1: Unknown result type (might be due to invalid IL or missing references) //IL_01dc: Expected O, but got Unknown //IL_01d7: Unknown result type (might be due to invalid IL or missing references) //IL_01dd: Expected O, but got Unknown CustomItem val = new CustomItem("WingsOf_Crude", "CapeDeerHide", new ItemConfig { Name = "Wings of the Valkyrie (Crude)", Description = "Basic crafted wings. Low flight ceiling.", CraftingStation = ModConfig.CrudeCraftingStation.Value, MinStationLevel = ModConfig.CrudeMinStationLevel.Value, Requirements = ParseRequirements(ModConfig.CrudeCraftingRequirements.Value) }); StripCapeVisuals(val.ItemPrefab); ItemManager.Instance.AddItem(val); CustomItem val2 = new CustomItem("WingsOf_Troll", "CapeTrollHide", new ItemConfig { Name = "Wings of the Valkyrie (Troll)", Description = "Improved glide and lift.", CraftingStation = ModConfig.TrollCraftingStation.Value, MinStationLevel = ModConfig.TrollMinStationLevel.Value, Requirements = ParseRequirements(ModConfig.TrollCraftingRequirements.Value) }); StripCapeVisuals(val2.ItemPrefab); ItemManager.Instance.AddItem(val2); CustomItem val3 = new CustomItem("WingsOf_Lox", "CapeLox", new ItemConfig { Name = "Wings of the Valkyrie (Lox)", Description = "High glide speed, strong lift.", CraftingStation = ModConfig.LoxCraftingStation.Value, MinStationLevel = ModConfig.LoxMinStationLevel.Value, Requirements = ParseRequirements(ModConfig.LoxCraftingRequirements.Value) }); StripCapeVisuals(val3.ItemPrefab); ItemManager.Instance.AddItem(val3); CustomItem val4 = new CustomItem("WingsOf_Dragon", "CapeFeather", new ItemConfig { Name = "Wings of the Valkyrie (Dragon)", Description = "Unlimited sky ceiling and excellent speed.", CraftingStation = ModConfig.DragonCraftingStation.Value, MinStationLevel = ModConfig.DragonMinStationLevel.Value, Requirements = ParseRequirements(ModConfig.DragonCraftingRequirements.Value) }); StripCapeVisuals(val4.ItemPrefab); ItemManager.Instance.AddItem(val4); PrefabManager.OnVanillaPrefabsAvailable -= CreateCustomWings; } private static void StripCapeVisuals(GameObject prefab) { if ((Object)(object)prefab == (Object)null) { return; } ItemDrop component = prefab.GetComponent(); if ((Object)(object)component != (Object)null && component.m_itemData != null && component.m_itemData.m_shared != null) { component.m_itemData.m_shared.m_armorMaterial = null; component.m_itemData.m_shared.m_equipStatusEffect = null; } Component[] componentsInChildren = prefab.GetComponentsInChildren(true); Component[] array = componentsInChildren; foreach (Component val in array) { if ((Object)(object)val != (Object)null && ((object)val).GetType().Name == "Cloth") { Object.DestroyImmediate((Object)(object)val); } } SkinnedMeshRenderer[] componentsInChildren2 = prefab.GetComponentsInChildren(true); SkinnedMeshRenderer[] array2 = componentsInChildren2; foreach (SkinnedMeshRenderer val2 in array2) { Object.DestroyImmediate((Object)(object)val2); } MeshRenderer[] componentsInChildren3 = prefab.GetComponentsInChildren(true); MeshRenderer[] array3 = componentsInChildren3; foreach (MeshRenderer val3 in array3) { Object.DestroyImmediate((Object)(object)val3); } } private static RequirementConfig[] ParseRequirements(string requirementsString) { if (string.IsNullOrWhiteSpace(requirementsString)) { return (RequirementConfig[])(object)new RequirementConfig[0]; } return (from r in ((IEnumerable)requirementsString.Split(new char[1] { ',' })).Select((Func)delegate(string req) { //IL_002b: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_003f: Unknown result type (might be due to invalid IL or missing references) //IL_0048: Expected O, but got Unknown string[] array = req.Split(new char[1] { ':' }); int result; return (array.Length == 2 && int.TryParse(array[1], out result)) ? new RequirementConfig { Item = array[0].Trim(), Amount = result } : ((RequirementConfig)null); }) where r != null select r).ToArray(); } public static string GetEquippedWingsName(Player player) { if ((Object)(object)player == (Object)null) { return null; } Inventory inventory = ((Humanoid)player).GetInventory(); if (inventory == null) { return null; } List equippedItems = inventory.GetEquippedItems(); if (equippedItems == null) { return null; } ItemData val = ((IEnumerable)equippedItems).FirstOrDefault((Func)((ItemData i) => (int)i.m_shared.m_itemType == 17)); if (val != null && (Object)(object)val.m_dropPrefab != (Object)null) { string name = ((Object)val.m_dropPrefab).name; switch (name) { default: if (!(name == "WingsOf_Dragon")) { break; } goto case "WingsOf_Crude"; case "WingsOf_Crude": case "WingsOf_Troll": case "WingsOf_Lox": return name; } } return null; } public static bool IsWingsEquipped(Player player) { return GetEquippedWingsName(player) != null; } } [BepInPlugin("wubarrk.wingsofthevalkyrie", "Wings of the Valkyrie", "1.0.0")] [BepInDependency(/*Could not decode attribute arguments.*/)] [NetworkCompatibility(/*Could not decode attribute arguments.*/)] public class WingsoftheValkyriePlugin : BaseUnityPlugin { public const string PluginGUID = "wubarrk.wingsofthevalkyrie"; public const string PluginName = "Wings of the Valkyrie"; public const string PluginVersion = "1.0.0"; private readonly Harmony harmony = new Harmony("wubarrk.wingsofthevalkyrie"); private void Awake() { Logger.LogInfo((object)"Wings of the Valkyrie initializing..."); ModConfig.Init(((BaseUnityPlugin)this).Config); WingsItem.Init(); harmony.PatchAll(); Logger.LogInfo((object)"Wings of the Valkyrie has loaded!"); } } } namespace WingsoftheValkyrie.VFX { public class RuneWingVFX : MonoBehaviour { private Player _player; private ParticleSystem _leftWing; private ParticleSystem _rightWing; private Transform _leftRoot; private Transform _rightRoot; private bool _isGliding = false; private float _flapTimer = 0f; private void Awake() { _player = ((Component)this).GetComponent(); } public void EnsureEmitters() { //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_004c: Unknown result type (might be due to invalid IL or missing references) //IL_0058: Unknown result type (might be due to invalid IL or missing references) //IL_006a: Unknown result type (might be due to invalid IL or missing references) //IL_00bd: Unknown result type (might be due to invalid IL or missing references) //IL_00dd: Unknown result type (might be due to invalid IL or missing references) //IL_0102: Unknown result type (might be due to invalid IL or missing references) //IL_0155: Unknown result type (might be due to invalid IL or missing references) //IL_0175: Unknown result type (might be due to invalid IL or missing references) if (!((Object)(object)_leftWing != (Object)null) || !((Object)(object)_rightWing != (Object)null)) { Transform transform = ((Component)_player).transform; Texture2D runeTex = ValkyrieRuneTextureGenerator.GenerateSoftTrail(Color.white); Material orCreateRuneMaterial = ValkyrieRuneVFX_Helper.GetOrCreateRuneMaterial(runeTex, Color.white); Texture2D runeTex2 = ValkyrieRuneTextureGenerator.GenerateRuneAtlas(Color.white); Material orCreateRuneMaterial2 = ValkyrieRuneVFX_Helper.GetOrCreateRuneMaterial(runeTex2, Color.white); _leftRoot = new GameObject("RuneWing_Left").transform; ((Component)_leftRoot).gameObject.layer = ((Component)_player).gameObject.layer; _leftRoot.SetParent(transform, false); _leftRoot.localPosition = new Vector3(-0.3f, 1.2f, -0.3f); _leftRoot.localRotation = Quaternion.Euler(0f, -20f, 0f); BuildWingStructure(((Component)_leftRoot).gameObject, orCreateRuneMaterial, isRight: false); _rightRoot = new GameObject("RuneWing_Right").transform; ((Component)_rightRoot).gameObject.layer = ((Component)_player).gameObject.layer; _rightRoot.SetParent(transform, false); _rightRoot.localPosition = new Vector3(0.3f, 1.2f, -0.3f); _rightRoot.localRotation = Quaternion.Euler(0f, 20f, 0f); BuildWingStructure(((Component)_rightRoot).gameObject, orCreateRuneMaterial, isRight: true); _leftWing = CreateParticleSystem(((Component)_leftRoot).gameObject, orCreateRuneMaterial2); _rightWing = CreateParticleSystem(((Component)_rightRoot).gameObject, orCreateRuneMaterial2); } } private void BuildWingStructure(GameObject root, Material mat, bool isRight) { //IL_0160: Unknown result type (might be due to invalid IL or missing references) //IL_0161: Unknown result type (might be due to invalid IL or missing references) //IL_0162: Unknown result type (might be due to invalid IL or missing references) //IL_016d: Unknown result type (might be due to invalid IL or missing references) //IL_016e: Unknown result type (might be due to invalid IL or missing references) //IL_0170: Unknown result type (might be due to invalid IL or missing references) //IL_017c: Unknown result type (might be due to invalid IL or missing references) //IL_017d: Unknown result type (might be due to invalid IL or missing references) //IL_017f: Unknown result type (might be due to invalid IL or missing references) //IL_018b: Unknown result type (might be due to invalid IL or missing references) //IL_018c: Unknown result type (might be due to invalid IL or missing references) //IL_018e: Unknown result type (might be due to invalid IL or missing references) //IL_019a: Unknown result type (might be due to invalid IL or missing references) //IL_019b: Unknown result type (might be due to invalid IL or missing references) //IL_019d: Unknown result type (might be due to invalid IL or missing references) //IL_01c8: Unknown result type (might be due to invalid IL or missing references) //IL_01c9: Unknown result type (might be due to invalid IL or missing references) //IL_01d0: Unknown result type (might be due to invalid IL or missing references) //IL_01d2: Unknown result type (might be due to invalid IL or missing references) //IL_01d9: Unknown result type (might be due to invalid IL or missing references) //IL_01db: Unknown result type (might be due to invalid IL or missing references) //IL_024f: Unknown result type (might be due to invalid IL or missing references) //IL_0250: Unknown result type (might be due to invalid IL or missing references) //IL_0257: Unknown result type (might be due to invalid IL or missing references) //IL_0259: Unknown result type (might be due to invalid IL or missing references) //IL_026e: Unknown result type (might be due to invalid IL or missing references) //IL_0275: Expected O, but got Unknown //IL_0281: Unknown result type (might be due to invalid IL or missing references) //IL_0282: Unknown result type (might be due to invalid IL or missing references) //IL_028d: Unknown result type (might be due to invalid IL or missing references) //IL_0292: Unknown result type (might be due to invalid IL or missing references) //IL_029a: Unknown result type (might be due to invalid IL or missing references) //IL_029b: Unknown result type (might be due to invalid IL or missing references) //IL_02a6: Unknown result type (might be due to invalid IL or missing references) //IL_02ab: Unknown result type (might be due to invalid IL or missing references) //IL_02b6: Unknown result type (might be due to invalid IL or missing references) //IL_02bb: Unknown result type (might be due to invalid IL or missing references) //IL_02c3: Unknown result type (might be due to invalid IL or missing references) //IL_02c5: Unknown result type (might be due to invalid IL or missing references) //IL_02d0: Unknown result type (might be due to invalid IL or missing references) //IL_02d5: Unknown result type (might be due to invalid IL or missing references) //IL_02e0: Unknown result type (might be due to invalid IL or missing references) //IL_02e5: Unknown result type (might be due to invalid IL or missing references) //IL_02ed: Unknown result type (might be due to invalid IL or missing references) //IL_02ef: Unknown result type (might be due to invalid IL or missing references) //IL_02fb: Unknown result type (might be due to invalid IL or missing references) //IL_0300: Unknown result type (might be due to invalid IL or missing references) //IL_030c: Unknown result type (might be due to invalid IL or missing references) //IL_0311: Unknown result type (might be due to invalid IL or missing references) //IL_031a: Unknown result type (might be due to invalid IL or missing references) //IL_031c: Unknown result type (might be due to invalid IL or missing references) //IL_0328: Unknown result type (might be due to invalid IL or missing references) //IL_032d: Unknown result type (might be due to invalid IL or missing references) //IL_0339: Unknown result type (might be due to invalid IL or missing references) //IL_033e: Unknown result type (might be due to invalid IL or missing references) //IL_0347: Unknown result type (might be due to invalid IL or missing references) //IL_0349: Unknown result type (might be due to invalid IL or missing references) //IL_0352: Unknown result type (might be due to invalid IL or missing references) //IL_0354: Unknown result type (might be due to invalid IL or missing references) //IL_0379: Unknown result type (might be due to invalid IL or missing references) //IL_0383: Unknown result type (might be due to invalid IL or missing references) //IL_0388: Unknown result type (might be due to invalid IL or missing references) //IL_039a: Unknown result type (might be due to invalid IL or missing references) //IL_03a4: Unknown result type (might be due to invalid IL or missing references) //IL_03a9: Unknown result type (might be due to invalid IL or missing references) //IL_03bb: Unknown result type (might be due to invalid IL or missing references) //IL_03c5: Unknown result type (might be due to invalid IL or missing references) //IL_03ca: Unknown result type (might be due to invalid IL or missing references) //IL_03dc: Unknown result type (might be due to invalid IL or missing references) //IL_03e6: Unknown result type (might be due to invalid IL or missing references) //IL_03eb: Unknown result type (might be due to invalid IL or missing references) //IL_03fd: Unknown result type (might be due to invalid IL or missing references) //IL_0407: Unknown result type (might be due to invalid IL or missing references) //IL_040c: Unknown result type (might be due to invalid IL or missing references) //IL_041e: Unknown result type (might be due to invalid IL or missing references) //IL_0428: Unknown result type (might be due to invalid IL or missing references) //IL_042d: Unknown result type (might be due to invalid IL or missing references) //IL_043f: Unknown result type (might be due to invalid IL or missing references) //IL_0449: Unknown result type (might be due to invalid IL or missing references) //IL_044e: Unknown result type (might be due to invalid IL or missing references) //IL_0460: Unknown result type (might be due to invalid IL or missing references) //IL_046a: Unknown result type (might be due to invalid IL or missing references) //IL_046f: Unknown result type (might be due to invalid IL or missing references) //IL_0481: Unknown result type (might be due to invalid IL or missing references) //IL_048b: Unknown result type (might be due to invalid IL or missing references) //IL_0490: Unknown result type (might be due to invalid IL or missing references) //IL_04a3: Unknown result type (might be due to invalid IL or missing references) //IL_04ad: Unknown result type (might be due to invalid IL or missing references) //IL_04b2: Unknown result type (might be due to invalid IL or missing references) //IL_04c5: Unknown result type (might be due to invalid IL or missing references) //IL_04cf: Unknown result type (might be due to invalid IL or missing references) //IL_04d4: Unknown result type (might be due to invalid IL or missing references) //IL_04e7: Unknown result type (might be due to invalid IL or missing references) //IL_04f1: Unknown result type (might be due to invalid IL or missing references) //IL_04f6: Unknown result type (might be due to invalid IL or missing references) //IL_0509: Unknown result type (might be due to invalid IL or missing references) //IL_0513: Unknown result type (might be due to invalid IL or missing references) //IL_0518: Unknown result type (might be due to invalid IL or missing references) //IL_052b: Unknown result type (might be due to invalid IL or missing references) //IL_0535: Unknown result type (might be due to invalid IL or missing references) //IL_053a: Unknown result type (might be due to invalid IL or missing references) //IL_054d: Unknown result type (might be due to invalid IL or missing references) //IL_0557: Unknown result type (might be due to invalid IL or missing references) //IL_055c: Unknown result type (might be due to invalid IL or missing references) //IL_056f: Unknown result type (might be due to invalid IL or missing references) //IL_0579: Unknown result type (might be due to invalid IL or missing references) //IL_057e: Unknown result type (might be due to invalid IL or missing references) //IL_063b: Unknown result type (might be due to invalid IL or missing references) //IL_0642: Expected O, but got Unknown //IL_0672: Unknown result type (might be due to invalid IL or missing references) //IL_0680: Unknown result type (might be due to invalid IL or missing references) float num = (isRight ? 1f : (-1f)); Vector3 val = default(Vector3); ((Vector3)(ref val))..ctor(0f, 0f, 0f); Vector3 p = default(Vector3); ((Vector3)(ref p))..ctor(0.8f * num, 0.2f, 0.4f); Vector3 val2 = default(Vector3); ((Vector3)(ref val2))..ctor(2.2f * num, 0.5f, 0.2f); Vector3 val3 = default(Vector3); ((Vector3)(ref val3))..ctor(2.4f * num, 0.7f, 0.3f); Vector3 val4 = default(Vector3); ((Vector3)(ref val4))..ctor(2.5f * num, 0.9f, 0.4f); Vector3 p2 = default(Vector3); ((Vector3)(ref p2))..ctor(3.8f * num, 0.4f, -0.2f); Vector3 val5 = default(Vector3); ((Vector3)(ref val5))..ctor(5f * num, 0.2f, -1f); Vector3 p3 = default(Vector3); ((Vector3)(ref p3))..ctor(3.5f * num, 0.1f, -0.6f); Vector3 val6 = default(Vector3); ((Vector3)(ref val6))..ctor(4.6f * num, -0.2f, -1.6f); Vector3 p4 = default(Vector3); ((Vector3)(ref p4))..ctor(3f * num, -0.2f, -1f); Vector3 val7 = default(Vector3); ((Vector3)(ref val7))..ctor(3.8f * num, -0.5f, -2.2f); Vector3 p5 = default(Vector3); ((Vector3)(ref p5))..ctor(2.3f * num, -0.4f, -1.2f); Vector3 val8 = default(Vector3); ((Vector3)(ref val8))..ctor(2.6f * num, -0.7f, -2.6f); Vector3 val9 = default(Vector3); ((Vector3)(ref val9))..ctor(0.2f * num, -0.5f, -0.5f); Vector3[] bezierCurve = GetBezierCurve(val, p, val2, 10); Vector3[] bezierCurve2 = GetBezierCurve(val2, p2, val5, 10); Vector3[] bezierCurve3 = GetBezierCurve(val2, p3, val6, 10); Vector3[] bezierCurve4 = GetBezierCurve(val2, p4, val7, 10); Vector3[] bezierCurve5 = GetBezierCurve(val2, p5, val8, 10); AddBoneLine(root, mat, bezierCurve, 0.25f, 0.15f); AddBoneLine(root, mat, (Vector3[])(object)new Vector3[3] { val2, val3, val4 }, 0.08f, 0.01f); AddBoneLine(root, mat, bezierCurve2, 0.12f, 0.01f); AddBoneLine(root, mat, bezierCurve3, 0.12f, 0.01f); AddBoneLine(root, mat, bezierCurve4, 0.12f, 0.01f); AddBoneLine(root, mat, bezierCurve5, 0.12f, 0.01f); AddBoneLine(root, mat, (Vector3[])(object)new Vector3[2] { val, val9 }, 0.1f, 0.05f); Mesh val10 = new Mesh(); val10.vertices = (Vector3[])(object)new Vector3[23] { val, bezierCurve[5], val2, bezierCurve2[2], bezierCurve2[6], val5, bezierCurve3[2], bezierCurve3[6], val6, bezierCurve4[2], bezierCurve4[6], val7, bezierCurve5[2], bezierCurve5[6], val8, val9, default(Vector3), default(Vector3), default(Vector3), default(Vector3), default(Vector3), default(Vector3), default(Vector3) }; val10.uv = (Vector2[])(object)new Vector2[23] { new Vector2(0f, 1f) * 3f, new Vector2(0.2f, 0.8f) * 3f, new Vector2(0.3f, 1f) * 3f, new Vector2(0.5f, 0.9f) * 3f, new Vector2(0.7f, 0.8f) * 3f, new Vector2(1f, 0.8f) * 3f, new Vector2(0.5f, 0.6f) * 3f, new Vector2(0.7f, 0.5f) * 3f, new Vector2(1f, 0.5f) * 3f, new Vector2(0.4f, 0.4f) * 3f, new Vector2(0.6f, 0.3f) * 3f, new Vector2(0.9f, 0.2f) * 3f, new Vector2(0.3f, 0.2f) * 3f, new Vector2(0.4f, 0.1f) * 3f, new Vector2(0.6f, 0f) * 3f, new Vector2(0f, 0f) * 3f, default(Vector2), default(Vector2), default(Vector2), default(Vector2), default(Vector2), default(Vector2), default(Vector2) }; int[] array = new int[63] { 0, 1, 2, 2, 6, 3, 3, 6, 7, 3, 7, 4, 4, 7, 8, 4, 8, 5, 2, 9, 6, 6, 9, 10, 6, 10, 7, 7, 10, 11, 7, 11, 8, 2, 12, 9, 9, 12, 13, 9, 13, 10, 10, 13, 14, 10, 14, 11, 2, 1, 12, 1, 0, 12, 0, 15, 12, 15, 13, 12, 15, 14, 13 }; int[] array2 = new int[array.Length * 2]; for (int i = 0; i < array.Length; i += 3) { array2[i] = array[i]; array2[i + 1] = array[i + 1]; array2[i + 2] = array[i + 2]; array2[array.Length + i] = array[i]; array2[array.Length + i + 1] = array[i + 2]; array2[array.Length + i + 2] = array[i + 1]; } val10.triangles = array2; val10.RecalculateNormals(); GameObject val11 = new GameObject("Membrane"); val11.transform.SetParent(root.transform, false); MeshFilter val12 = val11.AddComponent(); val12.mesh = val10; MeshRenderer val13 = val11.AddComponent(); Texture2D runeTex = ValkyrieRuneTextureGenerator.GenerateRuneAtlas(Color.white); Material orCreateRuneMaterial = ValkyrieRuneVFX_Helper.GetOrCreateRuneMaterial(runeTex, Color.white); ((Renderer)val13).material = orCreateRuneMaterial; ((Renderer)val13).enabled = false; } private Vector3[] GetBezierCurve(Vector3 p0, Vector3 p1, Vector3 p2, int segments) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_0047: Unknown result type (might be due to invalid IL or missing references) //IL_004c: Unknown result type (might be due to invalid IL or missing references) Vector3[] array = (Vector3[])(object)new Vector3[segments + 1]; for (int i = 0; i <= segments; i++) { float num = (float)i / (float)segments; float num2 = 1f - num; array[i] = num2 * num2 * p0 + 2f * num2 * num * p1 + num * num * p2; } return array; } private void AddBoneLine(GameObject root, Material mat, Vector3[] points, float startWidth, float endWidth) { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Expected O, but got Unknown GameObject val = new GameObject("BoneLine"); val.transform.SetParent(root.transform, false); LineRenderer val2 = val.AddComponent(); val2.useWorldSpace = false; val2.positionCount = points.Length; val2.SetPositions(points); val2.startWidth = startWidth; val2.endWidth = endWidth; ((Renderer)val2).material = mat; ((Renderer)val2).enabled = false; } private ParticleSystem CreateParticleSystem(GameObject go, Material mat) { //IL_0009: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_003f: Unknown result type (might be due to invalid IL or missing references) //IL_0056: Unknown result type (might be due to invalid IL or missing references) //IL_0074: Unknown result type (might be due to invalid IL or missing references) //IL_0079: Unknown result type (might be due to invalid IL or missing references) //IL_008a: Unknown result type (might be due to invalid IL or missing references) //IL_0096: Unknown result type (might be due to invalid IL or missing references) //IL_009b: Unknown result type (might be due to invalid IL or missing references) //IL_00bd: Unknown result type (might be due to invalid IL or missing references) //IL_00c2: Unknown result type (might be due to invalid IL or missing references) //IL_00f4: Unknown result type (might be due to invalid IL or missing references) ParticleSystem val = go.AddComponent(); MainModule main = val.main; ((MainModule)(ref main)).loop = true; ((MainModule)(ref main)).playOnAwake = true; ((MainModule)(ref main)).startSpeed = MinMaxCurve.op_Implicit(2f); ((MainModule)(ref main)).startLifetime = new MinMaxCurve(0.5f, 1.2f); ((MainModule)(ref main)).startSize = new MinMaxCurve(0.08f, 0.18f); ((MainModule)(ref main)).simulationSpace = (ParticleSystemSimulationSpace)1; ((MainModule)(ref main)).scalingMode = (ParticleSystemScalingMode)1; EmissionModule emission = val.emission; ((EmissionModule)(ref emission)).enabled = true; ((EmissionModule)(ref emission)).rateOverTime = MinMaxCurve.op_Implicit(80f); ShapeModule shape = val.shape; ((ShapeModule)(ref shape)).enabled = true; ((ShapeModule)(ref shape)).shapeType = (ParticleSystemShapeType)12; ((ShapeModule)(ref shape)).radius = 3f; TextureSheetAnimationModule textureSheetAnimation = val.textureSheetAnimation; ((TextureSheetAnimationModule)(ref textureSheetAnimation)).enabled = true; ((TextureSheetAnimationModule)(ref textureSheetAnimation)).numTilesX = 4; ((TextureSheetAnimationModule)(ref textureSheetAnimation)).numTilesY = 4; ((TextureSheetAnimationModule)(ref textureSheetAnimation)).animation = (ParticleSystemAnimationType)0; ((TextureSheetAnimationModule)(ref textureSheetAnimation)).startFrame = new MinMaxCurve(0f, 15f); ((TextureSheetAnimationModule)(ref textureSheetAnimation)).timeMode = (ParticleSystemAnimationTimeMode)0; ParticleSystemRenderer component = go.GetComponent(); component.renderMode = (ParticleSystemRenderMode)0; if ((Object)(object)mat != (Object)null) { ((Renderer)component).material = mat; } val.Stop(true, (ParticleSystemStopBehavior)0); return val; } public void SetTierColor(Color c) { //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_0037: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_0049: Unknown result type (might be due to invalid IL or missing references) //IL_004e: Unknown result type (might be due to invalid IL or missing references) //IL_0051: Unknown result type (might be due to invalid IL or missing references) //IL_0052: Unknown result type (might be due to invalid IL or missing references) //IL_0078: Unknown result type (might be due to invalid IL or missing references) //IL_0081: Unknown result type (might be due to invalid IL or missing references) //IL_0087: Unknown result type (might be due to invalid IL or missing references) //IL_008d: Unknown result type (might be due to invalid IL or missing references) //IL_0098: Unknown result type (might be due to invalid IL or missing references) //IL_00ce: Unknown result type (might be due to invalid IL or missing references) //IL_00d7: Unknown result type (might be due to invalid IL or missing references) //IL_00dd: Unknown result type (might be due to invalid IL or missing references) //IL_00e3: Unknown result type (might be due to invalid IL or missing references) //IL_00ee: Unknown result type (might be due to invalid IL or missing references) //IL_0149: Unknown result type (might be due to invalid IL or missing references) //IL_014f: Unknown result type (might be due to invalid IL or missing references) //IL_0155: Unknown result type (might be due to invalid IL or missing references) //IL_0160: Unknown result type (might be due to invalid IL or missing references) //IL_018e: Unknown result type (might be due to invalid IL or missing references) //IL_0194: Unknown result type (might be due to invalid IL or missing references) //IL_019a: Unknown result type (might be due to invalid IL or missing references) //IL_01a5: Unknown result type (might be due to invalid IL or missing references) //IL_01d3: Unknown result type (might be due to invalid IL or missing references) //IL_01d9: Unknown result type (might be due to invalid IL or missing references) //IL_01df: Unknown result type (might be due to invalid IL or missing references) //IL_01ea: Unknown result type (might be due to invalid IL or missing references) //IL_0248: Unknown result type (might be due to invalid IL or missing references) //IL_024e: Unknown result type (might be due to invalid IL or missing references) //IL_0254: Unknown result type (might be due to invalid IL or missing references) //IL_025f: Unknown result type (might be due to invalid IL or missing references) //IL_028d: Unknown result type (might be due to invalid IL or missing references) //IL_0293: Unknown result type (might be due to invalid IL or missing references) //IL_0299: Unknown result type (might be due to invalid IL or missing references) //IL_02a4: Unknown result type (might be due to invalid IL or missing references) //IL_02d2: Unknown result type (might be due to invalid IL or missing references) //IL_02d8: Unknown result type (might be due to invalid IL or missing references) //IL_02de: Unknown result type (might be due to invalid IL or missing references) //IL_02e9: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)_leftWing == (Object)null || (Object)(object)_rightWing == (Object)null) { EnsureEmitters(); } MainModule main = _leftWing.main; ((MainModule)(ref main)).startColor = MinMaxGradient.op_Implicit(c); MainModule main2 = _rightWing.main; ((MainModule)(ref main2)).startColor = MinMaxGradient.op_Implicit(c); LineRenderer[] componentsInChildren = ((Component)_leftRoot).GetComponentsInChildren(); foreach (LineRenderer val in componentsInChildren) { val.startColor = c; val.endColor = new Color(c.r, c.g, c.b, 0.2f); } LineRenderer[] componentsInChildren2 = ((Component)_rightRoot).GetComponentsInChildren(); foreach (LineRenderer val2 in componentsInChildren2) { val2.startColor = c; val2.endColor = new Color(c.r, c.g, c.b, 0.2f); } MeshRenderer[] componentsInChildren3 = ((Component)_leftRoot).GetComponentsInChildren(); foreach (MeshRenderer val3 in componentsInChildren3) { if (((Renderer)val3).material.HasProperty("_Color")) { ((Renderer)val3).material.SetColor("_Color", new Color(c.r, c.g, c.b, 0.15f)); } if (((Renderer)val3).material.HasProperty("_TintColor")) { ((Renderer)val3).material.SetColor("_TintColor", new Color(c.r, c.g, c.b, 0.15f)); } if (((Renderer)val3).material.HasProperty("_EmissionColor")) { ((Renderer)val3).material.SetColor("_EmissionColor", new Color(c.r, c.g, c.b, 0.05f)); } } MeshRenderer[] componentsInChildren4 = ((Component)_rightRoot).GetComponentsInChildren(); foreach (MeshRenderer val4 in componentsInChildren4) { if (((Renderer)val4).material.HasProperty("_Color")) { ((Renderer)val4).material.SetColor("_Color", new Color(c.r, c.g, c.b, 0.15f)); } if (((Renderer)val4).material.HasProperty("_TintColor")) { ((Renderer)val4).material.SetColor("_TintColor", new Color(c.r, c.g, c.b, 0.15f)); } if (((Renderer)val4).material.HasProperty("_EmissionColor")) { ((Renderer)val4).material.SetColor("_EmissionColor", new Color(c.r, c.g, c.b, 0.05f)); } } } public void SetGlidingState(bool gliding) { if (_isGliding == gliding) { return; } _isGliding = gliding; if ((Object)(object)_leftWing == (Object)null || (Object)(object)_rightWing == (Object)null) { EnsureEmitters(); } if (_isGliding) { if (!_leftWing.isPlaying) { _leftWing.Play(); } if (!_rightWing.isPlaying) { _rightWing.Play(); } LineRenderer[] componentsInChildren = ((Component)_leftRoot).GetComponentsInChildren(); foreach (LineRenderer val in componentsInChildren) { ((Renderer)val).enabled = true; } LineRenderer[] componentsInChildren2 = ((Component)_rightRoot).GetComponentsInChildren(); foreach (LineRenderer val2 in componentsInChildren2) { ((Renderer)val2).enabled = true; } MeshRenderer[] componentsInChildren3 = ((Component)_leftRoot).GetComponentsInChildren(); foreach (MeshRenderer val3 in componentsInChildren3) { ((Renderer)val3).enabled = true; } MeshRenderer[] componentsInChildren4 = ((Component)_rightRoot).GetComponentsInChildren(); foreach (MeshRenderer val4 in componentsInChildren4) { ((Renderer)val4).enabled = true; } } else { _leftWing.Stop(true, (ParticleSystemStopBehavior)1); _rightWing.Stop(true, (ParticleSystemStopBehavior)1); LineRenderer[] componentsInChildren5 = ((Component)_leftRoot).GetComponentsInChildren(); foreach (LineRenderer val5 in componentsInChildren5) { ((Renderer)val5).enabled = false; } LineRenderer[] componentsInChildren6 = ((Component)_rightRoot).GetComponentsInChildren(); foreach (LineRenderer val6 in componentsInChildren6) { ((Renderer)val6).enabled = false; } MeshRenderer[] componentsInChildren7 = ((Component)_leftRoot).GetComponentsInChildren(); foreach (MeshRenderer val7 in componentsInChildren7) { ((Renderer)val7).enabled = false; } MeshRenderer[] componentsInChildren8 = ((Component)_rightRoot).GetComponentsInChildren(); foreach (MeshRenderer val8 in componentsInChildren8) { ((Renderer)val8).enabled = false; } } } public void TriggerFlap() { if ((Object)(object)_leftWing == (Object)null || (Object)(object)_rightWing == (Object)null) { EnsureEmitters(); } _flapTimer = 0.4f; if (!_isGliding) { _leftWing.Emit(15); _rightWing.Emit(15); } } private void Update() { //IL_00c0: Unknown result type (might be due to invalid IL or missing references) //IL_00d4: Unknown result type (might be due to invalid IL or missing references) //IL_00e4: Unknown result type (might be due to invalid IL or missing references) //IL_00fb: Unknown result type (might be due to invalid IL or missing references) //IL_010f: Unknown result type (might be due to invalid IL or missing references) //IL_011f: Unknown result type (might be due to invalid IL or missing references) //IL_0088: Unknown result type (might be due to invalid IL or missing references) //IL_00a5: Unknown result type (might be due to invalid IL or missing references) if (!((Object)(object)_leftRoot == (Object)null) && !((Object)(object)_rightRoot == (Object)null)) { if (_flapTimer > 0f) { _flapTimer -= Time.deltaTime; float num = 1f - _flapTimer / 0.4f; float num2 = Mathf.Sin(num * (float)Math.PI * 2f) * 45f; _leftRoot.localRotation = Quaternion.Euler(0f, -20f, num2); _rightRoot.localRotation = Quaternion.Euler(0f, 20f, 0f - num2); } else { _leftRoot.localRotation = Quaternion.Lerp(_leftRoot.localRotation, Quaternion.Euler(0f, -20f, 0f), Time.deltaTime * 5f); _rightRoot.localRotation = Quaternion.Lerp(_rightRoot.localRotation, Quaternion.Euler(0f, 20f, 0f), Time.deltaTime * 5f); } } } } public static class ValkyrieRuneTextureGenerator { private const int Size = 128; public unsafe static Texture2D GenerateRune(Color color) { //IL_0019: Unknown result type (might be due to invalid IL or missing references) int num = Mathf.Abs(((object)(*(Color*)(&color))/*cast due to .constrained prefix*/).GetHashCode()); int runeIndex = num % 16; return GenerateRune(color, runeIndex); } public static Texture2D GenerateRuneAtlas(Color color) { //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Expected O, but got Unknown //IL_0055: Unknown result type (might be due to invalid IL or missing references) //IL_0056: Unknown result type (might be due to invalid IL or missing references) //IL_008d: Unknown result type (might be due to invalid IL or missing references) int num = 512; int num2 = 128; Texture2D val = new Texture2D(num, num, (TextureFormat)4, true); ((Texture)val).filterMode = (FilterMode)1; ((Texture)val).wrapMode = (TextureWrapMode)1; Color val2 = default(Color); ((Color)(ref val2))..ctor(0f, 0f, 0f, 0f); Color[] array = (Color[])(object)new Color[num * num]; for (int i = 0; i < array.Length; i++) { array[i] = val2; } val.SetPixels(array); for (int j = 0; j < 16; j++) { int num3 = j % 4; int num4 = 3 - j / 4; DrawRuneOntoAtlas(val, color, j, num3 * num2, num4 * num2, num2); } val.Apply(true); return val; } public static Texture2D GenerateSoftTrail(Color color) { //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0013: Expected O, but got Unknown //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_005d: Unknown result type (might be due to invalid IL or missing references) //IL_0099: Unknown result type (might be due to invalid IL or missing references) //IL_009f: Unknown result type (might be due to invalid IL or missing references) //IL_00a5: Unknown result type (might be due to invalid IL or missing references) //IL_00ab: Unknown result type (might be due to invalid IL or missing references) //IL_00bd: Unknown result type (might be due to invalid IL or missing references) Texture2D val = new Texture2D(128, 128, (TextureFormat)4, false); ((Texture)val).filterMode = (FilterMode)1; Vector2 val2 = default(Vector2); ((Vector2)(ref val2))..ctor(64f, 64f); float num = 64f; Vector2 val3 = default(Vector2); Color val4 = default(Color); for (int i = 0; i < 128; i++) { for (int j = 0; j < 128; j++) { ((Vector2)(ref val3))..ctor((float)j + 0.5f, (float)i + 0.5f); float num2 = Vector2.Distance(val3, val2) / num; float num3 = Mathf.Clamp01(1f - num2); num3 = Mathf.SmoothStep(0f, 1f, num3); num3 = Mathf.Pow(num3, 1.6f); ((Color)(ref val4))..ctor(color.r, color.g, color.b, color.a * num3); val.SetPixel(j, i, val4); } } val.Apply(true); return val; } public static Texture2D GenerateStreak(Color color) { //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0013: Expected O, but got Unknown //IL_004b: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_00af: Unknown result type (might be due to invalid IL or missing references) //IL_00b5: Unknown result type (might be due to invalid IL or missing references) //IL_00bb: Unknown result type (might be due to invalid IL or missing references) //IL_00c1: Unknown result type (might be due to invalid IL or missing references) //IL_00d3: Unknown result type (might be due to invalid IL or missing references) Texture2D val = new Texture2D(128, 128, (TextureFormat)4, false); ((Texture)val).filterMode = (FilterMode)1; Vector2 val2 = default(Vector2); ((Vector2)(ref val2))..ctor(64f, 64f); float num = 64f; Color val3 = default(Color); for (int i = 0; i < 128; i++) { for (int j = 0; j < 128; j++) { float num2 = Mathf.Abs((float)i + 0.5f - val2.y) / num; float num3 = Mathf.Abs((float)j + 0.5f - val2.x) / (num * 0.6f); float num4 = Mathf.Clamp01(1f - num3); float num5 = Mathf.SmoothStep(1f, 0f, num2); num4 *= Mathf.Pow(num5, 0.9f); ((Color)(ref val3))..ctor(color.r, color.g, color.b, color.a * num4); val.SetPixel(j, i, val3); } } val.Apply(true); return val; } public static Texture2D GenerateBlend(Color color) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Expected O, but got Unknown //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_0040: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Unknown result type (might be due to invalid IL or missing references) //IL_004b: Unknown result type (might be due to invalid IL or missing references) //IL_004d: Unknown result type (might be due to invalid IL or missing references) //IL_0054: Unknown result type (might be due to invalid IL or missing references) //IL_006b: Unknown result type (might be due to invalid IL or missing references) //IL_0071: Unknown result type (might be due to invalid IL or missing references) //IL_0077: Unknown result type (might be due to invalid IL or missing references) //IL_007d: Unknown result type (might be due to invalid IL or missing references) //IL_008f: Unknown result type (might be due to invalid IL or missing references) Texture2D val = GenerateSoftTrail(color); Texture2D val2 = GenerateRune(color); Texture2D val3 = new Texture2D(128, 128, (TextureFormat)4, false); ((Texture)val3).filterMode = (FilterMode)1; Color val4 = default(Color); for (int i = 0; i < 128; i++) { for (int j = 0; j < 128; j++) { Color pixel = val.GetPixel(j, i); Color pixel2 = val2.GetPixel(j, i); float num = Mathf.Clamp01(pixel.a + pixel2.a * 0.65f); ((Color)(ref val4))..ctor(color.r, color.g, color.b, color.a * num); val3.SetPixel(j, i, val4); } } val3.Apply(true); return val3; } private static void DrawRuneOntoAtlas(Texture2D tex, Color color, int runeIndex, int offsetX, int offsetY, int size) { //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_004c: Unknown result type (might be due to invalid IL or missing references) //IL_0052: Unknown result type (might be due to invalid IL or missing references) //IL_0058: Unknown result type (might be due to invalid IL or missing references) //IL_00d2: Unknown result type (might be due to invalid IL or missing references) //IL_00e4: Unknown result type (might be due to invalid IL or missing references) //IL_00f6: Unknown result type (might be due to invalid IL or missing references) //IL_0108: Unknown result type (might be due to invalid IL or missing references) //IL_011f: Unknown result type (might be due to invalid IL or missing references) //IL_0131: Unknown result type (might be due to invalid IL or missing references) //IL_0143: Unknown result type (might be due to invalid IL or missing references) //IL_0155: Unknown result type (might be due to invalid IL or missing references) //IL_0167: Unknown result type (might be due to invalid IL or missing references) //IL_0179: Unknown result type (might be due to invalid IL or missing references) //IL_0190: Unknown result type (might be due to invalid IL or missing references) //IL_01a2: Unknown result type (might be due to invalid IL or missing references) //IL_01b4: Unknown result type (might be due to invalid IL or missing references) //IL_01c6: Unknown result type (might be due to invalid IL or missing references) //IL_01d8: Unknown result type (might be due to invalid IL or missing references) //IL_01ea: Unknown result type (might be due to invalid IL or missing references) //IL_0201: Unknown result type (might be due to invalid IL or missing references) //IL_0213: Unknown result type (might be due to invalid IL or missing references) //IL_0225: Unknown result type (might be due to invalid IL or missing references) //IL_0237: Unknown result type (might be due to invalid IL or missing references) //IL_0249: Unknown result type (might be due to invalid IL or missing references) //IL_025b: Unknown result type (might be due to invalid IL or missing references) //IL_026d: Unknown result type (might be due to invalid IL or missing references) //IL_027f: Unknown result type (might be due to invalid IL or missing references) //IL_0296: Unknown result type (might be due to invalid IL or missing references) //IL_02a8: Unknown result type (might be due to invalid IL or missing references) //IL_02bf: Unknown result type (might be due to invalid IL or missing references) //IL_02d1: Unknown result type (might be due to invalid IL or missing references) //IL_02e3: Unknown result type (might be due to invalid IL or missing references) //IL_02f5: Unknown result type (might be due to invalid IL or missing references) //IL_0307: Unknown result type (might be due to invalid IL or missing references) //IL_0319: Unknown result type (might be due to invalid IL or missing references) //IL_0330: Unknown result type (might be due to invalid IL or missing references) //IL_0342: Unknown result type (might be due to invalid IL or missing references) //IL_0354: Unknown result type (might be due to invalid IL or missing references) //IL_0366: Unknown result type (might be due to invalid IL or missing references) //IL_0378: Unknown result type (might be due to invalid IL or missing references) //IL_038a: Unknown result type (might be due to invalid IL or missing references) //IL_03a1: Unknown result type (might be due to invalid IL or missing references) //IL_03b3: Unknown result type (might be due to invalid IL or missing references) //IL_03c5: Unknown result type (might be due to invalid IL or missing references) //IL_03d7: Unknown result type (might be due to invalid IL or missing references) //IL_03e9: Unknown result type (might be due to invalid IL or missing references) //IL_03fb: Unknown result type (might be due to invalid IL or missing references) //IL_040d: Unknown result type (might be due to invalid IL or missing references) //IL_041f: Unknown result type (might be due to invalid IL or missing references) //IL_0436: Unknown result type (might be due to invalid IL or missing references) //IL_0448: Unknown result type (might be due to invalid IL or missing references) //IL_045a: Unknown result type (might be due to invalid IL or missing references) //IL_046c: Unknown result type (might be due to invalid IL or missing references) //IL_0483: Unknown result type (might be due to invalid IL or missing references) //IL_0495: Unknown result type (might be due to invalid IL or missing references) //IL_04a7: Unknown result type (might be due to invalid IL or missing references) //IL_04b9: Unknown result type (might be due to invalid IL or missing references) //IL_04cb: Unknown result type (might be due to invalid IL or missing references) //IL_04dd: Unknown result type (might be due to invalid IL or missing references) //IL_04ef: Unknown result type (might be due to invalid IL or missing references) //IL_0501: Unknown result type (might be due to invalid IL or missing references) //IL_0518: Unknown result type (might be due to invalid IL or missing references) //IL_052a: Unknown result type (might be due to invalid IL or missing references) //IL_053c: Unknown result type (might be due to invalid IL or missing references) //IL_054e: Unknown result type (might be due to invalid IL or missing references) //IL_0565: Unknown result type (might be due to invalid IL or missing references) //IL_0577: Unknown result type (might be due to invalid IL or missing references) //IL_0589: Unknown result type (might be due to invalid IL or missing references) //IL_059b: Unknown result type (might be due to invalid IL or missing references) //IL_05ad: Unknown result type (might be due to invalid IL or missing references) //IL_05bf: Unknown result type (might be due to invalid IL or missing references) //IL_05d1: Unknown result type (might be due to invalid IL or missing references) //IL_05e3: Unknown result type (might be due to invalid IL or missing references) //IL_05f5: Unknown result type (might be due to invalid IL or missing references) //IL_0607: Unknown result type (might be due to invalid IL or missing references) //IL_0619: Unknown result type (might be due to invalid IL or missing references) //IL_062b: Unknown result type (might be due to invalid IL or missing references) //IL_0642: Unknown result type (might be due to invalid IL or missing references) //IL_0654: Unknown result type (might be due to invalid IL or missing references) //IL_0666: Unknown result type (might be due to invalid IL or missing references) //IL_0678: Unknown result type (might be due to invalid IL or missing references) //IL_068a: Unknown result type (might be due to invalid IL or missing references) //IL_069c: Unknown result type (might be due to invalid IL or missing references) //IL_06ae: Unknown result type (might be due to invalid IL or missing references) //IL_06c0: Unknown result type (might be due to invalid IL or missing references) //IL_06d7: Unknown result type (might be due to invalid IL or missing references) //IL_06e9: Unknown result type (might be due to invalid IL or missing references) //IL_06fb: Unknown result type (might be due to invalid IL or missing references) //IL_070d: Unknown result type (might be due to invalid IL or missing references) //IL_071f: Unknown result type (might be due to invalid IL or missing references) //IL_0731: Unknown result type (might be due to invalid IL or missing references) //IL_0743: Unknown result type (might be due to invalid IL or missing references) //IL_0755: Unknown result type (might be due to invalid IL or missing references) //IL_0767: Unknown result type (might be due to invalid IL or missing references) //IL_0779: Unknown result type (might be due to invalid IL or missing references) //IL_0790: Unknown result type (might be due to invalid IL or missing references) //IL_07a2: Unknown result type (might be due to invalid IL or missing references) //IL_07b4: Unknown result type (might be due to invalid IL or missing references) //IL_07c6: Unknown result type (might be due to invalid IL or missing references) //IL_07d8: Unknown result type (might be due to invalid IL or missing references) //IL_07ea: Unknown result type (might be due to invalid IL or missing references) //IL_07fc: Unknown result type (might be due to invalid IL or missing references) //IL_080e: Unknown result type (might be due to invalid IL or missing references) //IL_0825: Unknown result type (might be due to invalid IL or missing references) //IL_0837: Unknown result type (might be due to invalid IL or missing references) //IL_0849: Unknown result type (might be due to invalid IL or missing references) //IL_085b: Unknown result type (might be due to invalid IL or missing references) //IL_086d: Unknown result type (might be due to invalid IL or missing references) //IL_087f: Unknown result type (might be due to invalid IL or missing references) //IL_0891: Unknown result type (might be due to invalid IL or missing references) //IL_08a3: Unknown result type (might be due to invalid IL or missing references) Color c = default(Color); ((Color)(ref c))..ctor(color.r * 0.6f, color.g * 0.6f, color.b * 0.6f, 0.6f); Color c2 = default(Color); ((Color)(ref c2))..ctor(color.r, color.g, color.b, 1f); float scale = (float)size / 128f; switch (runeIndex) { case 0: DrawLineLocal(20, 20, 108, 108, c, 6); DrawLineLocal(108, 20, 20, 108, c, 6); DrawLineLocal(20, 20, 108, 108, c2, 3); DrawLineLocal(108, 20, 20, 108, c2, 3); break; case 1: DrawLineLocal(64, 16, 64, 112, c, 6); DrawLineLocal(64, 64, 32, 96, c, 5); DrawLineLocal(64, 64, 96, 96, c, 5); DrawLineLocal(64, 16, 64, 112, c2, 3); DrawLineLocal(64, 64, 32, 96, c2, 2); DrawLineLocal(64, 64, 96, 96, c2, 2); break; case 2: DrawLineLocal(40, 20, 40, 108, c, 6); DrawLineLocal(40, 96, 96, 112, c, 5); DrawLineLocal(40, 72, 96, 88, c, 5); DrawLineLocal(40, 20, 40, 108, c2, 3); DrawLineLocal(40, 96, 96, 112, c2, 2); DrawLineLocal(40, 72, 96, 88, c2, 2); break; case 3: DrawLineLocal(40, 20, 40, 112, c, 6); DrawLineLocal(40, 96, 88, 112, c, 5); DrawLineLocal(88, 112, 88, 80, c, 5); DrawLineLocal(88, 80, 40, 96, c, 5); DrawLineLocal(40, 20, 40, 112, c2, 3); DrawLineLocal(40, 96, 88, 112, c2, 2); DrawLineLocal(88, 112, 88, 80, c2, 2); DrawLineLocal(88, 80, 40, 96, c2, 2); break; case 4: DrawLineLocal(64, 16, 64, 112, c, 8); DrawLineLocal(64, 16, 64, 112, c2, 4); break; case 5: DrawLineLocal(64, 16, 64, 112, c, 6); DrawLineLocal(64, 40, 32, 72, c, 5); DrawLineLocal(64, 40, 96, 72, c, 5); DrawLineLocal(64, 16, 64, 112, c2, 3); DrawLineLocal(64, 40, 32, 72, c2, 2); DrawLineLocal(64, 40, 96, 72, c2, 2); break; case 6: DrawLineLocal(36, 16, 36, 112, c, 6); DrawLineLocal(92, 16, 92, 112, c, 6); DrawLineLocal(36, 36, 92, 92, c, 5); DrawLineLocal(36, 16, 36, 112, c2, 3); DrawLineLocal(92, 16, 92, 112, c2, 3); DrawLineLocal(36, 36, 92, 92, c2, 2); break; case 7: DrawLineLocal(80, 20, 40, 20, c, 5); DrawLineLocal(80, 20, 40, 64, c, 5); DrawLineLocal(40, 64, 80, 108, c, 5); DrawLineLocal(80, 108, 40, 108, c, 5); DrawLineLocal(80, 20, 40, 20, c2, 2); DrawLineLocal(80, 20, 40, 64, c2, 2); DrawLineLocal(40, 64, 80, 108, c2, 2); DrawLineLocal(80, 108, 40, 108, c2, 2); break; case 8: DrawLineLocal(64, 16, 64, 112, c, 6); DrawLineLocal(96, 96, 32, 32, c, 5); DrawLineLocal(64, 16, 64, 112, c2, 3); DrawLineLocal(96, 96, 32, 32, c2, 2); break; case 9: DrawLineLocal(32, 48, 32, 112, c, 6); DrawLineLocal(96, 48, 96, 112, c, 6); DrawLineLocal(32, 48, 64, 16, c, 5); DrawLineLocal(64, 16, 96, 48, c, 5); DrawLineLocal(32, 48, 32, 112, c2, 3); DrawLineLocal(96, 48, 96, 112, c2, 3); DrawLineLocal(32, 48, 64, 16, c2, 2); DrawLineLocal(64, 16, 96, 48, c2, 2); break; case 10: DrawLineLocal(48, 16, 48, 112, c, 6); DrawLineLocal(48, 80, 96, 48, c, 5); DrawLineLocal(48, 16, 48, 112, c2, 3); DrawLineLocal(48, 80, 96, 48, c2, 2); break; case 11: DrawLineLocal(64, 112, 96, 72, c, 5); DrawLineLocal(96, 72, 64, 32, c, 5); DrawLineLocal(64, 32, 32, 72, c, 5); DrawLineLocal(32, 72, 64, 112, c, 5); DrawLineLocal(32, 72, 16, 16, c, 5); DrawLineLocal(96, 72, 112, 16, c, 5); DrawLineLocal(64, 112, 96, 72, c2, 2); DrawLineLocal(96, 72, 64, 32, c2, 2); DrawLineLocal(64, 32, 32, 72, c2, 2); DrawLineLocal(32, 72, 64, 112, c2, 2); DrawLineLocal(32, 72, 16, 16, c2, 2); DrawLineLocal(96, 72, 112, 16, c2, 2); break; case 12: DrawLineLocal(20, 20, 64, 64, c, 5); DrawLineLocal(20, 108, 64, 64, c, 5); DrawLineLocal(108, 20, 64, 64, c, 5); DrawLineLocal(108, 108, 64, 64, c, 5); DrawLineLocal(20, 20, 64, 64, c2, 2); DrawLineLocal(20, 108, 64, 64, c2, 2); DrawLineLocal(108, 20, 64, 64, c2, 2); DrawLineLocal(108, 108, 64, 64, c2, 2); break; case 13: DrawLineLocal(36, 16, 36, 112, c, 6); DrawLineLocal(36, 96, 80, 80, c, 5); DrawLineLocal(80, 80, 36, 64, c, 5); DrawLineLocal(36, 64, 80, 48, c, 5); DrawLineLocal(80, 48, 36, 32, c, 5); DrawLineLocal(36, 16, 36, 112, c2, 3); DrawLineLocal(36, 96, 80, 80, c2, 2); DrawLineLocal(80, 80, 36, 64, c2, 2); DrawLineLocal(36, 64, 80, 48, c2, 2); DrawLineLocal(80, 48, 36, 32, c2, 2); break; case 14: DrawLineLocal(32, 16, 32, 112, c, 6); DrawLineLocal(96, 16, 96, 112, c, 6); DrawLineLocal(32, 112, 96, 64, c, 5); DrawLineLocal(96, 112, 32, 64, c, 5); DrawLineLocal(32, 16, 32, 112, c2, 3); DrawLineLocal(96, 16, 96, 112, c2, 3); DrawLineLocal(32, 112, 96, 64, c2, 2); DrawLineLocal(96, 112, 32, 64, c2, 2); break; case 15: DrawLineLocal(64, 16, 108, 64, c, 6); DrawLineLocal(108, 64, 64, 112, c, 6); DrawLineLocal(64, 112, 20, 64, c, 6); DrawLineLocal(20, 64, 64, 16, c, 6); DrawLineLocal(64, 16, 108, 64, c2, 3); DrawLineLocal(108, 64, 64, 112, c2, 3); DrawLineLocal(64, 112, 20, 64, c2, 3); DrawLineLocal(20, 64, 64, 16, c2, 3); break; } void DrawLineLocal(int x0, int y0, int x1, int y1, Color c3, int thickness) { //IL_0054: Unknown result type (might be due to invalid IL or missing references) DrawLineAtlas(tex, offsetX + (int)((float)x0 * scale), offsetY + (int)((float)y0 * scale), offsetX + (int)((float)x1 * scale), offsetY + (int)((float)y1 * scale), c3, thickness, 512); } } public static Texture2D GenerateRune(Color color, int runeIndex) { //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0013: Expected O, but got Unknown //IL_0040: Unknown result type (might be due to invalid IL or missing references) //IL_004c: Unknown result type (might be due to invalid IL or missing references) //IL_0058: Unknown result type (might be due to invalid IL or missing references) //IL_0070: Unknown result type (might be due to invalid IL or missing references) //IL_0076: Unknown result type (might be due to invalid IL or missing references) //IL_007c: Unknown result type (might be due to invalid IL or missing references) //IL_00a1: Unknown result type (might be due to invalid IL or missing references) //IL_00a2: Unknown result type (might be due to invalid IL or missing references) //IL_0120: Unknown result type (might be due to invalid IL or missing references) //IL_0131: Unknown result type (might be due to invalid IL or missing references) //IL_0142: Unknown result type (might be due to invalid IL or missing references) //IL_0153: Unknown result type (might be due to invalid IL or missing references) //IL_0169: Unknown result type (might be due to invalid IL or missing references) //IL_017a: Unknown result type (might be due to invalid IL or missing references) //IL_018b: Unknown result type (might be due to invalid IL or missing references) //IL_019c: Unknown result type (might be due to invalid IL or missing references) //IL_01ad: Unknown result type (might be due to invalid IL or missing references) //IL_01be: Unknown result type (might be due to invalid IL or missing references) //IL_01d4: Unknown result type (might be due to invalid IL or missing references) //IL_01e5: Unknown result type (might be due to invalid IL or missing references) //IL_01f6: Unknown result type (might be due to invalid IL or missing references) //IL_0207: Unknown result type (might be due to invalid IL or missing references) //IL_0218: Unknown result type (might be due to invalid IL or missing references) //IL_0229: Unknown result type (might be due to invalid IL or missing references) //IL_023f: Unknown result type (might be due to invalid IL or missing references) //IL_0250: Unknown result type (might be due to invalid IL or missing references) //IL_0261: Unknown result type (might be due to invalid IL or missing references) //IL_0272: Unknown result type (might be due to invalid IL or missing references) //IL_0283: Unknown result type (might be due to invalid IL or missing references) //IL_0294: Unknown result type (might be due to invalid IL or missing references) //IL_02a5: Unknown result type (might be due to invalid IL or missing references) //IL_02b6: Unknown result type (might be due to invalid IL or missing references) //IL_02cc: Unknown result type (might be due to invalid IL or missing references) //IL_02dd: Unknown result type (might be due to invalid IL or missing references) //IL_02f3: Unknown result type (might be due to invalid IL or missing references) //IL_0304: Unknown result type (might be due to invalid IL or missing references) //IL_0315: Unknown result type (might be due to invalid IL or missing references) //IL_0326: Unknown result type (might be due to invalid IL or missing references) //IL_0337: Unknown result type (might be due to invalid IL or missing references) //IL_0348: Unknown result type (might be due to invalid IL or missing references) //IL_035e: Unknown result type (might be due to invalid IL or missing references) //IL_036f: Unknown result type (might be due to invalid IL or missing references) //IL_0380: Unknown result type (might be due to invalid IL or missing references) //IL_0391: Unknown result type (might be due to invalid IL or missing references) //IL_03a2: Unknown result type (might be due to invalid IL or missing references) //IL_03b3: Unknown result type (might be due to invalid IL or missing references) //IL_03c9: Unknown result type (might be due to invalid IL or missing references) //IL_03da: Unknown result type (might be due to invalid IL or missing references) //IL_03eb: Unknown result type (might be due to invalid IL or missing references) //IL_03fc: Unknown result type (might be due to invalid IL or missing references) //IL_040d: Unknown result type (might be due to invalid IL or missing references) //IL_041e: Unknown result type (might be due to invalid IL or missing references) //IL_042f: Unknown result type (might be due to invalid IL or missing references) //IL_0440: Unknown result type (might be due to invalid IL or missing references) //IL_0456: Unknown result type (might be due to invalid IL or missing references) //IL_0467: Unknown result type (might be due to invalid IL or missing references) //IL_0478: Unknown result type (might be due to invalid IL or missing references) //IL_0489: Unknown result type (might be due to invalid IL or missing references) //IL_049f: Unknown result type (might be due to invalid IL or missing references) //IL_04b0: Unknown result type (might be due to invalid IL or missing references) //IL_04c1: Unknown result type (might be due to invalid IL or missing references) //IL_04d2: Unknown result type (might be due to invalid IL or missing references) //IL_04e3: Unknown result type (might be due to invalid IL or missing references) //IL_04f4: Unknown result type (might be due to invalid IL or missing references) //IL_0505: Unknown result type (might be due to invalid IL or missing references) //IL_0516: Unknown result type (might be due to invalid IL or missing references) //IL_052c: Unknown result type (might be due to invalid IL or missing references) //IL_053d: Unknown result type (might be due to invalid IL or missing references) //IL_054e: Unknown result type (might be due to invalid IL or missing references) //IL_055f: Unknown result type (might be due to invalid IL or missing references) //IL_0575: Unknown result type (might be due to invalid IL or missing references) //IL_0586: Unknown result type (might be due to invalid IL or missing references) //IL_0597: Unknown result type (might be due to invalid IL or missing references) //IL_05a8: Unknown result type (might be due to invalid IL or missing references) //IL_05b9: Unknown result type (might be due to invalid IL or missing references) //IL_05ca: Unknown result type (might be due to invalid IL or missing references) //IL_05db: Unknown result type (might be due to invalid IL or missing references) //IL_05ec: Unknown result type (might be due to invalid IL or missing references) //IL_05fd: Unknown result type (might be due to invalid IL or missing references) //IL_060e: Unknown result type (might be due to invalid IL or missing references) //IL_061f: Unknown result type (might be due to invalid IL or missing references) //IL_0630: Unknown result type (might be due to invalid IL or missing references) //IL_0646: Unknown result type (might be due to invalid IL or missing references) //IL_0657: Unknown result type (might be due to invalid IL or missing references) //IL_0668: Unknown result type (might be due to invalid IL or missing references) //IL_0679: Unknown result type (might be due to invalid IL or missing references) //IL_068a: Unknown result type (might be due to invalid IL or missing references) //IL_069b: Unknown result type (might be due to invalid IL or missing references) //IL_06ac: Unknown result type (might be due to invalid IL or missing references) //IL_06bd: Unknown result type (might be due to invalid IL or missing references) //IL_06d3: Unknown result type (might be due to invalid IL or missing references) //IL_06e4: Unknown result type (might be due to invalid IL or missing references) //IL_06f5: Unknown result type (might be due to invalid IL or missing references) //IL_0706: Unknown result type (might be due to invalid IL or missing references) //IL_0717: Unknown result type (might be due to invalid IL or missing references) //IL_0728: Unknown result type (might be due to invalid IL or missing references) //IL_0739: Unknown result type (might be due to invalid IL or missing references) //IL_074a: Unknown result type (might be due to invalid IL or missing references) //IL_075b: Unknown result type (might be due to invalid IL or missing references) //IL_076c: Unknown result type (might be due to invalid IL or missing references) //IL_0782: Unknown result type (might be due to invalid IL or missing references) //IL_0793: Unknown result type (might be due to invalid IL or missing references) //IL_07a4: Unknown result type (might be due to invalid IL or missing references) //IL_07b5: Unknown result type (might be due to invalid IL or missing references) //IL_07c6: Unknown result type (might be due to invalid IL or missing references) //IL_07d7: Unknown result type (might be due to invalid IL or missing references) //IL_07e8: Unknown result type (might be due to invalid IL or missing references) //IL_07f9: Unknown result type (might be due to invalid IL or missing references) //IL_080f: Unknown result type (might be due to invalid IL or missing references) //IL_0820: Unknown result type (might be due to invalid IL or missing references) //IL_0831: Unknown result type (might be due to invalid IL or missing references) //IL_0842: Unknown result type (might be due to invalid IL or missing references) //IL_0853: Unknown result type (might be due to invalid IL or missing references) //IL_0864: Unknown result type (might be due to invalid IL or missing references) //IL_0875: Unknown result type (might be due to invalid IL or missing references) //IL_0886: Unknown result type (might be due to invalid IL or missing references) Texture2D val = new Texture2D(128, 128, (TextureFormat)4, true); ((Texture)val).filterMode = (FilterMode)1; ((Texture)val).wrapMode = (TextureWrapMode)1; Color val2 = default(Color); ((Color)(ref val2))..ctor(0f, 0f, 0f, 0f); Color c = default(Color); ((Color)(ref c))..ctor(color.r * 0.6f, color.g * 0.6f, color.b * 0.6f, 0.6f); Color c2 = default(Color); ((Color)(ref c2))..ctor(color.r, color.g, color.b, 1f); Color[] array = (Color[])(object)new Color[16384]; for (int i = 0; i < array.Length; i++) { array[i] = val2; } val.SetPixels(array); switch (runeIndex) { case 0: DrawLine(val, 20, 20, 108, 108, c, 6); DrawLine(val, 108, 20, 20, 108, c, 6); DrawLine(val, 20, 20, 108, 108, c2, 3); DrawLine(val, 108, 20, 20, 108, c2, 3); break; case 1: DrawLine(val, 64, 16, 64, 112, c, 6); DrawLine(val, 64, 64, 32, 96, c, 5); DrawLine(val, 64, 64, 96, 96, c, 5); DrawLine(val, 64, 16, 64, 112, c2, 3); DrawLine(val, 64, 64, 32, 96, c2, 2); DrawLine(val, 64, 64, 96, 96, c2, 2); break; case 2: DrawLine(val, 40, 20, 40, 108, c, 6); DrawLine(val, 40, 96, 96, 112, c, 5); DrawLine(val, 40, 72, 96, 88, c, 5); DrawLine(val, 40, 20, 40, 108, c2, 3); DrawLine(val, 40, 96, 96, 112, c2, 2); DrawLine(val, 40, 72, 96, 88, c2, 2); break; case 3: DrawLine(val, 40, 20, 40, 112, c, 6); DrawLine(val, 40, 96, 88, 112, c, 5); DrawLine(val, 88, 112, 88, 80, c, 5); DrawLine(val, 88, 80, 40, 96, c, 5); DrawLine(val, 40, 20, 40, 112, c2, 3); DrawLine(val, 40, 96, 88, 112, c2, 2); DrawLine(val, 88, 112, 88, 80, c2, 2); DrawLine(val, 88, 80, 40, 96, c2, 2); break; case 4: DrawLine(val, 64, 16, 64, 112, c, 8); DrawLine(val, 64, 16, 64, 112, c2, 4); break; case 5: DrawLine(val, 64, 16, 64, 112, c, 6); DrawLine(val, 64, 40, 32, 72, c, 5); DrawLine(val, 64, 40, 96, 72, c, 5); DrawLine(val, 64, 16, 64, 112, c2, 3); DrawLine(val, 64, 40, 32, 72, c2, 2); DrawLine(val, 64, 40, 96, 72, c2, 2); break; case 6: DrawLine(val, 36, 16, 36, 112, c, 6); DrawLine(val, 92, 16, 92, 112, c, 6); DrawLine(val, 36, 36, 92, 92, c, 5); DrawLine(val, 36, 16, 36, 112, c2, 3); DrawLine(val, 92, 16, 92, 112, c2, 3); DrawLine(val, 36, 36, 92, 92, c2, 2); break; default: DrawLine(val, 80, 20, 40, 20, c, 5); DrawLine(val, 80, 20, 40, 64, c, 5); DrawLine(val, 40, 64, 80, 108, c, 5); DrawLine(val, 80, 108, 40, 108, c, 5); DrawLine(val, 80, 20, 40, 20, c2, 2); DrawLine(val, 80, 20, 40, 64, c2, 2); DrawLine(val, 40, 64, 80, 108, c2, 2); DrawLine(val, 80, 108, 40, 108, c2, 2); break; case 8: DrawLine(val, 64, 16, 64, 112, c, 6); DrawLine(val, 96, 96, 32, 32, c, 5); DrawLine(val, 64, 16, 64, 112, c2, 3); DrawLine(val, 96, 96, 32, 32, c2, 2); break; case 9: DrawLine(val, 32, 48, 32, 112, c, 6); DrawLine(val, 96, 48, 96, 112, c, 6); DrawLine(val, 32, 48, 64, 16, c, 5); DrawLine(val, 64, 16, 96, 48, c, 5); DrawLine(val, 32, 48, 32, 112, c2, 3); DrawLine(val, 96, 48, 96, 112, c2, 3); DrawLine(val, 32, 48, 64, 16, c2, 2); DrawLine(val, 64, 16, 96, 48, c2, 2); break; case 10: DrawLine(val, 48, 16, 48, 112, c, 6); DrawLine(val, 48, 80, 96, 48, c, 5); DrawLine(val, 48, 16, 48, 112, c2, 3); DrawLine(val, 48, 80, 96, 48, c2, 2); break; case 11: DrawLine(val, 64, 112, 96, 72, c, 5); DrawLine(val, 96, 72, 64, 32, c, 5); DrawLine(val, 64, 32, 32, 72, c, 5); DrawLine(val, 32, 72, 64, 112, c, 5); DrawLine(val, 32, 72, 16, 16, c, 5); DrawLine(val, 96, 72, 112, 16, c, 5); DrawLine(val, 64, 112, 96, 72, c2, 2); DrawLine(val, 96, 72, 64, 32, c2, 2); DrawLine(val, 64, 32, 32, 72, c2, 2); DrawLine(val, 32, 72, 64, 112, c2, 2); DrawLine(val, 32, 72, 16, 16, c2, 2); DrawLine(val, 96, 72, 112, 16, c2, 2); break; case 12: DrawLine(val, 20, 20, 64, 64, c, 5); DrawLine(val, 20, 108, 64, 64, c, 5); DrawLine(val, 108, 20, 64, 64, c, 5); DrawLine(val, 108, 108, 64, 64, c, 5); DrawLine(val, 20, 20, 64, 64, c2, 2); DrawLine(val, 20, 108, 64, 64, c2, 2); DrawLine(val, 108, 20, 64, 64, c2, 2); DrawLine(val, 108, 108, 64, 64, c2, 2); break; case 13: DrawLine(val, 36, 16, 36, 112, c, 6); DrawLine(val, 36, 96, 80, 80, c, 5); DrawLine(val, 80, 80, 36, 64, c, 5); DrawLine(val, 36, 64, 80, 48, c, 5); DrawLine(val, 80, 48, 36, 32, c, 5); DrawLine(val, 36, 16, 36, 112, c2, 3); DrawLine(val, 36, 96, 80, 80, c2, 2); DrawLine(val, 80, 80, 36, 64, c2, 2); DrawLine(val, 36, 64, 80, 48, c2, 2); DrawLine(val, 80, 48, 36, 32, c2, 2); break; case 14: DrawLine(val, 32, 16, 32, 112, c, 6); DrawLine(val, 96, 16, 96, 112, c, 6); DrawLine(val, 32, 112, 96, 64, c, 5); DrawLine(val, 96, 112, 32, 64, c, 5); DrawLine(val, 32, 16, 32, 112, c2, 3); DrawLine(val, 96, 16, 96, 112, c2, 3); DrawLine(val, 32, 112, 96, 64, c2, 2); DrawLine(val, 96, 112, 32, 64, c2, 2); break; case 15: DrawLine(val, 64, 16, 108, 64, c, 6); DrawLine(val, 108, 64, 64, 112, c, 6); DrawLine(val, 64, 112, 20, 64, c, 6); DrawLine(val, 20, 64, 64, 16, c, 6); DrawLine(val, 64, 16, 108, 64, c2, 3); DrawLine(val, 108, 64, 64, 112, c2, 3); DrawLine(val, 64, 112, 20, 64, c2, 3); DrawLine(val, 20, 64, 64, 16, c2, 3); break; } val.Apply(true); return val; } private static void DrawLineAtlas(Texture2D tex, int x0, int y0, int x1, int y1, Color c, int thickness, int atlasSize) { //IL_0034: Unknown result type (might be due to invalid IL or missing references) int num = Mathf.Abs(x1 - x0); int num2 = Mathf.Abs(y1 - y0); int num3 = ((x0 < x1) ? 1 : (-1)); int num4 = ((y0 < y1) ? 1 : (-1)); int num5 = num - num2; while (true) { DrawCircleAtlas(tex, x0, y0, thickness, c, atlasSize); if (x0 == x1 && y0 == y1) { break; } int num6 = 2 * num5; if (num6 > -num2) { num5 -= num2; x0 += num3; } if (num6 < num) { num5 += num; y0 += num4; } } } private static void DrawCircleAtlas(Texture2D tex, int cx, int cy, int r, Color c, int atlasSize) { //IL_004b: Unknown result type (might be due to invalid IL or missing references) for (int i = -r; i <= r; i++) { for (int j = -r; j <= r; j++) { if (j * j + i * i <= r * r) { int num = cx + j; int num2 = cy + i; if (num >= 0 && num < atlasSize && num2 >= 0 && num2 < atlasSize) { tex.SetPixel(num, num2, c); } } } } } private static void DrawLine(Texture2D tex, int x0, int y0, int x1, int y1, Color c, int thickness) { //IL_0034: Unknown result type (might be due to invalid IL or missing references) int num = Mathf.Abs(x1 - x0); int num2 = Mathf.Abs(y1 - y0); int num3 = ((x0 < x1) ? 1 : (-1)); int num4 = ((y0 < y1) ? 1 : (-1)); int num5 = num - num2; while (true) { DrawCircle(tex, x0, y0, thickness, c); if (x0 == x1 && y0 == y1) { break; } int num6 = 2 * num5; if (num6 > -num2) { num5 -= num2; x0 += num3; } if (num6 < num) { num5 += num; y0 += num4; } } } private static void DrawCircle(Texture2D tex, int cx, int cy, int r, Color c) { //IL_0051: Unknown result type (might be due to invalid IL or missing references) for (int i = -r; i <= r; i++) { for (int j = -r; j <= r; j++) { if (j * j + i * i <= r * r) { int num = cx + j; int num2 = cy + i; if (num >= 0 && num < 128 && num2 >= 0 && num2 < 128) { tex.SetPixel(num, num2, c); } } } } } } public static class ValkyrieRuneVFX_Helper { private static readonly Dictionary _materialCache = new Dictionary(); private static bool _initialized = false; private static void Init() { if (!_initialized) { _initialized = true; Logger.LogInfo((object)"\ud83d\udf01 VFX‑Forge: Seeking glowing, additive, unlit shaders worthy of Njord."); } } private unsafe static long MakeCacheKey(Shader shader, Texture2D tex, Color color) { int num = (((Object)(object)shader != (Object)null) ? ((Object)shader).GetInstanceID() : 0); int num2 = (((Object)(object)tex != (Object)null) ? ((Object)tex).GetInstanceID() : 0); int hashCode = ((object)(*(Color*)(&color))/*cast due to .constrained prefix*/).GetHashCode(); return (long)((ulong)((long)num << 32) ^ ((ulong)(uint)num2 << 16) ^ (uint)hashCode); } public static Material GetOrCreateRuneMaterial(Texture2D runeTex, Color color) { //IL_0192: Unknown result type (might be due to invalid IL or missing references) //IL_023b: Unknown result type (might be due to invalid IL or missing references) //IL_0259: Unknown result type (might be due to invalid IL or missing references) //IL_0277: Unknown result type (might be due to invalid IL or missing references) //IL_027d: Unknown result type (might be due to invalid IL or missing references) //IL_01c1: Unknown result type (might be due to invalid IL or missing references) //IL_01c7: Expected O, but got Unknown Init(); Shader val = Shader.Find("Particles/Standard Unlit") ?? Shader.Find("Legacy Shaders/Particles/Alpha Blended") ?? Shader.Find("Particles/Alpha Blended") ?? Shader.Find("Particles/Additive"); if ((Object)(object)val == (Object)null) { float num = float.MinValue; Material[] array = Resources.FindObjectsOfTypeAll(); foreach (Material val2 in array) { if (!((Object)(object)val2 == (Object)null) && !((Object)(object)val2.shader == (Object)null)) { Shader shader = val2.shader; string text = ((Object)shader).name.ToLower(); float num2 = 0f; if (text.Contains("particle")) { num2 += 3f; } if (text.Contains("add")) { num2 += 3f; } if (text.Contains("unlit")) { num2 += 2f; } if (text.Contains("transparent")) { num2 += 1.5f; } if ((val2.HasProperty("_Color") || val2.HasProperty("_TintColor")) && num2 > num) { num = num2; val = shader; } } } } if ((Object)(object)val == (Object)null) { Logger.LogError((object)"\ud83d\udf01 VFX‑Forge: No glowing shader found. The runes refuse to shine."); return null; } long key = MakeCacheKey(val, runeTex, color); if (_materialCache.TryGetValue(key, out var value) && (Object)(object)value != (Object)null) { return value; } Material val3 = new Material(val); if ((Object)(object)runeTex != (Object)null) { if (val3.HasProperty("_MainTex")) { val3.SetTexture("_MainTex", (Texture)(object)runeTex); } if (val3.HasProperty("_BaseMap")) { val3.SetTexture("_BaseMap", (Texture)(object)runeTex); } try { val3.mainTexture = (Texture)(object)runeTex; } catch { } } if (val3.HasProperty("_Color")) { val3.SetColor("_Color", color); } if (val3.HasProperty("_TintColor")) { val3.SetColor("_TintColor", color); } if (val3.HasProperty("_EmissionColor")) { val3.SetColor("_EmissionColor", color * 3f); } val3.SetInt("_SrcBlend", 1); val3.SetInt("_DstBlend", 1); val3.SetInt("_ZWrite", 0); val3.DisableKeyword("_ALPHATEST_ON"); val3.EnableKeyword("_ALPHABLEND_ON"); val3.DisableKeyword("_ALPHAPREMULTIPLY_ON"); val3.renderQueue = 3000; _materialCache[key] = val3; Logger.LogInfo((object)("\ud83d\udf01 VFX‑Forge: Forged glowing additive rune material from '" + ((Object)val).name + "'.")); return val3; } public static void ClearCache() { _materialCache.Clear(); _initialized = false; } } }