Decompiled source of CrusadersEquipment v3.0.7
plugins/CrusadersEquipment.dll
Decompiled 6 months ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using BepInEx; using EffectSourceConditions; using HarmonyLib; using HolyDamageManager; using ImpendingDoom; using NodeCanvas.BehaviourTrees; using NodeCanvas.DialogueTrees; using NodeCanvas.Framework; using NodeCanvas.Tasks.Actions; using SideLoader; using SideLoader.Model; using TinyHelper; using UnityEngine; [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.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")] [assembly: AssemblyVersion("0.0.0.0")] namespace CrusadersEquipment; public class Lingering { public const string ItemName = "Lingering"; public const int EnchantID = 2502517; public static void MakeEnchant() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Expected O, but got Unknown //IL_003e: 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_0054: Unknown result type (might be due to invalid IL or missing references) //IL_0055: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Unknown result type (might be due to invalid IL or missing references) //IL_0067: 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_0075: Unknown result type (might be due to invalid IL or missing references) //IL_0082: Unknown result type (might be due to invalid IL or missing references) //IL_00a0: Unknown result type (might be due to invalid IL or missing references) //IL_00a9: 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_00c4: Unknown result type (might be due to invalid IL or missing references) //IL_00c6: Unknown result type (might be due to invalid IL or missing references) //IL_00d0: Unknown result type (might be due to invalid IL or missing references) //IL_00d1: Unknown result type (might be due to invalid IL or missing references) SL_EnchantmentRecipe val = new SL_EnchantmentRecipe(); val.Name = "Lingering"; val.Description = "Increases the duration of weapon infusions by 10 seconds."; val.EnchantmentID = 2502517; val.IncenseItemID = 6000250; val.PillarDatas = (PillarData[])(object)new PillarData[2] { new PillarData { Direction = (Directions)2, IsFar = false }, new PillarData { Direction = (Directions)3, IsFar = true } }; val.CompatibleEquipment = new EquipmentData { RequiredTag = "Weapon", Equipments = (IngredientData[])(object)new IngredientData[1] { new IngredientData { SelectorType = (IngredientTypes)0, SelectorValue = TinyTagManager.GetOrMakeTag("LingeringEligible").TagName } } }; val.TimeOfDay = (Vector2[])(object)new Vector2[0]; val.Areas = (AreaEnum[])(object)new AreaEnum[1] { (AreaEnum)506 }; val.Temperature = (TemperatureSteps[])(object)new TemperatureSteps[0]; val.WindAltarActivated = false; val.IsEnchantingGuildRecipe = false; val.EnchantTime = 5f; val.Effects = (SL_EffectTransform[])(object)new SL_EffectTransform[0]; val.AddedDamages = (AdditionalDamage[])(object)new AdditionalDamage[0]; val.StatModifications = (StatModification[])(object)new StatModification[0]; val.FlatDamageAdded = (SL_Damage[])(object)new SL_Damage[0]; val.DamageModifierBonus = (SL_Damage[])(object)new SL_Damage[0]; val.DamageResistanceBonus = (SL_Damage[])(object)new SL_Damage[0]; val.HealthAbsorbRatio = 0f; val.ManaAbsorbRatio = 0f; val.StaminaAbsorbRatio = 0f; val.Indestructible = false; val.TrackDamageRatio = -1f; val.GlobalStatusResistance = 0f; SL_EnchantmentRecipe val2 = val; ((ContentTemplate)val2).ApplyTemplate(); } } public class Doomsayer { public const string ItemName = "Doomsayer"; public const int EnchantID = 2502515; public static void MakeEnchant() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Expected O, but got Unknown //IL_003e: 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_0054: Unknown result type (might be due to invalid IL or missing references) //IL_0055: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Unknown result type (might be due to invalid IL or missing references) //IL_0067: 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_0075: Unknown result type (might be due to invalid IL or missing references) //IL_0082: Unknown result type (might be due to invalid IL or missing references) //IL_00a0: Unknown result type (might be due to invalid IL or missing references) //IL_00a9: 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_00c4: Unknown result type (might be due to invalid IL or missing references) //IL_00c6: Unknown result type (might be due to invalid IL or missing references) //IL_00d0: Unknown result type (might be due to invalid IL or missing references) //IL_00d1: Unknown result type (might be due to invalid IL or missing references) SL_EnchantmentRecipe val = new SL_EnchantmentRecipe(); val.Name = "Doomsayer"; val.Description = "Has a small chance to inflict and spread Impending Doom among your foes."; val.EnchantmentID = 2502515; val.IncenseItemID = 6000230; val.PillarDatas = (PillarData[])(object)new PillarData[2] { new PillarData { Direction = (Directions)0, IsFar = false }, new PillarData { Direction = (Directions)1, IsFar = false } }; val.CompatibleEquipment = new EquipmentData { RequiredTag = "Weapon", Equipments = (IngredientData[])(object)new IngredientData[1] { new IngredientData { SelectorType = (IngredientTypes)0, SelectorValue = TinyTagManager.GetOrMakeTag("Holy").TagName } } }; val.TimeOfDay = (Vector2[])(object)new Vector2[0]; val.Areas = (AreaEnum[])(object)new AreaEnum[1] { (AreaEnum)207 }; val.Temperature = (TemperatureSteps[])(object)new TemperatureSteps[0]; val.WindAltarActivated = false; val.IsEnchantingGuildRecipe = false; val.EnchantTime = 5f; val.Effects = (SL_EffectTransform[])(object)new SL_EffectTransform[0]; val.AddedDamages = (AdditionalDamage[])(object)new AdditionalDamage[0]; val.StatModifications = (StatModification[])(object)new StatModification[0]; val.FlatDamageAdded = (SL_Damage[])(object)new SL_Damage[0]; val.DamageModifierBonus = (SL_Damage[])(object)new SL_Damage[0]; val.DamageResistanceBonus = (SL_Damage[])(object)new SL_Damage[0]; val.HealthAbsorbRatio = 0f; val.ManaAbsorbRatio = 0f; val.StaminaAbsorbRatio = 0f; val.Indestructible = false; val.TrackDamageRatio = -1f; val.GlobalStatusResistance = 0f; SL_EnchantmentRecipe val2 = val; ((ContentTemplate)val2).ApplyTemplate(); } public static void MakeEnchantEffect() { Enchantment enchantmentPrefab = ResourcesPrefabManager.Instance.GetEnchantmentPrefab(2502515); StatusEffect statusEffectPrefab = ResourcesPrefabManager.Instance.GetStatusEffectPrefab("ImpendingDoom"); if (statusEffectPrefab != null) { AddThenSpreadStatus val = ((Component)TinyGameObjectManager.GetOrMake(((Component)enchantmentPrefab).transform, "HitEffects", true, true)).gameObject.AddComponent<AddThenSpreadStatus>(); ((AddStatusEffect)val).Status = statusEffectPrefab; val.Range = 3f; ((AddStatusEffect)val).BaseChancesToContract = 20; } Console.WriteLine("created doomsayer enchant"); } } public class AdamantineIngot { public const string SubfolderName = "AdamantineIngot"; public const string ItemName = "Puresteel Ingot"; public static Item MakeItem() { //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_0011: 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_0027: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_002e: 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_0044: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Expected O, but got Unknown SL_Item val = new SL_Item { Name = "Puresteel Ingot", Target_ItemID = 6600222, New_ItemID = 2501040, EffectBehaviour = (EditBehaviours)1, Description = "A sizable ignot made of puresteel.", SLPackName = CrusadersEquipment.ModFolderName, SubfolderName = "AdamantineIngot" }; ((ContentTemplate)val).ApplyTemplate(); return ResourcesPrefabManager.Instance.GetItemPrefab(val.New_ItemID); } public static Item MakeRecipes() { //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_002e: 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_003a: Unknown result type (might be due to invalid IL or missing references) //IL_004a: Expected O, but got Unknown //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_0057: Unknown result type (might be due to invalid IL or missing references) //IL_005c: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Unknown result type (might be due to invalid IL or missing references) //IL_0063: Unknown result type (might be due to invalid IL or missing references) //IL_0078: Expected O, but got Unknown //IL_007a: Unknown result type (might be due to invalid IL or missing references) //IL_007f: 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_0086: Unknown result type (might be due to invalid IL or missing references) //IL_009b: Expected O, but got Unknown //IL_009d: 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_00a4: Unknown result type (might be due to invalid IL or missing references) //IL_00a9: Unknown result type (might be due to invalid IL or missing references) //IL_00be: Expected O, but got Unknown //IL_00c0: Unknown result type (might be due to invalid IL or missing references) //IL_00c5: 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_00cc: Unknown result type (might be due to invalid IL or missing references) //IL_00e1: Expected O, but got Unknown //IL_00e7: 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) //IL_00f9: Unknown result type (might be due to invalid IL or missing references) //IL_0104: 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_011a: Unknown result type (might be due to invalid IL or missing references) //IL_011c: Unknown result type (might be due to invalid IL or missing references) //IL_0121: Unknown result type (might be due to invalid IL or missing references) //IL_0129: Expected O, but got Unknown string text = "com.ehaugw.crusadersequipment." + "AdamantineIngot".ToLower() + "recipe"; ((ContentTemplate)new SL_Recipe { StationType = (CraftingType)2, Results = new List<ItemQty> { new ItemQty { Quantity = 1, ItemID = 2501040 } }, Ingredients = new List<Ingredient> { new Ingredient { Type = (ActionTypes)1, Ingredient_ItemID = 6200010 }, new Ingredient { Type = (ActionTypes)1, Ingredient_ItemID = 6000170 }, new Ingredient { Type = (ActionTypes)1, Ingredient_ItemID = 6400070 }, new Ingredient { Type = (ActionTypes)1, Ingredient_ItemID = 6400070 } }, UID = text }).ApplyTemplate(); SL_RecipeItem val = new SL_RecipeItem { Name = "Crafting: Puresteel Ingot", Target_ItemID = 5700024, New_ItemID = 2501041, EffectBehaviour = (EditBehaviours)1, RecipeUID = text }; ((ContentTemplate)val).ApplyTemplate(); return ResourcesPrefabManager.Instance.GetItemPrefab(((SL_Item)val).New_ItemID); } } public class RangersHood { public const string SubfolderName = "RangersHood"; public static Item MakeItem() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Expected O, but got Unknown //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Expected O, but got Unknown SL_Equipment val = new SL_Equipment(); ((SL_Item)val).Name = "Ranger's Hood"; ((SL_Item)val).Target_ItemID = 3000133; ((SL_Item)val).New_ItemID = 2501046; ((SL_Item)val).EffectBehaviour = (EditBehaviours)1; ((SL_Item)val).Description = ""; SL_EquipmentStats val2 = new SL_EquipmentStats(); ((SL_ItemStats)val2).BaseValue = 250; ((SL_ItemStats)val2).RawWeight = 1f; ((SL_ItemStats)val2).MaxDurability = 300; val2.Damage_Resistance = new float[9] { 8f, 0f, 20f, 0f, 20f, 20f, 0f, 0f, 0f }; val2.Impact_Resistance = 3f; val2.Damage_Protection = 0f; val2.Damage_Bonus = HolyDamageManager.GetHolyDamageBonusArray(10f); val2.Stamina_Use_Penalty = 0f; val2.Mana_Use_Modifier = 0f; val2.Movement_Penalty = 0f; val2.Pouch_Bonus = 0f; val2.Heat_Protection = 5f; val2.Cold_Protection = 5f; val2.Corruption_Protection = 0f; ((SL_Item)val).StatsHolder = (SL_ItemStats)(object)val2; val.VisualDetectabilityAdd = -15f; ((SL_Item)val).SLPackName = CrusadersEquipment.ModFolderName; ((SL_Item)val).SubfolderName = "RangersHood"; SL_Equipment val3 = val; ((ContentTemplate)val3).ApplyTemplate(); return ResourcesPrefabManager.Instance.GetItemPrefab(((SL_Item)val3).New_ItemID); } public static Item MakeRecipes() { //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_002e: 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_003a: Unknown result type (might be due to invalid IL or missing references) //IL_004a: Expected O, but got Unknown //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_0057: Unknown result type (might be due to invalid IL or missing references) //IL_005c: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Unknown result type (might be due to invalid IL or missing references) //IL_0063: Unknown result type (might be due to invalid IL or missing references) //IL_0078: Expected O, but got Unknown //IL_007a: Unknown result type (might be due to invalid IL or missing references) //IL_007f: 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_0086: Unknown result type (might be due to invalid IL or missing references) //IL_009b: Expected O, but got Unknown //IL_00a1: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: Unknown result type (might be due to invalid IL or missing references) //IL_00b3: Unknown result type (might be due to invalid IL or missing references) //IL_00be: Unknown result type (might be due to invalid IL or missing references) //IL_00c9: 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_00d6: Unknown result type (might be due to invalid IL or missing references) //IL_00db: Unknown result type (might be due to invalid IL or missing references) //IL_00e3: Expected O, but got Unknown string text = "com.ehaugw.crusadersequipment." + "RangersHood".ToLower() + "recipe"; ((ContentTemplate)new SL_Recipe { StationType = (CraftingType)2, Results = new List<ItemQty> { new ItemQty { Quantity = 1, ItemID = 2501046 } }, Ingredients = new List<Ingredient> { new Ingredient { Type = (ActionTypes)1, Ingredient_ItemID = 3000063 }, new Ingredient { Type = (ActionTypes)1, Ingredient_ItemID = 6600070 } }, UID = text }).ApplyTemplate(); SL_RecipeItem val = new SL_RecipeItem { Name = "Crafting: Ranger's Hood", Target_ItemID = 5700024, New_ItemID = 2501047, EffectBehaviour = (EditBehaviours)1, RecipeUID = text }; ((ContentTemplate)val).ApplyTemplate(); return ResourcesPrefabManager.Instance.GetItemPrefab(((SL_Item)val).New_ItemID); } } public class FaraamHelmet { public const string SubfolderName = "FaraamHelmet"; public static Item MakeItem() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Expected O, but got Unknown //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Expected O, but got Unknown SL_Armor val = new SL_Armor(); ((SL_Item)val).Name = "Faraam Helmet"; ((SL_Item)val).Target_ItemID = 3000133; ((SL_Item)val).New_ItemID = 2501045; ((SL_Item)val).EffectBehaviour = (EditBehaviours)1; ((SL_Item)val).Description = ""; SL_EquipmentStats val2 = new SL_EquipmentStats(); ((SL_ItemStats)val2).BaseValue = 1000; ((SL_ItemStats)val2).RawWeight = 8f; ((SL_ItemStats)val2).MaxDurability = 300; val2.Damage_Resistance = new float[9] { 15f, 0f, 0f, 0f, 0f, 0f, 0f, 0f, 0f }; val2.Impact_Resistance = 10f; val2.Damage_Protection = 3f; val2.BarrierProtection = 3f; val2.Stamina_Use_Penalty = 4f; val2.Mana_Use_Modifier = 15f; val2.Movement_Penalty = 9f; val2.Pouch_Bonus = 0f; val2.Heat_Protection = 0f; val2.Cold_Protection = 0f; val2.Corruption_Protection = 5f; ((SL_Item)val).StatsHolder = (SL_ItemStats)(object)val2; ((SL_Item)val).SLPackName = CrusadersEquipment.ModFolderName; ((SL_Item)val).SubfolderName = "FaraamHelmet"; val.Class = (ArmorClass)3; SL_Armor val3 = val; ((ContentTemplate)val3).ApplyTemplate(); return ResourcesPrefabManager.Instance.GetItemPrefab(((SL_Item)val3).New_ItemID); } } public class FaraamLongsword { public const string SubfolderName = "FaraamLongsword"; public const string ItemName = "Faraam Longsword"; public static Item MakeItem() { //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Expected O, but got Unknown //IL_007e: Unknown result type (might be due to invalid IL or missing references) //IL_0083: Unknown result type (might be due to invalid IL or missing references) //IL_0093: Unknown result type (might be due to invalid IL or missing references) //IL_00a3: Unknown result type (might be due to invalid IL or missing references) //IL_00b3: 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_00c8: Unknown result type (might be due to invalid IL or missing references) //IL_00cd: Unknown result type (might be due to invalid IL or missing references) //IL_00d6: Unknown result type (might be due to invalid IL or missing references) //IL_00d8: Unknown result type (might be due to invalid IL or missing references) //IL_00e2: Expected O, but got Unknown //IL_00e8: 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_00fd: Unknown result type (might be due to invalid IL or missing references) //IL_0110: Expected O, but got Unknown //IL_011a: Unknown result type (might be due to invalid IL or missing references) //IL_0121: Expected O, but got Unknown //IL_0169: 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_0179: Unknown result type (might be due to invalid IL or missing references) //IL_0184: 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_019f: Unknown result type (might be due to invalid IL or missing references) //IL_01b3: Expected O, but got Unknown //IL_01fd: Unknown result type (might be due to invalid IL or missing references) //IL_0202: 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_020d: Expected O, but got Unknown //IL_021a: Unknown result type (might be due to invalid IL or missing references) //IL_021f: Unknown result type (might be due to invalid IL or missing references) //IL_0224: Unknown result type (might be due to invalid IL or missing references) //IL_022e: Expected O, but got Unknown float[] array = new float[4] { 5.5f, 35f, 0.8f, 57f }; SL_Weapon val = new SL_Weapon(); ((SL_Item)val).Name = "Faraam Longsword"; ((SL_Item)val).Target_ItemID = 2000010; ((SL_Item)val).New_ItemID = 2501044; ((SL_Item)val).Description = ""; ((SL_Item)val).Tags = TinyTagManager.GetOrMakeTags(new string[4] { "Bastard", "Blade", "Weapon", "Item" }); ((SL_Item)val).StatsHolder = (SL_ItemStats)new SL_WeaponStats { BaseValue = 2000, RawWeight = 9f, MaxDurability = 750, AttackSpeed = array[2], BaseDamage = new List<SL_Damage> { new SL_Damage { Damage = array[3], Type = (Types)0 } }, Impact = array[1], AutoGenerateAttackData = true, StamCost = array[0] }; SL_EffectTransform[] array2 = new SL_EffectTransform[1]; SL_EffectTransform val2 = new SL_EffectTransform(); val2.TransformName = "HitEffects"; val2.Effects = (SL_Effect[])(object)new SL_Effect[0]; array2[0] = val2; ((SL_Item)val).EffectTransforms = (SL_EffectTransform[])(object)array2; val.SwingSound = (SwingSoundWeapon)3; ((SL_Item)val).SLPackName = CrusadersEquipment.ModFolderName; ((SL_Item)val).SubfolderName = "FaraamLongsword"; ((SL_Item)val).ItemVisuals = new SL_ItemVisual { Prefab_Name = "faraam_longsword_Prefab", Prefab_AssetBundle = "faraam_longsword", Prefab_SLPack = CrusadersEquipment.ModFolderName, PositionOffset = new Vector3(-0.03f, 0f, 0f) }; SL_Weapon val3 = val; ((ContentTemplate)val3).ApplyTemplate(); Item itemPrefab = ResourcesPrefabManager.Instance.GetItemPrefab(((SL_Item)val3).New_ItemID); AffectStat val4 = ((Component)TinyGameObjectManager.GetOrMake(((Component)itemPrefab).transform, "Effects", true, true)).gameObject.AddComponent<AffectStat>(); TagSourceSelector[] tags = (TagSourceSelector[])(object)new TagSourceSelector[1] { new TagSourceSelector(TagSourceManager.Instance.GetTag(UID.op_Implicit("359"))) }; val4.AffectedStat = new TagSourceSelector(TagSourceManager.Instance.GetTag(UID.op_Implicit("96"))); val4.Tags = tags; val4.IsModifier = true; val4.Value = 10f; return itemPrefab; } } public class HeavyPlateArmor { public const string SubfolderName = "HeavyPlateArmor"; public static Item MakeItem() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Expected O, but got Unknown //IL_002a: 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_005a: Expected O, but got Unknown SL_Equipment val = new SL_Equipment(); ((SL_Item)val).Name = "Heavy Plate Armor"; ((SL_Item)val).Target_ItemID = 3100003; ((SL_Item)val).New_ItemID = 2502514; ((SL_Item)val).EffectBehaviour = (EditBehaviours)1; ((SL_Item)val).Description = "Heavy armor that adds weight to your weapon swings, passed down by your ancestors."; ((SL_Item)val).Tags = TinyTagManager.GetOrMakeTags(new string[1] { "Armor" }); SL_EquipmentStats val2 = new SL_EquipmentStats(); ((SL_ItemStats)val2).BaseValue = 700; ((SL_ItemStats)val2).RawWeight = 18f; ((SL_ItemStats)val2).MaxDurability = 530; val2.Damage_Resistance = new float[9] { 28f, 0f, 0f, 0f, 0f, 0f, 0f, 0f, 0f }; val2.Damage_Bonus = new float[9] { 5f, 0f, 0f, 0f, 0f, 0f, 0f, 0f, 0f }; val2.Impact_Resistance = 26f; val2.Impact_Bonus = 5f; val2.Damage_Protection = 5f; val2.Stamina_Use_Penalty = 6f; val2.Mana_Use_Modifier = 0f; val2.Movement_Penalty = 10f; val2.Pouch_Bonus = 0f; val2.Heat_Protection = 0f; val2.Cold_Protection = -5f; val2.Corruption_Protection = 0f; ((SL_Item)val).StatsHolder = (SL_ItemStats)(object)val2; ((SL_Item)val).SLPackName = CrusadersEquipment.ModFolderName; ((SL_Item)val).SubfolderName = "HeavyPlateArmor"; SL_Equipment val3 = val; ((ContentTemplate)val3).ApplyTemplate(); TinyItemManager.SetLegacyResult(3100003, 2502514); TinyItemManager.AddEnchantingOption(2502514, 56); return ResourcesPrefabManager.Instance.GetItemPrefab(2502514); } } public class CorruptedLongsword { public const string SubfolderName = "CorruptedLongsword"; public const string ItemName = "Corrupted Longsword"; public static Item MakeItem() { //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Expected O, but got Unknown //IL_0086: Unknown result type (might be due to invalid IL or missing references) //IL_008b: 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_00ab: 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_00c9: Unknown result type (might be due to invalid IL or missing references) //IL_00d0: Unknown result type (might be due to invalid IL or missing references) //IL_00d5: Unknown result type (might be due to invalid IL or missing references) //IL_00de: Unknown result type (might be due to invalid IL or missing references) //IL_00e0: Unknown result type (might be due to invalid IL or missing references) //IL_00ea: Expected O, but got Unknown //IL_00f0: Unknown result type (might be due to invalid IL or missing references) //IL_00fe: Unknown result type (might be due to invalid IL or missing references) //IL_0105: Unknown result type (might be due to invalid IL or missing references) //IL_0118: Expected O, but got Unknown //IL_0144: Unknown result type (might be due to invalid IL or missing references) //IL_014b: Expected O, but got Unknown //IL_0193: Unknown result type (might be due to invalid IL or missing references) //IL_0198: Unknown result type (might be due to invalid IL or missing references) //IL_01a3: Unknown result type (might be due to invalid IL or missing references) //IL_01ae: Unknown result type (might be due to invalid IL or missing references) //IL_01b9: 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_01dd: Expected O, but got Unknown //IL_0227: Unknown result type (might be due to invalid IL or missing references) //IL_022c: Unknown result type (might be due to invalid IL or missing references) //IL_0231: Unknown result type (might be due to invalid IL or missing references) //IL_0237: Expected O, but got Unknown //IL_0244: 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_024e: Unknown result type (might be due to invalid IL or missing references) //IL_0258: Expected O, but got Unknown float[] array = new float[4] { 6f, 35f, 0.8f, 57f }; SL_Weapon val = new SL_Weapon(); ((SL_Item)val).Name = "Corrupted Longsword"; ((SL_Item)val).Target_ItemID = 2000010; ((SL_Item)val).New_ItemID = 2501026; ((SL_Item)val).Description = ""; ((SL_Item)val).Tags = TinyTagManager.GetOrMakeTags(new string[5] { "Bastard", "Blade", "Weapon", "Item", "LingeringEligible" }); ((SL_Item)val).StatsHolder = (SL_ItemStats)new SL_WeaponStats { BaseValue = 2000, RawWeight = 9f, MaxDurability = 750, AttackSpeed = array[2], BaseDamage = new List<SL_Damage> { new SL_Damage { Damage = array[3], Type = (Types)0 } }, Impact = array[1], AutoGenerateAttackData = true, StamCost = array[0] }; val.HealthLeechRatio = 0.02f; val.HealthBurnLeechRatio = 0.02f; SL_EffectTransform[] array2 = new SL_EffectTransform[1]; SL_EffectTransform val2 = new SL_EffectTransform(); val2.TransformName = "HitEffects"; val2.Effects = (SL_Effect[])(object)new SL_Effect[0]; array2[0] = val2; ((SL_Item)val).EffectTransforms = (SL_EffectTransform[])(object)array2; val.SwingSound = (SwingSoundWeapon)3; ((SL_Item)val).SLPackName = CrusadersEquipment.ModFolderName; ((SL_Item)val).SubfolderName = "CorruptedLongsword"; ((SL_Item)val).ItemVisuals = new SL_ItemVisual { Prefab_Name = "corrupted_longsword_Prefab", Prefab_AssetBundle = "corrupted_longsword", Prefab_SLPack = CrusadersEquipment.ModFolderName, PositionOffset = new Vector3(-0.025f, 0f, 0f) }; SL_Weapon val3 = val; ((ContentTemplate)val3).ApplyTemplate(); Item itemPrefab = ResourcesPrefabManager.Instance.GetItemPrefab(((SL_Item)val3).New_ItemID); AffectStat val4 = ((Component)TinyGameObjectManager.GetOrMake(((Component)itemPrefab).transform, "Effects", true, true)).gameObject.AddComponent<AffectStat>(); TagSourceSelector[] tags = (TagSourceSelector[])(object)new TagSourceSelector[1] { new TagSourceSelector(TagSourceManager.Instance.GetTag(UID.op_Implicit("359"))) }; val4.AffectedStat = new TagSourceSelector(TagSourceManager.Instance.GetTag(UID.op_Implicit("96"))); val4.Tags = tags; val4.IsModifier = true; val4.Value = 10f; return itemPrefab; } public static Item MakeRecipes() { //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_002e: 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_003a: Unknown result type (might be due to invalid IL or missing references) //IL_004a: Expected O, but got Unknown //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_0057: Unknown result type (might be due to invalid IL or missing references) //IL_005c: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Unknown result type (might be due to invalid IL or missing references) //IL_0063: Unknown result type (might be due to invalid IL or missing references) //IL_0078: Expected O, but got Unknown //IL_007a: Unknown result type (might be due to invalid IL or missing references) //IL_007f: 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_0086: Unknown result type (might be due to invalid IL or missing references) //IL_009b: Expected O, but got Unknown //IL_009d: 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_00a4: Unknown result type (might be due to invalid IL or missing references) //IL_00a9: Unknown result type (might be due to invalid IL or missing references) //IL_00be: Expected O, but got Unknown //IL_00c0: Unknown result type (might be due to invalid IL or missing references) //IL_00c5: 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_00cc: Unknown result type (might be due to invalid IL or missing references) //IL_00e1: Expected O, but got Unknown //IL_00e7: 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) //IL_00f9: Unknown result type (might be due to invalid IL or missing references) //IL_0104: 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_011a: Unknown result type (might be due to invalid IL or missing references) //IL_011c: Unknown result type (might be due to invalid IL or missing references) //IL_0121: Unknown result type (might be due to invalid IL or missing references) //IL_0129: Expected O, but got Unknown string text = "com.ehaugw.crusadersequipment." + "CorruptedLongsword".ToLower() + "recipe"; ((ContentTemplate)new SL_Recipe { StationType = (CraftingType)2, Results = new List<ItemQty> { new ItemQty { Quantity = 1, ItemID = 2501026 } }, Ingredients = new List<Ingredient> { new Ingredient { Type = (ActionTypes)1, Ingredient_ItemID = 2501038 }, new Ingredient { Type = (ActionTypes)1, Ingredient_ItemID = 6500031 }, new Ingredient { Type = (ActionTypes)1, Ingredient_ItemID = 2501040 }, new Ingredient { Type = (ActionTypes)1, Ingredient_ItemID = 2501040 } }, UID = text }).ApplyTemplate(); SL_RecipeItem val = new SL_RecipeItem { Name = "Crafting: Corrupted Longsword", Target_ItemID = 5700024, New_ItemID = 2501027, EffectBehaviour = (EditBehaviours)1, RecipeUID = text }; ((ContentTemplate)val).ApplyTemplate(); return ResourcesPrefabManager.Instance.GetItemPrefab(((SL_Item)val).New_ItemID); } } public class AncientRelic { public const string SubfolderName = "AncientRelic"; public const string ItemName = "Ancient Relic"; public static Item MakeItem() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Expected O, but got Unknown //IL_002a: Unknown result type (might be due to invalid IL or missing references) SL_Item val = new SL_Item(); val.Name = "Ancient Relic"; val.Target_ItemID = 6600222; val.New_ItemID = 2501038; val.EffectBehaviour = (EditBehaviours)1; val.Description = "Legends has it that a relic like this was lost to a golden lich long time ago."; val.SLPackName = CrusadersEquipment.ModFolderName; val.Tags = TinyTagManager.GetOrMakeTags(new string[4] { "Trinket", "HandsFreeTag", "Relic", "Item" }); val.SubfolderName = "AncientRelic"; SL_Item val2 = val; ((ContentTemplate)val2).ApplyTemplate(); return ResourcesPrefabManager.Instance.GetItemPrefab(val2.New_ItemID); } public static void AddToLightmenderLoot() { //IL_011b: Unknown result type (might be due to invalid IL or missing references) //IL_0122: Expected O, but got Unknown //IL_0122: Unknown result type (might be due to invalid IL or missing references) //IL_0129: Expected O, but got Unknown GameObject val = GameObject.Find("/AISquadManagerStructure/_Statics/LichGold (Passive)_BczAklXU9EebdVVCCn4yHg"); if (!Object.op_Implicit((Object)(object)val)) { return; } Transform obj = val.transform.Find("DialogueTemplate/NPC/DialogueTree"); DialogueTreeController val2 = ((obj != null) ? ((Component)obj).GetComponent<DialogueTreeController>() : null); if (!Object.op_Implicit((Object)(object)val2)) { return; } Graph val3 = ((val2 != null) ? ((GraphOwner)val2).graph : null); if (!Object.op_Implicit((Object)(object)val3) || val3.allNodes == null) { return; } List<Node> allNodes = val3.allNodes; foreach (GiveReward item in allNodes.Where(delegate(Node n) { ActionNode val6 = (ActionNode)(object)((n is ActionNode) ? n : null); int result; if (val6 != null) { ActionTask action = val6.action; GiveReward val7 = (GiveReward)(object)((action is GiveReward) ? action : null); result = ((val7 != null) ? 1 : 0); } else { result = 0; } return (byte)result != 0; }).Select((Func<Node, GiveReward>)((Node n) => (GiveReward)((ActionNode)n).action))) { if (item.ItemReward.Count((ItemQuantity x) => new int[4] { 3000210, 3000212, 3000211, 2130060 }.Contains(x.Item.value.ItemID)) == GetExpectedLightmenderDrops()) { ItemQuantity val4 = new ItemQuantity(); ItemReference val5 = new ItemReference(); val5.ItemID = CrusadersEquipment.Instance.lightMendersRelicInstance.ItemID; val4.Item = new BBParameter<ItemReference>(val5); val4.Quantity = BBParameter<int>.op_Implicit(1); item.ItemReward.Add(val4); } } } private static int GetExpectedLightmenderDrops() { return 4; } } public class CrusadersPlateArmor { public const string SubfolderName = "CrusadersPlateArmor"; public const string ItemName = "Crusader's Plate Armor"; public static Item MakeItem() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Expected O, but got Unknown //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Expected O, but got Unknown SL_Equipment val = new SL_Equipment(); ((SL_Item)val).Name = "Crusader's Plate Armor"; ((SL_Item)val).Target_ItemID = 3100120; ((SL_Item)val).New_ItemID = 2502511; ((SL_Item)val).EffectBehaviour = (EditBehaviours)1; ((SL_Item)val).Description = ""; SL_EquipmentStats val2 = new SL_EquipmentStats(); ((SL_ItemStats)val2).BaseValue = 1000; ((SL_ItemStats)val2).RawWeight = 18f; ((SL_ItemStats)val2).MaxDurability = 375; val2.Damage_Resistance = new float[9] { 20f, 0f, 0f, 0f, 0f, 0f, 0f, 0f, 0f }; val2.Impact_Resistance = 23f; val2.Damage_Protection = 3f; val2.BarrierProtection = 3f; val2.Damage_Bonus = HolyDamageManager.GetHolyDamageBonusArray(10f); val2.Stamina_Use_Penalty = 11f; val2.Mana_Use_Modifier = -10f; val2.Movement_Penalty = 6f; val2.Pouch_Bonus = 0f; val2.Heat_Protection = -10f; val2.Cold_Protection = 0f; val2.Corruption_Protection = 10f; ((SL_Item)val).StatsHolder = (SL_ItemStats)(object)val2; ((SL_Item)val).SLPackName = CrusadersEquipment.ModFolderName; ((SL_Item)val).SubfolderName = "CrusadersPlateArmor"; SL_Equipment val3 = val; ((ContentTemplate)val3).ApplyTemplate(); return ResourcesPrefabManager.Instance.GetItemPrefab(((SL_Item)val3).New_ItemID); } public static Item MakeRecipes() { //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_002e: 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_003a: Unknown result type (might be due to invalid IL or missing references) //IL_004a: Expected O, but got Unknown //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_0057: Unknown result type (might be due to invalid IL or missing references) //IL_005c: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Unknown result type (might be due to invalid IL or missing references) //IL_0063: Unknown result type (might be due to invalid IL or missing references) //IL_0078: Expected O, but got Unknown //IL_007a: Unknown result type (might be due to invalid IL or missing references) //IL_007f: 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_0086: Unknown result type (might be due to invalid IL or missing references) //IL_009b: Expected O, but got Unknown //IL_00a1: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: Unknown result type (might be due to invalid IL or missing references) //IL_00b3: Unknown result type (might be due to invalid IL or missing references) //IL_00be: Unknown result type (might be due to invalid IL or missing references) //IL_00c9: 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_00d6: Unknown result type (might be due to invalid IL or missing references) //IL_00db: Unknown result type (might be due to invalid IL or missing references) //IL_00e3: Expected O, but got Unknown string text = "com.ehaugw.crusadersequipment." + "CrusadersPlateArmor".ToLower() + "recipe"; ((ContentTemplate)new SL_Recipe { StationType = (CraftingType)2, Results = new List<ItemQty> { new ItemQty { Quantity = 1, ItemID = 2502511 } }, Ingredients = new List<Ingredient> { new Ingredient { Type = (ActionTypes)1, Ingredient_ItemID = 3100120 }, new Ingredient { Type = (ActionTypes)1, Ingredient_ItemID = 3000060 } }, UID = text }).ApplyTemplate(); SL_RecipeItem val = new SL_RecipeItem { Name = "Crafting: Crusader's Plate Armor", Target_ItemID = 5700024, New_ItemID = 2502512, EffectBehaviour = (EditBehaviours)1, RecipeUID = text }; ((ContentTemplate)val).ApplyTemplate(); TinyItemManager.AddEnchantingOption(((SL_Item)val).New_ItemID, 48); return ResourcesPrefabManager.Instance.GetItemPrefab(((SL_Item)val).New_ItemID); } } public class CrusadersArmor { public const string SubfolderName = "CrusadersArmor"; public static Item MakeItem() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Expected O, but got Unknown //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Expected O, but got Unknown SL_Equipment val = new SL_Equipment(); ((SL_Item)val).Name = "Crusader's Armor"; ((SL_Item)val).Target_ItemID = 3100110; ((SL_Item)val).New_ItemID = 2501014; ((SL_Item)val).EffectBehaviour = (EditBehaviours)1; ((SL_Item)val).Description = ""; SL_EquipmentStats val2 = new SL_EquipmentStats(); ((SL_ItemStats)val2).BaseValue = 700; ((SL_ItemStats)val2).RawWeight = 10f; ((SL_ItemStats)val2).MaxDurability = 350; val2.Damage_Resistance = new float[9] { 21f, 0f, 20f, 0f, 0f, 0f, 0f, 0f, 0f }; val2.Impact_Resistance = 10f; val2.Damage_Protection = 2f; val2.Damage_Bonus = HolyDamageManager.GetHolyDamageBonusArray(10f); val2.Stamina_Use_Penalty = 0f; val2.Mana_Use_Modifier = 0f; val2.Movement_Penalty = 0f; val2.Pouch_Bonus = 0f; val2.Heat_Protection = 0f; val2.Cold_Protection = 0f; val2.Corruption_Protection = 0f; ((SL_Item)val).StatsHolder = (SL_ItemStats)(object)val2; ((SL_Item)val).SLPackName = CrusadersEquipment.ModFolderName; ((SL_Item)val).SubfolderName = "CrusadersArmor"; SL_Equipment val3 = val; ((ContentTemplate)val3).ApplyTemplate(); return ResourcesPrefabManager.Instance.GetItemPrefab(((SL_Item)val3).New_ItemID); } public static Item MakeRecipes() { //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_002e: 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_003a: Unknown result type (might be due to invalid IL or missing references) //IL_004a: Expected O, but got Unknown //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_0057: Unknown result type (might be due to invalid IL or missing references) //IL_005c: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Unknown result type (might be due to invalid IL or missing references) //IL_0063: Unknown result type (might be due to invalid IL or missing references) //IL_0078: Expected O, but got Unknown //IL_007a: Unknown result type (might be due to invalid IL or missing references) //IL_007f: 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_0086: Unknown result type (might be due to invalid IL or missing references) //IL_009b: Expected O, but got Unknown //IL_009d: 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_00a4: Unknown result type (might be due to invalid IL or missing references) //IL_00a9: Unknown result type (might be due to invalid IL or missing references) //IL_00be: Expected O, but got Unknown //IL_00c4: Unknown result type (might be due to invalid IL or missing references) //IL_00d1: Unknown result type (might be due to invalid IL or missing references) //IL_00d6: Unknown result type (might be due to invalid IL or missing references) //IL_00e1: Unknown result type (might be due to invalid IL or missing references) //IL_00ec: Unknown result type (might be due to invalid IL or missing references) //IL_00f7: Unknown result type (might be due to invalid IL or missing references) //IL_00f9: Unknown result type (might be due to invalid IL or missing references) //IL_00fe: Unknown result type (might be due to invalid IL or missing references) //IL_0106: Expected O, but got Unknown string text = "com.ehaugw.crusadersequipment." + "CrusadersArmor".ToLower() + "recipe"; ((ContentTemplate)new SL_Recipe { StationType = (CraftingType)2, Results = new List<ItemQty> { new ItemQty { Quantity = 1, ItemID = 2501014 } }, Ingredients = new List<Ingredient> { new Ingredient { Type = (ActionTypes)1, Ingredient_ItemID = 3100110 }, new Ingredient { Type = (ActionTypes)1, Ingredient_ItemID = 3000060 }, new Ingredient { Type = (ActionTypes)1, Ingredient_ItemID = 2501021 } }, UID = text }).ApplyTemplate(); SL_RecipeItem val = new SL_RecipeItem { Name = "Crafting: Crusader's Armor", Target_ItemID = 5700024, New_ItemID = 2501025, EffectBehaviour = (EditBehaviours)1, RecipeUID = text }; ((ContentTemplate)val).ApplyTemplate(); TinyItemManager.AddEnchantingOption(((SL_Item)val).New_ItemID, 48); return ResourcesPrefabManager.Instance.GetItemPrefab(((SL_Item)val).New_ItemID); } } public class CrusadersBoots { public const string SubfolderName = "CrusadersBoots"; public static Item MakeItem() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Expected O, but got Unknown //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Expected O, but got Unknown SL_Equipment val = new SL_Equipment(); ((SL_Item)val).Name = "Crusader's Boots"; ((SL_Item)val).Target_ItemID = 3000062; ((SL_Item)val).New_ItemID = 2501035; ((SL_Item)val).EffectBehaviour = (EditBehaviours)1; ((SL_Item)val).Description = ""; SL_EquipmentStats val2 = new SL_EquipmentStats(); ((SL_ItemStats)val2).BaseValue = 300; ((SL_ItemStats)val2).RawWeight = 3f; ((SL_ItemStats)val2).MaxDurability = 250; val2.Damage_Resistance = new float[9] { 10f, 0f, 10f, 0f, 0f, 0f, 0f, 0f, 0f }; val2.Impact_Resistance = 6f; val2.Damage_Protection = 0f; val2.Damage_Bonus = new float[9]; val2.Stamina_Use_Penalty = 0f; val2.Mana_Use_Modifier = 0f; val2.Movement_Penalty = -10f; val2.Pouch_Bonus = 0f; val2.Heat_Protection = 0f; val2.Cold_Protection = 0f; val2.Corruption_Protection = 0f; ((SL_Item)val).StatsHolder = (SL_ItemStats)(object)val2; ((SL_Item)val).SLPackName = CrusadersEquipment.ModFolderName; ((SL_Item)val).SubfolderName = "CrusadersBoots"; SL_Equipment val3 = val; ((ContentTemplate)val3).ApplyTemplate(); return ResourcesPrefabManager.Instance.GetItemPrefab(((SL_Item)val3).New_ItemID); } public static Item MakeRecipes() { //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_002e: 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_003a: Unknown result type (might be due to invalid IL or missing references) //IL_004a: Expected O, but got Unknown //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_0057: Unknown result type (might be due to invalid IL or missing references) //IL_005c: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Unknown result type (might be due to invalid IL or missing references) //IL_0063: Unknown result type (might be due to invalid IL or missing references) //IL_0078: Expected O, but got Unknown //IL_007a: Unknown result type (might be due to invalid IL or missing references) //IL_007f: 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_0086: Unknown result type (might be due to invalid IL or missing references) //IL_009b: Expected O, but got Unknown //IL_009d: 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_00a4: Unknown result type (might be due to invalid IL or missing references) //IL_00a9: Unknown result type (might be due to invalid IL or missing references) //IL_00be: Expected O, but got Unknown //IL_00c4: Unknown result type (might be due to invalid IL or missing references) //IL_00d1: Unknown result type (might be due to invalid IL or missing references) //IL_00d6: Unknown result type (might be due to invalid IL or missing references) //IL_00e1: Unknown result type (might be due to invalid IL or missing references) //IL_00ec: Unknown result type (might be due to invalid IL or missing references) //IL_00f7: Unknown result type (might be due to invalid IL or missing references) //IL_00f9: Unknown result type (might be due to invalid IL or missing references) //IL_00fe: Unknown result type (might be due to invalid IL or missing references) //IL_0106: Expected O, but got Unknown string text = "com.ehaugw.crusadersequipment." + "CrusadersBoots".ToLower() + "recipe"; ((ContentTemplate)new SL_Recipe { StationType = (CraftingType)2, Results = new List<ItemQty> { new ItemQty { Quantity = 1, ItemID = 2501035 } }, Ingredients = new List<Ingredient> { new Ingredient { Type = (ActionTypes)1, Ingredient_ItemID = 3000205 }, new Ingredient { Type = (ActionTypes)1, Ingredient_ItemID = 3000062 }, new Ingredient { Type = (ActionTypes)1, Ingredient_ItemID = 2501021 } }, UID = text }).ApplyTemplate(); SL_RecipeItem val = new SL_RecipeItem { Name = "Crafting: Crusader's Boots", Target_ItemID = 5700024, New_ItemID = 2501036, EffectBehaviour = (EditBehaviours)1, RecipeUID = text }; ((ContentTemplate)val).ApplyTemplate(); TinyItemManager.AddEnchantingOption(((SL_Item)val).New_ItemID, 50); return ResourcesPrefabManager.Instance.GetItemPrefab(((SL_Item)val).New_ItemID); } } public class CrusadersHood { public const string SubfolderName = "CrusadersHood"; public static Item MakeItem() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Expected O, but got Unknown //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Expected O, but got Unknown SL_Equipment val = new SL_Equipment(); ((SL_Item)val).Name = "Crusader's Hood"; ((SL_Item)val).Target_ItemID = 3000133; ((SL_Item)val).New_ItemID = 2501033; ((SL_Item)val).EffectBehaviour = (EditBehaviours)1; ((SL_Item)val).Description = ""; SL_EquipmentStats val2 = new SL_EquipmentStats(); ((SL_ItemStats)val2).BaseValue = 250; ((SL_ItemStats)val2).RawWeight = 1f; ((SL_ItemStats)val2).MaxDurability = 300; val2.Damage_Resistance = new float[9] { 10f, 0f, 10f, 0f, 0f, 0f, 0f, 0f, 0f }; val2.Impact_Resistance = 10f; val2.Damage_Protection = 1f; val2.Damage_Bonus = HolyDamageManager.GetHolyDamageBonusArray(10f); val2.Stamina_Use_Penalty = 0f; val2.Mana_Use_Modifier = 0f; val2.Movement_Penalty = 0f; val2.Pouch_Bonus = 0f; val2.Heat_Protection = 0f; val2.Cold_Protection = 0f; val2.Corruption_Protection = 15f; ((SL_Item)val).StatsHolder = (SL_ItemStats)(object)val2; ((SL_Item)val).SLPackName = CrusadersEquipment.ModFolderName; ((SL_Item)val).SubfolderName = "CrusadersHood"; SL_Equipment val3 = val; ((ContentTemplate)val3).ApplyTemplate(); return ResourcesPrefabManager.Instance.GetItemPrefab(((SL_Item)val3).New_ItemID); } public static Item MakeRecipes() { //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_002e: 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_003a: Unknown result type (might be due to invalid IL or missing references) //IL_004a: Expected O, but got Unknown //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_0057: Unknown result type (might be due to invalid IL or missing references) //IL_005c: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Unknown result type (might be due to invalid IL or missing references) //IL_0063: Unknown result type (might be due to invalid IL or missing references) //IL_0078: Expected O, but got Unknown //IL_007a: Unknown result type (might be due to invalid IL or missing references) //IL_007f: 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_0086: Unknown result type (might be due to invalid IL or missing references) //IL_009b: Expected O, but got Unknown //IL_00a1: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: Unknown result type (might be due to invalid IL or missing references) //IL_00b3: Unknown result type (might be due to invalid IL or missing references) //IL_00be: Unknown result type (might be due to invalid IL or missing references) //IL_00c9: 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_00d6: Unknown result type (might be due to invalid IL or missing references) //IL_00db: Unknown result type (might be due to invalid IL or missing references) //IL_00e3: Expected O, but got Unknown string text = "com.ehaugw.crusadersequipment." + "CrusadersHood".ToLower() + "recipe"; ((ContentTemplate)new SL_Recipe { StationType = (CraftingType)2, Results = new List<ItemQty> { new ItemQty { Quantity = 1, ItemID = 2501033 } }, Ingredients = new List<Ingredient> { new Ingredient { Type = (ActionTypes)1, Ingredient_ItemID = 3000063 }, new Ingredient { Type = (ActionTypes)1, Ingredient_ItemID = 2501021 } }, UID = text }).ApplyTemplate(); SL_RecipeItem val = new SL_RecipeItem { Name = "Crafting: Crusader's Hood", Target_ItemID = 5700024, New_ItemID = 2501034, EffectBehaviour = (EditBehaviours)1, RecipeUID = text }; ((ContentTemplate)val).ApplyTemplate(); TinyItemManager.AddEnchantingOption(((SL_Item)val).New_ItemID, 49); return ResourcesPrefabManager.Instance.GetItemPrefab(((SL_Item)val).New_ItemID); } } public class CrusadersRoundShield { public const string SubfolderName = "CrusadersRoundShield"; public static Item MakeItem() { //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_0011: 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_0027: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_002e: 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_0044: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Expected O, but got Unknown SL_Weapon val = new SL_Weapon { Name = "Crusader's Round Shield", Target_ItemID = 2300000, New_ItemID = 2501020, EffectBehaviour = (EditBehaviours)1, Description = "A basic shield of wood and iron that has been painted white.", SLPackName = CrusadersEquipment.ModFolderName, SubfolderName = "CrusadersRoundShield" }; ((ContentTemplate)val).ApplyTemplate(); return ResourcesPrefabManager.Instance.GetItemPrefab(((SL_Item)val).New_ItemID); } public static Item MakeRecipes() { //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_002e: 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_003a: Unknown result type (might be due to invalid IL or missing references) //IL_004a: Expected O, but got Unknown //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_0057: Unknown result type (might be due to invalid IL or missing references) //IL_005c: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Unknown result type (might be due to invalid IL or missing references) //IL_0063: Unknown result type (might be due to invalid IL or missing references) //IL_0078: Expected O, but got Unknown //IL_007a: Unknown result type (might be due to invalid IL or missing references) //IL_007f: 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_0086: Unknown result type (might be due to invalid IL or missing references) //IL_009b: Expected O, but got Unknown //IL_00a1: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: Unknown result type (might be due to invalid IL or missing references) //IL_00b3: Unknown result type (might be due to invalid IL or missing references) //IL_00be: Unknown result type (might be due to invalid IL or missing references) //IL_00c9: 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_00d6: Unknown result type (might be due to invalid IL or missing references) //IL_00db: Unknown result type (might be due to invalid IL or missing references) //IL_00e3: Expected O, but got Unknown string text = "com.ehaugw.crusadersequipment." + "CrusadersRoundShield".ToLower() + "recipe"; ((ContentTemplate)new SL_Recipe { StationType = (CraftingType)2, Results = new List<ItemQty> { new ItemQty { Quantity = 1, ItemID = 2501020 } }, Ingredients = new List<Ingredient> { new Ingredient { Type = (ActionTypes)1, Ingredient_ItemID = 2300000 }, new Ingredient { Type = (ActionTypes)1, Ingredient_ItemID = 2501021 } }, UID = text }).ApplyTemplate(); SL_RecipeItem val = new SL_RecipeItem { Name = "Crafting: Crusader's Round Shield", Target_ItemID = 5700024, New_ItemID = 2501024, EffectBehaviour = (EditBehaviours)1, RecipeUID = text }; ((ContentTemplate)val).ApplyTemplate(); return ResourcesPrefabManager.Instance.GetItemPrefab(((SL_Item)val).New_ItemID); } } public class CrusadersShield { public const string SubfolderName = "CrusadersShield"; public static Item MakeItem() { //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_0011: 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_0027: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_002e: 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_0044: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Expected O, but got Unknown SL_Weapon val = new SL_Weapon { Name = "Crusader's Shield", Target_ItemID = 2300130, New_ItemID = 2501015, EffectBehaviour = (EditBehaviours)1, Description = "This was originally a Blood-red shield used by the leaders of northern tribes, but it was later painted to indicate affiliation to Elatt.", SLPackName = CrusadersEquipment.ModFolderName, SubfolderName = "CrusadersShield" }; ((ContentTemplate)val).ApplyTemplate(); return ResourcesPrefabManager.Instance.GetItemPrefab(((SL_Item)val).New_ItemID); } public static Item MakeRecipes() { //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_002e: 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_003a: Unknown result type (might be due to invalid IL or missing references) //IL_004a: Expected O, but got Unknown //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_0057: Unknown result type (might be due to invalid IL or missing references) //IL_005c: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Unknown result type (might be due to invalid IL or missing references) //IL_0063: Unknown result type (might be due to invalid IL or missing references) //IL_0078: Expected O, but got Unknown //IL_007a: Unknown result type (might be due to invalid IL or missing references) //IL_007f: 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_0086: Unknown result type (might be due to invalid IL or missing references) //IL_009b: Expected O, but got Unknown //IL_00a1: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: Unknown result type (might be due to invalid IL or missing references) //IL_00b3: Unknown result type (might be due to invalid IL or missing references) //IL_00be: Unknown result type (might be due to invalid IL or missing references) //IL_00c9: 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_00d6: Unknown result type (might be due to invalid IL or missing references) //IL_00db: Unknown result type (might be due to invalid IL or missing references) //IL_00e3: Expected O, but got Unknown string text = "com.ehaugw.crusadersequipment." + "CrusadersShield".ToLower() + "recipe"; ((ContentTemplate)new SL_Recipe { StationType = (CraftingType)2, Results = new List<ItemQty> { new ItemQty { Quantity = 1, ItemID = 2501015 } }, Ingredients = new List<Ingredient> { new Ingredient { Type = (ActionTypes)1, Ingredient_ItemID = 2300130 }, new Ingredient { Type = (ActionTypes)1, Ingredient_ItemID = 2501021 } }, UID = text }).ApplyTemplate(); SL_RecipeItem val = new SL_RecipeItem { Name = "Crafting: Crusader's Shield", Target_ItemID = 5700024, New_ItemID = 2501023, EffectBehaviour = (EditBehaviours)1, RecipeUID = text }; ((ContentTemplate)val).ApplyTemplate(); return ResourcesPrefabManager.Instance.GetItemPrefab(((SL_Item)val).New_ItemID); } } public class PuresteelLongsword { public const string SubfolderName = "PuresteelLongsword"; public const string ItemName = "Puresteel Longsword"; public static Item MakeItem() { //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Expected O, but got Unknown //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_00ab: 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_00cb: Unknown result type (might be due to invalid IL or missing references) //IL_00d9: Unknown result type (might be due to invalid IL or missing references) //IL_00e0: Unknown result type (might be due to invalid IL or missing references) //IL_00e5: 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_00f0: Unknown result type (might be due to invalid IL or missing references) //IL_00fa: Expected O, but got Unknown //IL_0100: Unknown result type (might be due to invalid IL or missing references) //IL_010e: Unknown result type (might be due to invalid IL or missing references) //IL_0115: Unknown result type (might be due to invalid IL or missing references) //IL_0128: Expected O, but got Unknown //IL_0132: Unknown result type (might be due to invalid IL or missing references) //IL_0139: Expected O, but got Unknown //IL_0181: Unknown result type (might be due to invalid IL or missing references) //IL_0186: Unknown result type (might be due to invalid IL or missing references) //IL_0191: 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_01a7: Unknown result type (might be due to invalid IL or missing references) //IL_01b7: Unknown result type (might be due to invalid IL or missing references) //IL_01cb: Expected O, but got Unknown //IL_0215: Unknown result type (might be due to invalid IL or missing references) //IL_021a: Unknown result type (might be due to invalid IL or missing references) //IL_021f: Unknown result type (might be due to invalid IL or missing references) //IL_0225: Expected O, but got Unknown //IL_0232: 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_023c: Unknown result type (might be due to invalid IL or missing references) //IL_0246: Expected O, but got Unknown float[] array = new float[4] { 5.2f, 30f, 0.9f, 48f }; SL_Weapon val = new SL_Weapon(); ((SL_Item)val).Name = "Puresteel Longsword"; ((SL_Item)val).Target_ItemID = 2000010; ((SL_Item)val).New_ItemID = 2501029; ((SL_Item)val).Description = ""; ((SL_Item)val).Tags = TinyTagManager.GetOrMakeTags(new string[7] { "Bastard", "Holy", "Blade", "Weapon", "Item", "MaulShoveTag", "LingeringEligible" }); ((SL_Item)val).StatsHolder = (SL_ItemStats)new SL_WeaponStats { BaseValue = 2000, RawWeight = 4.5f, MaxDurability = 650, AttackSpeed = array[2], BaseDamage = new List<SL_Damage> { new SL_Damage { Damage = array[3], Type = (Types)0 } }, Impact = array[1], AutoGenerateAttackData = true, StamCost = array[0] }; SL_EffectTransform[] array2 = new SL_EffectTransform[1]; SL_EffectTransform val2 = new SL_EffectTransform(); val2.TransformName = "HitEffects"; val2.Effects = (SL_Effect[])(object)new SL_Effect[0]; array2[0] = val2; ((SL_Item)val).EffectTransforms = (SL_EffectTransform[])(object)array2; val.SwingSound = (SwingSoundWeapon)3; ((SL_Item)val).SLPackName = CrusadersEquipment.ModFolderName; ((SL_Item)val).SubfolderName = "PuresteelLongsword"; ((SL_Item)val).ItemVisuals = new SL_ItemVisual { Prefab_Name = "puresteel_longsword_Prefab", Prefab_AssetBundle = "puresteel_longsword", Prefab_SLPack = CrusadersEquipment.ModFolderName, PositionOffset = new Vector3(-0.03f, 0f, 0f) }; SL_Weapon val3 = val; ((ContentTemplate)val3).ApplyTemplate(); Item itemPrefab = ResourcesPrefabManager.Instance.GetItemPrefab(((SL_Item)val3).New_ItemID); AffectStat val4 = ((Component)TinyGameObjectManager.GetOrMake(((Component)itemPrefab).transform, "Effects", true, true)).gameObject.AddComponent<AffectStat>(); TagSourceSelector[] tags = (TagSourceSelector[])(object)new TagSourceSelector[1] { new TagSourceSelector(TagSourceManager.Instance.GetTag(UID.op_Implicit("359"))) }; val4.AffectedStat = new TagSourceSelector(TagSourceManager.Instance.GetTag(UID.op_Implicit("96"))); val4.Tags = tags; val4.IsModifier = true; val4.Value = 10f; return itemPrefab; } public static Item MakeRecipes() { //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_002e: 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_003a: Unknown result type (might be due to invalid IL or missing references) //IL_004a: Expected O, but got Unknown //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_0057: Unknown result type (might be due to invalid IL or missing references) //IL_005c: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Unknown result type (might be due to invalid IL or missing references) //IL_0063: Unknown result type (might be due to invalid IL or missing references) //IL_0078: Expected O, but got Unknown //IL_007a: Unknown result type (might be due to invalid IL or missing references) //IL_007f: 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_0086: Unknown result type (might be due to invalid IL or missing references) //IL_009b: Expected O, but got Unknown //IL_009d: 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_00a4: Unknown result type (might be due to invalid IL or missing references) //IL_00a9: Unknown result type (might be due to invalid IL or missing references) //IL_00be: Expected O, but got Unknown //IL_00c0: Unknown result type (might be due to invalid IL or missing references) //IL_00c5: 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_00cc: Unknown result type (might be due to invalid IL or missing references) //IL_00e1: Expected O, but got Unknown //IL_00e7: 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) //IL_00f9: Unknown result type (might be due to invalid IL or missing references) //IL_0104: 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_011a: Unknown result type (might be due to invalid IL or missing references) //IL_011c: Unknown result type (might be due to invalid IL or missing references) //IL_0121: Unknown result type (might be due to invalid IL or missing references) //IL_0129: Expected O, but got Unknown string text = "com.ehaugw.crusadersequipment." + "PuresteelLongsword".ToLower() + "recipe"; ((ContentTemplate)new SL_Recipe { StationType = (CraftingType)2, Results = new List<ItemQty> { new ItemQty { Quantity = 1, ItemID = 2501029 } }, Ingredients = new List<Ingredient> { new Ingredient { Type = (ActionTypes)1, Ingredient_ItemID = 2501038 }, new Ingredient { Type = (ActionTypes)1, Ingredient_ItemID = 6300030 }, new Ingredient { Type = (ActionTypes)1, Ingredient_ItemID = 2501040 }, new Ingredient { Type = (ActionTypes)1, Ingredient_ItemID = 2501040 } }, UID = text }).ApplyTemplate(); SL_RecipeItem val = new SL_RecipeItem { Name = "Crafting: Puresteel Longsword", Target_ItemID = 5700024, New_ItemID = 2501028, EffectBehaviour = (EditBehaviours)1, RecipeUID = text }; ((ContentTemplate)val).ApplyTemplate(); return ResourcesPrefabManager.Instance.GetItemPrefab(((SL_Item)val).New_ItemID); } } public class HolyWaterItem { public const string SubfolderName = "HolyWater"; public const string ItemName = "Holy Water"; public static Item MakeItem() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Expected O, but got Unknown //IL_0014: Unknown result type (might be due to invalid IL or missing references) //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_0050: Unknown result type (might be due to invalid IL or missing references) //IL_0061: Expected O, but got Unknown //IL_006a: Unknown result type (might be due to invalid IL or missing references) //IL_0071: Expected O, but got Unknown //IL_0087: Unknown result type (might be due to invalid IL or missing references) //IL_008c: Unknown result type (might be due to invalid IL or missing references) //IL_0097: 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_00ab: Expected O, but got Unknown SL_Item val = new SL_Item(); val.Name = "Holy Water"; val.EffectBehaviour = (EditBehaviours)1; val.Target_ItemID = 4300100; val.New_ItemID = 2501031; val.Description = "The drinker becomes Blessed and experiences a short Burst of Divinity."; val.StatsHolder = new SL_ItemStats { RawWeight = 0.3f, BaseValue = 4 }; SL_EffectTransform[] array = new SL_EffectTransform[1]; SL_EffectTransform val2 = new SL_EffectTransform(); val2.TransformName = "Effects"; val2.Effects = (SL_Effect[])(object)new SL_Effect[1] { (SL_Effect)new SL_AddBoonEffect { StatusEffect = "Bless", AmplifiedEffect = "Bless Amplified", ChanceToContract = 100 } }; array[0] = val2; val.EffectTransforms = (SL_EffectTransform[])(object)array; val.SLPackName = CrusadersEquipment.ModFolderName; val.SubfolderName = "HolyWater"; SL_Item val3 = val; ((ContentTemplate)val3).ApplyTemplate(); Item itemPrefab = ResourcesPrefabManager.Instance.GetItemPrefab(val3.New_ItemID); StatusEffect statusEffectPrefab = ResourcesPrefabManager.Instance.GetStatusEffectPrefab("BurstOfDivinity"); if (statusEffectPrefab != null) { AddStatusEffect val4 = ((Component)TinyGameObjectManager.GetOrMake(((Component)itemPrefab).transform, "Effects", true, true)).gameObject.AddComponent<AddStatusEffect>(); val4.Status = statusEffectPrefab; val4.BaseChancesToContract = 100; } return itemPrefab; } public static Item MakeRecipe() { //IL_0010: 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_0020: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_002e: 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_003a: Unknown result type (might be due to invalid IL or missing references) //IL_004a: Expected O, but got Unknown //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_0057: Unknown result type (might be due to invalid IL or missing references) //IL_005c: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Unknown result type (might be due to invalid IL or missing references) //IL_0063: Unknown result type (might be due to invalid IL or missing references) //IL_0073: Expected O, but got Unknown //IL_0075: Unknown result type (might be due to invalid IL or missing references) //IL_007a: 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_0081: Unknown result type (might be due to invalid IL or missing references) //IL_0096: Expected O, but got Unknown //IL_0098: Unknown result type (might be due to invalid IL or missing references) //IL_009d: 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_00a4: Unknown result type (might be due to invalid IL or missing references) //IL_00b9: Expected O, but got Unknown //IL_00bf: Unknown result type (might be due to invalid IL or missing references) //IL_00cc: Unknown result type (might be due to invalid IL or missing references) //IL_00d1: Unknown result type (might be due to invalid IL or missing references) //IL_00dc: Unknown result type (might be due to invalid IL or missing references) //IL_00e7: Unknown result type (might be due to invalid IL or missing references) //IL_00f2: 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) //IL_00f9: Unknown result type (might be due to invalid IL or missing references) //IL_0101: Expected O, but got Unknown string text = UID.op_Implicit(TinyUIDManager.MakeUID("Holy Water", "com.ehaugw.crusadersequipment", "Recipe")); ((ContentTemplate)new SL_Recipe { StationType = (CraftingType)0, Results = new List<ItemQty> { new ItemQty { Quantity = 5, ItemID = 2501031 } }, Ingredients = new List<Ingredient> { new Ingredient { Type = (ActionTypes)0, Ingredient_Tag = "Water" }, new Ingredient { Type = (ActionTypes)1, Ingredient_ItemID = 6000010 }, new Ingredient { Type = (ActionTypes)1, Ingredient_ItemID = 6600040 } }, UID = text }).ApplyTemplate(); SL_RecipeItem val = new SL_RecipeItem { Name = "Crafting: Holy Water", Target_ItemID = 5700076, New_ItemID = 2501032, EffectBehaviour = (EditBehaviours)1, RecipeUID = text }; ((ContentTemplate)val).ApplyTemplate(); return ResourcesPrefabManager.Instance.GetItemPrefab(((SL_Item)val).New_ItemID); } } [BepInPlugin("com.ehaugw.crusadersequipment", "Crusaders Equipment", "3.0.6")] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency("com.ehaugw.tinyhelper", "4.3.4")] [BepInDependency("com.ehaugw.impendingdoom", "1.0.0")] [BepInDependency("com.ehaugw.holydamagemanager", "1.0.0")] public class CrusadersEquipment : BaseUnityPlugin { public static CrusadersEquipment Instance; public const string GUID = "com.ehaugw.crusadersequipment"; public const string VERSION = "3.0.6"; public const string NAME = "Crusaders Equipment"; public static string ModFolderName = Directory.GetParent(typeof(CrusadersEquipment).Assembly.Location).Name.ToString(); public Item holyWaterInstance; public Item holyWaterRecipeInstance; public Item corruptedLongswordInstance; public Item puresteelLongswordInstance; public Item lightMendersRelicInstance; public Item adamantineIngotInstance; public Item blessedLongswordRecipeInstance; public Item corruptedLongswordRecipeInstance; public Item puresteelLongswordRecipeInstance; public Item adamantineIngotRecipeInstance; public Item crusadersArmorInstance; public Item crusadersPlateArmorInstance; public Item crusadersRoundShieldInstance; public Item crusadersShieldInstance; public Item thickWhitePaintInstance; public Item crusadersHoodInstance; public Item crusadersBootsInstance; public Item thickWhitePaintRecipeInstance; public Item crusadersShieldRecipeInstance; public Item crusadersRoundShieldRecipeInstance; public Item crusadersArmorRecipeInstance; public Item crusadersPlateArmorRecipeInstance; public Item crusadersHoodRecipeInstance; public Item crusadersBootsRecipeInstance; public Item zealotsArmorInstance; public Item zealotsBootsInstance; public Item heavyPlateArmorInstance; public Trainer altarTrainer; internal void Awake() { //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_0048: Expected O, but got Unknown Instance = this; SL.BeforePacksLoaded += OnBeforePacksLoaded; SL.OnPacksLoaded += OnPackLoaded; SL.OnSceneLoaded += OnSceneLoadedEquipment; Harmony val = new Harmony("com.ehaugw.crusadersequipment"); val.PatchAll(); Doomsayer.MakeEnchant(); Lingering.MakeEnchant(); } private void OnBeforePacksLoaded() { } private void OnPackLoaded() { corruptedLongswordInstance = CorruptedLongsword.MakeItem(); puresteelLongswordInstance = PuresteelLongsword.MakeItem(); lightMendersRelicInstance = AncientRelic.MakeItem(); adamantineIngotInstance = AdamantineIngot.MakeItem(); corruptedLongswordRecipeInstance = CorruptedLongsword.MakeRecipes(); puresteelLongswordRecipeInstance = PuresteelLongsword.MakeRecipes(); adamantineIngotRecipeInstance = AdamantineIngot.MakeRecipes(); holyWaterInstance = HolyWaterItem.MakeItem(); holyWaterRecipeInstance = HolyWaterItem.MakeRecipe(); crusadersArmorInstance = CrusadersArmor.MakeItem(); crusadersPlateArmorInstance = CrusadersPlateArmor.MakeItem(); crusadersHoodInstance = CrusadersHood.MakeItem(); crusadersBootsInstance = CrusadersBoots.MakeItem(); crusadersRoundShieldInstance = CrusadersRoundShield.MakeItem(); crusadersShieldInstance = CrusadersShield.MakeItem(); thickWhitePaintInstance = ThickWhitePaint.MakeItem(); zealotsArmorInstance = ZealotsArmor.MakeItem(); zealotsBootsInstance = ZealotsBoots.MakeItem(); heavyPlateArmorInstance = HeavyPlateArmor.MakeItem(); crusadersArmorRecipeInstance = CrusadersArmor.MakeRecipes(); crusadersPlateArmorRecipeInstance = CrusadersPlateArmor.MakeRecipes(); crusadersHoodRecipeInstance = CrusadersHood.MakeRecipes(); crusadersBootsRecipeInstance = CrusadersBoots.MakeRecipes(); crusadersRoundShieldRecipeInstance = CrusadersRoundShield.MakeRecipes(); crusadersShieldRecipeInstance = CrusadersShield.MakeRecipes(); thickWhitePaintRecipeInstance = ThickWhitePaint.MakeRecipes(); MakeGoldToSilverRecipe(); FaraamLongsword.MakeItem(); FaraamHelmet.MakeItem(); RangersHood.MakeItem(); RangersHood.MakeRecipes(); Doomsayer.MakeEnchantEffect(); RadiantSpark.Init(); } private void MakeGoldToSilverRecipe() { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000c: 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_0013: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_0037: Expected O, but got Unknown //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_0044: 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_004b: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_0065: Expected O, but got Unknown //IL_006b: Unknown result type (might be due to invalid IL or missing references) string uID = "com.ehaugw.crusadersequipment.goldingottosilverrecipe"; ((ContentTemplate)new SL_Recipe { StationType = (CraftingType)2, Results = new List<ItemQty> { new ItemQty { Quantity = 100, ItemID = 9000010 } }, Ingredients = new List<Ingredient> { new Ingredient { Type = (ActionTypes)1, Ingredient_ItemID = 6300030 } }, UID = uID }).ApplyTemplate(); } private void OnSceneLoadedEquipment() { //IL_00ff: Unknown result type (might be due to invalid IL or missing references) //IL_0104: Unknown result type (might be due to invalid IL or missing references) //IL_010c: Unknown result type (might be due to invalid IL or missing references) //IL_0113: Unknown result type (might be due to invalid IL or missing references) //IL_011f: Expected O, but got Unknown //IL_01df: Unknown result type (might be due to invalid IL or missing references) //IL_01e4: Unknown result type (might be due to invalid IL or missing references) //IL_01ec: Unknown result type (might be due to invalid IL or missing references) //IL_01f3: Unknown result type (might be due to invalid IL or missing references) //IL_01ff: Expected O, but got Unknown //IL_02f2: Unknown result type (might be due to invalid IL or missing references) //IL_02f7: Unknown result type (might be due to invalid IL or missing references) //IL_02ff: Unknown result type (might be due to invalid IL or missing references) //IL_0306: Unknown result type (might be due to invalid IL or missing references) //IL_0312: Expected O, but got Unknown foreach (GameObject item in Resources.FindObjectsOfTypeAll<GameObject>().Where(delegate(GameObject x) { int result; if (((Object)x).name == "HumanSNPC_Blacksmith") { Merchant componentInChildren = x.GetComponentInChildren<Merchant>(); result = (((((componentInChildren != null) ? componentInChildren.ShopName : null) ?? "") == "Vyzyrinthrix the Blacksmith") ? 1 : 0); } else { result = 0; } return (byte)result != 0; })) { GuaranteedDrop val = item.GetComponentsInChildren<GuaranteedDrop>()?.FirstOrDefault((Func<GuaranteedDrop, bool>)((GuaranteedDrop table) => ((ItemDropper)table).ItemGenatorName == "Recipes")); if (val != null && At.GetField<GuaranteedDrop>(val, "m_itemDrops") is List<BasicItemDrop> list) { Item[] array = (Item[])(object)new Item[8] { puresteelLongswordRecipeInstance, adamantineIngotRecipeInstance, crusadersArmorRecipeInstance, crusadersPlateArmorRecipeInstance, crusadersShieldRecipeInstance, crusadersRoundShieldRecipeInstance, crusadersHoodRecipeInstance, crusadersBootsRecipeInstance }; foreach (Item itemRef in array) { list.Add(new BasicItemDrop { ItemRef = itemRef, MaxDropCount = 1, MinDropCount = 1 }); } } } GameObject obj = GameObject.Find("UNPC_LaineAberforthA"); GuaranteedDrop val2 = ((obj == null) ? null : obj.GetComponentsInChildren<GuaranteedDrop>()?.FirstOrDefault((Func<GuaranteedDrop, bool>)((GuaranteedDrop table) => ((ItemDropper)table).ItemGenatorName == "Recipes"))); if (val2 != null && At.GetField<GuaranteedDrop>(val2, "m_itemDrops") is List<BasicItemDrop> list2) { Item[] array2 = (Item[])(object)new Item[2] { holyWaterRecipeInstance, thickWhitePaintRecipeInstance }; foreach (Item itemRef2 in array2) { list2.Add(new BasicItemDrop { ItemRef = itemRef2, MaxDropCount = 1, MinDropCount = 1 }); } } GameObject[] array3 = (GameObject[])(object)new GameObject[2] { GameObject.Find("UNPC_MathiasA (1)"), GameObject.Find("UNPC_MathiasA (2)") }; foreach (GameObject val3 in array3) { GuaranteedDrop val4 = ((val3 == null) ? null : val3.GetComponentsInChildren<GuaranteedDrop>()?.FirstOrDefault((Func<GuaranteedDrop, bool>)((GuaranteedDrop table) => ((ItemDropper)table).ItemGenatorName == "Recipes"))); if (val4 != null && At.GetField<GuaranteedDrop>(val4, "m_itemDrops") is List<BasicItemDrop> list3) { Item[] array4 = (Item[])(object)new Item[5] { zealotsArmorInstance, zealotsBootsInstance, crusadersArmorInstance, crusadersBootsInstance, crusadersHoodInstance }; foreach (Item itemRef3 in array4) { list3.Add(new BasicItemDrop { ItemRef = itemRef3, MaxDropCount = 1, MinDropCount = 1 }); } } } } } [HarmonyPatch(typeof(GiveReward), "OnExecute")] public class GiveReward_OnExecute { [HarmonyPrefix] public static void Prefix(GiveReward __instance) { //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_003c: Expected O, but got Unknown //IL_003c: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Expected O, but got Unknown if (__instance.ItemReward.Count((ItemQuantity x) => new int[4] { 3000210, 3000212, 3000211, 2130060 }.Contains(x.Item.value.ItemID)) >= 4) { ItemQuantity val = new ItemQuantity(); ItemReference val2 = new ItemReference(); val2.ItemID = CrusadersEquipment.Instance.lightMendersRelicInstance.ItemID; val.Item = new BBParameter<ItemReference>(val2); val.Quantity = BBParameter<int>.op_Implicit(1); __instance.ItemReward.Add(val); } } } [HarmonyPatch(typeof(Weapon), "AddImbueEffect")] public class Weapon_AddImbueEffect { [HarmonyPrefix] public static void Prefix(Weapon __instance, ref float _lifespan) { if (((Equipment)__instance).ActiveEnchantmentIDs.Contains(2502517)) { _lifespan += 10f; } } } public class RadiantSpark { public static void Init() { Item itemPrefab = ResourcesPrefabManager.Instance.GetItemPrefab(8200040); Skill val = (Skill)(object)((itemPrefab is Skill) ? itemPrefab : null); Blast baseBlast = ((Component)((Component)val).transform.Find("Effects")).gameObject.GetComponents<ShootBlast>()[0].BaseBlast; Transform transform = TinyGameObjectManager.MakeFreshObject("Effects", true, true, ((Component)baseBlast).transform).transform; AddThenSpreadStatus val2 = ((Component)transform).gameObject.AddComponent<AddThenSpreadStatus>(); ((AddStatusEffect)val2).Status = ImpendingDoomMod.Instance.impendingDoomInstance; val2.Range = 2f; Transform orMake = TinyGameObjectManager.GetOrMake(((Component)val2).transform, "SourceConditions", true, true); SourceConditionEquipment val3 = ((Component)orMake).gameObject.AddComponent<SourceConditionEquipment>(); val3.RequiredItemID = 2502506; } } public class ThickWhitePaint { public const string SubfolderName = "ThickWhitePaint"; public static Item MakeItem() { //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_0011: 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_0027: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_002e: 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_0044: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Expected O, but got Unknown SL_Item val = new SL_Item { Name = "Thick White Paint", Target_ItemID = 6600070, New_ItemID = 2501021, EffectBehaviour = (EditBehaviours)1, Description = "Thick white paint that can easily be applied to objects.", SLPackName = CrusadersEquipment.ModFolderName, SubfolderName = "ThickWhitePaint" }; ((ContentTemplate)val).ApplyTemplate(); return ResourcesPrefabManager.Instance.GetItemPrefab(val.New_ItemID); } public static Item MakeRecipes() { //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_002e: 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_003a: Unknown result type (might be due to invalid IL or missing references) //IL_004a: Expected O, but got Unknown //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_0057: Unknown result type (might be due to invalid IL or missing references) //IL_005c: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Unknown result type (might be due to invalid IL or missing references) //IL_0063: Unknown result type (might be due to invalid IL or missing references) //IL_0078: Expected O, but got Unknown //IL_007a: Unknown result type (might be due to invalid IL or missing references) //IL_007f: 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_0086: Unknown result type (might be due to invalid IL or missing references) //IL_009b: Expected O, but got Unknown //IL_009d: 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_00a4: Unknown result type (might be due to invalid IL or missing references) //IL_00a9: Unknown result type (might be due to invalid IL or missing references) //IL_00be: Expected O, but got Unknown //IL_00c4: Unknown result type (might be due to invalid IL or missing references) //IL_00d1: Unknown result type (might be due to invalid IL or missing references) //IL_00d6: Unknown result type (might be due to invalid IL or missing references) //IL_00e1: Unknown result type (might be due to invalid IL or missing references) //IL_00ec: Unknown result type (might be due to invalid IL or missing references) //IL_00f7: Unknown result type (might be due to invalid IL or missing references) //IL_00f9: Unknown result type (might be due to invalid IL or missing references) //IL_00fe: Unknown result type (might be due to invalid IL or missing references) //IL_0106: Expected O, but got Unknown string text = "com.ehaugw.crusadersequipment." + "ThickWhitePaint".ToLower() + "recipe"; ((ContentTemplate)new SL_Recipe { StationType = (CraftingType)0, Results = new List<ItemQty> { new ItemQty { Quantity = 1, ItemID = 2501021 } }, Ingredients = new List<Ingredient> { new Ingredient { Type = (ActionTypes)1, Ingredient_ItemID = 6200070 }, new Ingredient { Type = (ActionTypes)1, Ingredient_ItemID = 6000070 }, new Ingredient { Type = (ActionTypes)1, Ingredient_ItemID = 6600070 } }, UID = text }).ApplyTemplate(); SL_RecipeItem val = new SL_RecipeItem { Name = "Alchemy: Thick White Paint", Target_ItemID = 5700076, New_ItemID = 2501022, EffectBehaviour = (EditBehaviours)1, RecipeUID = text }; ((ContentTemplate)val).ApplyTemplate(); return ResourcesPrefabManager.Instance.GetItemPrefab(((SL_Item)val).New_ItemID); } } public class ZealotsArmor { public const string SubfolderName = "ZealotsArmor"; public static Item MakeItem() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Expected O, but got Unknown //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Expected O, but got Unknown SL_Equipment val = new SL_Equipment(); ((SL_Item)val).Name = "Zealot's Armor"; ((SL_Item)val).Target_ItemID = 3100470; ((SL_Item)val).New_ItemID = 2501042; ((SL_Item)val).EffectBehaviour = (EditBehaviours)1; ((SL_Item)val).Description = ""; SL_EquipmentStats val2 = new SL_EquipmentStats(); ((SL_ItemStats)val2).BaseValue = 1000; ((SL_ItemStats)val2).RawWeight = 15f; ((SL_ItemStats)val2).MaxDurability = 500; val2.Damage_Resistance = new float[9] { 25f, 0f, 25f, 0f, 0f, 0f, 0f, 0f, 0f }; val2.Impact_Resistance = 18f; val2.Damage_Protection = 2f; val2.Damage_Bonus = HolyDamageManager.GetHolyDamageBonusArray(14f); val2.Stamina_Use_Penalty = 6f; val2.Mana_Use_Modifier = 0f; val2.Movement_Penalty = 6f; val2.Pouch_Bonus = 0f; val2.Heat_Protection = 0f; val2.Cold_Protection = -6f; val2.Corruption_Protection = 10f; ((SL_Item)val).StatsHolder = (SL_ItemStats)(object)val2; ((SL_Item)val).SLPackName = CrusadersEquipment.ModFolderName; ((SL_Item)val).SubfolderName = "ZealotsArmor"; SL_Equipment val3 = val; ((ContentTemplate)val3).ApplyTemplate(); return ResourcesPrefabManager.Instance.GetItemPrefab(((SL_Item)val3).New_ItemID); } } public class ZealotsBoots { public const string SubfolderName = "ZealotsBoots"; public static Item MakeItem() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Expected O, but got Unknown //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Expected O, but got Unknown SL_Equipment val = new SL_Equipment(); ((SL_Item)val).Name = "Zealot's Boots"; (
plugins/CustomWeaponBehaviour.dll
Decompiled 6 months agousing System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using BepInEx; using HarmonyLib; using HolyDamageManager; using Photon; using SideLoader; using TinyHelper; using UnityEngine; [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.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")] [assembly: AssemblyVersion("0.0.0.0")] namespace CustomWeaponBehaviour; public class MaulShoveBehaviour { public virtual bool Eligible(Weapon weapon) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) return ((Item)weapon).HasTag(CustomWeaponBehaviour.MaulShoveTag); } public virtual bool IsActive(Weapon weapon) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0009: Invalid comparison between Unknown and I4 //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0013: Invalid comparison between Unknown and I4 return (int)weapon.Type != 53 && (int)BehaviourManager.GetCurrentAnimationType(weapon) == 53; } public bool IsMaulShoveMode(Weapon weapon) { //IL_0043: Unknown result type (might be due to invalid IL or missing references) int result; if (Eligible(weapon) && ((Item)weapon).IsEquipped) { Character ownerCharacter = ((EffectSynchronizer)weapon).OwnerCharacter; if (!((Object)(object)((ownerCharacter != null) ? ownerCharacter.LeftHandEquipment : null) == (Object)null)) { Character ownerCharacter2 = ((EffectSynchronizer)weapon).OwnerCharacter; Equipment val = ((ownerCharacter2 != null) ? ownerCharacter2.LeftHandEquipment : null); if (val == null || !((Item)val).HasTag(CustomWeaponBehaviour.HandsFreeTag)) { result = (((Equipment)weapon).TwoHanded ? 1 : 0); goto IL_005b; } } result = 1; } else { result = 0; } goto IL_005b; IL_005b: return (byte)result != 0; } public void PostAffectDamage(ref Weapon weapon, DamageList original, ref DamageList result) { if (!IsMaulShoveMode(weapon)) { return; } foreach (IBastardModifier iBastardModifier in CustomWeaponBehaviour.IBastardModifiers) { iBastardModifier.ApplyDamageModifier(weapon, original, ref result); } } public void PostAffectImpact(ref Weapon weapon, float original, ref float result) { if (!IsMaulShoveMode(weapon)) { return; } foreach (IBastardModifier iBastardModifier in CustomWeaponBehaviour.IBastardModifiers) { iBastardModifier.ApplyImpactModifier(weapon, original, ref result); } } public void PostAffectSpeed(ref Weapon weapon, float original, ref float result) { if (!IsMaulShoveMode(weapon)) { return; } foreach (IBastardModifier iBastardModifier in CustomWeaponBehaviour.IBastardModifiers) { iBastardModifier.ApplySpeedModifier(weapon, original, ref result); } } public void PostAffectStaminaCost(ref Weapon weapon, float original, ref float result) { if (!IsMaulShoveMode(weapon)) { return; } foreach (IBastardModifier iBastardModifier in CustomWeaponBehaviour.IBastardModifiers) { iBastardModifier.ApplyStaminaModifier(weapon, original, ref result); } } } public class BastardBehaviour { public static WeaponType? GetBastardType(WeaponType type) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0003: Unknown result type (might be due to invalid IL or missing references) //IL_0004: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Expected I4, but got Unknown //IL_0037: Unknown result type (might be due to invalid IL or missing references) return (int)type switch { 1 => (WeaponType)52, 0 => (WeaponType)51, 2 => (WeaponType)53, _ => type, }; } public virtual bool Eligible(Weapon weapon) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) return ((Item)weapon).HasTag(CustomWeaponBehaviour.BastardTag) && !((Equipment)weapon).TwoHanded; } public bool IsBastardMode(Weapon weapon) { //IL_0043: Unknown result type (might be due to invalid IL or missing references) if (!Eligible(weapon) || !((Item)weapon).IsEquipped) { goto IL_0064; } Character ownerCharacter = ((EffectSynchronizer)weapon).OwnerCharacter; if (!((Object)(object)((ownerCharacter != null) ? ownerCharacter.LeftHandEquipment : null) == (Object)null)) { Character ownerCharacter2 = ((EffectSynchronizer)weapon).OwnerCharacter; Equipment val = ((ownerCharacter2 != null) ? ownerCharacter2.LeftHandEquipment : null); if (val == null || !((Item)val).HasTag(CustomWeaponBehaviour.HandsFreeTag)) { goto IL_0064; } } int result = ((!CustomWeaponBehaviour.Instance.maulShoveBehaviour.IsActive(weapon)) ? 1 : 0); goto IL_0065; IL_0065: return (byte)result != 0; IL_0064: result = 0; goto IL_0065; } public void PostAffectDamage(ref Weapon weapon, DamageList original, ref DamageList result) { if (!IsBastardMode(weapon)) { return; } foreach (IBastardModifier iBastardModifier in CustomWeaponBehaviour.IBastardModifiers) { iBastardModifier.ApplyDamageModifier(weapon, original, ref result); } } public void PostAffectImpact(ref Weapon weapon, float original, ref float result) { if (!IsBastardMode(weapon)) { return; } foreach (IBastardModifier iBastardModifier in CustomWeaponBehaviour.IBastardModifiers) { iBastardModifier.ApplyImpactModifier(weapon, original, ref result); } } public void PostAffectSpeed(ref Weapon weapon, float original, ref float result) { if (!IsBastardMode(weapon)) { return; } foreach (IBastardModifier iBastardModifier in CustomWeaponBehaviour.IBastardModifiers) { iBastardModifier.ApplySpeedModifier(weapon, original, ref result); } } public void PostAffectStaminaCost(ref Weapon weapon, float original, ref float result) { if (!IsBastardMode(weapon)) { return; } foreach (IBastardModifier iBastardModifier in CustomWeaponBehaviour.IBastardModifiers) { iBastardModifier.ApplyStaminaModifier(weapon, original, ref result); } } } public class AttackCancelByBlockBehaviour { public bool IsBlockMode(Character character) { return Eligible(character); } public virtual bool Eligible(Character character) { return false; } } public class AttackCancelBySkillBehaviour { public bool IsAttackCancelBySkillMode(Character character) { return Eligible(character); } public virtual bool Eligible(Character character) { return false; } } public class SpecialLeapBehaviour { public virtual bool IsSpecialLeapMode(Weapon weapon) { //IL_000a: Unknown result type (might be due to invalid IL or missing references) return ((Item)weapon).IsEquipped && ((Item)weapon).HasTag(CustomWeaponBehaviour.SpecialLeapTag); } } public class HalfHandedBehaviour { public bool IsHalfHandedMode(Weapon weapon) { //IL_0043: Unknown result type (might be due to invalid IL or missing references) if (!Eligible(weapon) || !((Item)weapon).IsEquipped) { goto IL_005a; } Character ownerCharacter = ((EffectSynchronizer)weapon).OwnerCharacter; if (!((Object)(object)((ownerCharacter != null) ? ownerCharacter.LeftHandEquipment : null) == (Object)null)) { Character ownerCharacter2 = ((EffectSynchronizer)weapon).OwnerCharacter; Equipment val = ((ownerCharacter2 != null) ? ownerCharacter2.LeftHandEquipment : null); if (val == null || !((Item)val).HasTag(CustomWeaponBehaviour.HandsFreeTag)) { goto IL_005a; } } int result = ((!((Equipment)weapon).TwoHanded) ? 1 : 0); goto IL_005b; IL_005b: return (byte)result != 0; IL_005a: result = 0; goto IL_005b; } public virtual bool Eligible(Weapon weapon) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) return ((Item)weapon).HasTag(CustomWeaponBehaviour.HalfHandedTag); } } public class ParryBehaviour { public virtual float GetParryWindow(Weapon weapon) { return 0.3f; } public virtual float GetParryWindUp(Weapon weapon) { return 0.1f; } public bool IsParryMode(Weapon weapon) { int result; if (((Item)weapon).IsEquipped && Eligible(weapon)) { Character ownerCharacter = ((EffectSynchronizer)weapon).OwnerCharacter; result = (((Object)(object)((ownerCharacter != null) ? ownerCharacter.LeftHandEquipment : null) == (Object)null || OffhandEligible((weapon != null) ? ((EffectSynchronizer)weapon).OwnerCharacter : null)) ? 1 : 0); } else { result = 0; } return (byte)result != 0; } public virtual bool OffhandEligible(Character character) { //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Invalid comparison between Unknown and I4 //IL_0021: Unknown result type (might be due to invalid IL or missing references) Equipment obj = ((character != null) ? character.LeftHandEquipment : null); Weapon val = (Weapon)(object)((obj is Weapon) ? obj : null); return val != null && ((int)val.Type != 100 || ((Item)val).HasTag(CustomWeaponBehaviour.BucklerTag)); } public virtual bool Eligible(Weapon weapon) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) return ((Item)weapon).HasTag(CustomWeaponBehaviour.ParryTag); } public virtual bool DidSuccessfulParry(Weapon weapon) { int result; if (IsParryMode(weapon)) { Character ownerCharacter = ((EffectSynchronizer)weapon).OwnerCharacter; if (ownerCharacter != null && ownerCharacter.Blocking && Time.time - (float)At.GetField<Character>(ownerCharacter, "m_blockTime") < GetParryWindow(weapon) && ownerCharacter.Blocking) { result = ((Time.time - (float)At.GetField<Character>(ownerCharacter, "m_blockTime") > GetParryWindUp(weapon)) ? 1 : 0); goto IL_0065; } } result = 0; goto IL_0065; IL_0065: return (byte)result != 0; } public virtual void DeliverParry(Character blocker, Character striker, Vector3 _hitDir, float impactDamage) { //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_002b: Unknown result type (might be due to invalid IL or missing references) At.Invoke<Character>(striker, "StabilityHit", new object[4] { impactDamage / 2f, Vector3.Angle(((Component)striker).transform.forward, -_hitDir), false, blocker }); CasualStagger.Stagger(striker); } } public class HolyBehaviour { public virtual Types GetHolyDamageType() { //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_0009: Unknown result type (might be due to invalid IL or missing references) return HolyDamageManager.GetDamageType(); } public virtual float GetHolyWeaponConvertionRate(Weapon weapon) { return 0.2f; } public bool IsHolyWeaponMode(Weapon weapon) { //IL_0055: Unknown result type (might be due to invalid IL or missing references) //IL_005b: Unknown result type (might be due to invalid IL or missing references) if (((Item)weapon).IsEquipped && Eligible(weapon) && weapon.Imbued) { Effect[] imbuedEffects = weapon.FirstImbue.ImbuedEffects; foreach (Effect val in imbuedEffects) { WeaponDamage val2 = (WeaponDamage)(object)((val is WeaponDamage) ? val : null); if (val2 != null && ((PunctualDamage)val2).Damages.Length != 0 && ((PunctualDamage)val2).Damages[0].Type == GetHolyDamageType()) { return true; } } } return false; } public virtual bool Eligible(Weapon weapon) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) return ((Item)weapon).HasTag(CustomWeaponBehaviour.HolyWeaponTag); } public void PostAffectDamage(ref Weapon _weapon, DamageList original, ref DamageList _damageList) { //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Expected O, but got Unknown if (IsHolyWeaponMode(_weapon)) { float totalDamage = _damageList.TotalDamage; float holyWeaponConvertionRate = GetHolyWeaponConvertionRate(_weapon); _damageList *= 1f - holyWeaponConvertionRate; _damageList.Add(new DamageType(GetHolyDamageType(), totalDamage * holyWeaponConvertionRate)); } } } public class FinesseBehaviour { public bool IsFinesseMode(Weapon weapon) { return ((Item)weapon).IsEquipped && Eligible(weapon); } public virtual bool Eligible(Weapon weapon) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) return ((Item)weapon).HasTag(CustomWeaponBehaviour.FinesseTag); } } public class BehaviourManager { public static WeaponType GetCurrentAnimationType(Weapon weapon) { //IL_0037: Unknown result type (might be due to invalid IL or missing references) //IL_003c: 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_003f: Unknown result type (might be due to invalid IL or missing references) if (((Item)weapon).IsEquipped) { Character ownerCharacter = ((EffectSynchronizer)weapon).OwnerCharacter; Animator val = ((ownerCharacter != null) ? ownerCharacter.Animator : null); if (val != null) { return (WeaponType)val.GetInteger("WeaponType"); } } return weapon.Type; } public static bool IsComboAttack(Character __instance, int _type, int _id) { return _type switch { 0 => true, 1 => __instance.NextAtkAllowed == 2, _ => false, }; } public static bool AdaptGrip(Character __instance, ref int _type, ref int _id) { //IL_0052: Unknown result type (might be due to invalid IL or missing references) //IL_005c: Invalid comparison between Unknown and I4 //IL_0060: Unknown result type (might be due to invalid IL or missing references) //IL_006a: Invalid comparison between Unknown and I4 //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_019e: 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_01b5: Unknown result type (might be due to invalid IL or missing references) //IL_01ba: Unknown result type (might be due to invalid IL or missing references) //IL_01e8: 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_0212: Unknown result type (might be due to invalid IL or missing references) //IL_0234: Unknown result type (might be due to invalid IL or missing references) //IL_0220: Unknown result type (might be due to invalid IL or missing references) //IL_0226: Invalid comparison between Unknown and I4 Weapon val = ((__instance != null) ? __instance.CurrentWeapon : null); if ((Object)(object)val == (Object)null) { return false; } if (_type == 2502 || _type == 2511) { object field = At.GetField<Character>(__instance, "m_lastUsedSkill"); MeleeSkill val2 = (MeleeSkill)((field is MeleeSkill) ? field : null); if (val2 != null && ((int)((Item)val2).ActivateEffectAnimType == 502 || (int)((Item)val2).ActivateEffectAnimType == 511) && ((AttackSkill)val2).RequiredWeaponTypes[0] != val.Type) { CustomWeaponBehaviour.ChangeGrip(__instance, ((AttackSkill)val2).RequiredWeaponTypes[0]); return true; } } if (CustomWeaponBehaviour.Instance.finesseBehaviour.IsFinesseMode(val) && _type == 1 && !IsComboAttack(__instance, _type, _id)) { CustomWeaponBehaviour.ChangeGrip(__instance, (WeaponType)1); return true; } if (CustomWeaponBehaviour.Instance.halfHandedBehaviour.IsHalfHandedMode(val) && _type == 1 && !IsComboAttack(__instance, _type, _id)) { _type = 0; CustomWeaponBehaviour.ChangeGrip(__instance, (WeaponType)54); return true; } if (CustomWeaponBehaviour.Instance.maulShoveBehaviour.IsMaulShoveMode(val) && _type == 1 && !IsComboAttack(__instance, _type, _id)) { CustomWeaponBehaviour.ChangeGrip(__instance, (WeaponType)53); return true; } if (CustomWeaponBehaviour.Instance.bastardBehaviour.IsBastardMode(val)) { WeaponType? bastardType = BastardBehaviour.GetBastardType(val.Type); if (bastardType.HasValue) { WeaponType valueOrDefault = bastardType.GetValueOrDefault(); if (true && Extensions.Contains(new int[3] { 0, 1, 2500 }, _type)) { CustomWeaponBehaviour.ChangeGrip(__instance, valueOrDefault); Equipment val3 = ((__instance != null) ? __instance.LeftHandEquipment : null); if (val3 != null && ((Item)val3).HasTag(CustomWeaponBehaviour.HandsFreeTag) && ((Item)val3).HasTag(CustomWeaponBehaviour.LanternTag) && (int)val3.IKType == 1) { val3.IKType = (IKMode)0; } return true; } } } return false; } public static bool SpellHasAttackAnimation(Character character) { if (character.IsCasting && character.Animator.GetInteger("AttackID") < 2) { return true; } return false; } public static bool AttackHasSpellAnimation(Character character) { if (!character.IsCasting && character.Animator.GetInteger("AttackID") >= 2) { return true; } return false; } } public interface IBaseDamageModifier { bool Eligible(Weapon weapon); void Apply(Weapon weapon, DamageList original, ref DamageList result); } public interface IBastardModifier { void ApplyDamageModifier(Weapon weapon, DamageList original, ref DamageList modifier); void ApplyImpactModifier(Weapon weapon, float original, ref float modifier); void ApplySpeedModifier(Weapon weapon, float original, ref float result); void ApplyStaminaModifier(Weapon weapon, float original, ref float result); } public interface IMaulShoveModifier { void ApplyDamageModifier(Weapon weapon, DamageList original, ref DamageList result); void ApplyImpactModifier(Weapon weapon, float original, ref float result); void ApplySpeedModifier(Weapon weapon, float original, ref float result); } public class CustomBehaviourFormulas { public static void PostAffectSpeed(Weapon weapon, ref float result) { //IL_0042: 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_006f: Unknown result type (might be due to invalid IL or missing references) //IL_007f: Unknown result type (might be due to invalid IL or missing references) if (!((Object)(object)weapon == (Object)null)) { float original = result; CustomWeaponBehaviour.Instance.bastardBehaviour.PostAffectSpeed(ref weapon, original, ref result); CustomWeaponBehaviour.Instance.maulShoveBehaviour.PostAffectSpeed(ref weapon, original, ref result); if (WeaponManager.Speeds.ContainsKey(weapon.Type) && WeaponManager.Speeds.ContainsKey(BehaviourManager.GetCurrentAnimationType(weapon))) { result *= WeaponManager.Speeds[BehaviourManager.GetCurrentAnimationType(weapon)] / WeaponManager.Speeds[weapon.Type]; } if (result < 0f) { result = 0f; } } } public static void PostAffectDamage(ref Weapon _weapon, ref DamageList result) { DamageList original = result.Clone(); foreach (IBaseDamageModifier iBaseDamageModifier in CustomWeaponBehaviour.IBaseDamageModifiers) { if (iBaseDamageModifier.Eligible(_weapon)) { iBaseDamageModifier.Apply(_weapon, original, ref result); } } CustomWeaponBehaviour.Instance.maulShoveBehaviour.PostAffectDamage(ref _weapon, original, ref result); CustomWeaponBehaviour.Instance.bastardBehaviour.PostAffectDamage(ref _weapon, original, ref result); CustomWeaponBehaviour.Instance.holyBehaviour.PostAffectDamage(ref _weapon, original, ref result); } public static void PostAffectImpact(ref Weapon _weapon, ref float _impactDamage) { float original = _impactDamage; CustomWeaponBehaviour.Instance.maulShoveBehaviour.PostAffectImpact(ref _weapon, original, ref _impactDamage); CustomWeaponBehaviour.Instance.bastardBehaviour.PostAffectImpact(ref _weapon, original, ref _impactDamage); if (_impactDamage < 0f) { _impactDamage = 0f; } } public static void PostAffectStaminaCost(Weapon _weapon, ref float _staminaCost) { float original = _staminaCost; CustomWeaponBehaviour.Instance.bastardBehaviour.PostAffectStaminaCost(ref _weapon, original, ref _staminaCost); if (_staminaCost < 0f) { _staminaCost = 0f; } } } public class EnableHitDetection : Effect { protected override void ActivateLocally(Character _affectedCharacter, object[] _infos) { Item parentItem = ((Effect)this).ParentItem; MeleeSkill val = (MeleeSkill)(object)((parentItem is MeleeSkill) ? parentItem : null); if (val != null && (Object)(object)val.MeleeHitDetector != (Object)null) { MeleeHitDetector val2 = ((_affectedCharacter != null) ? _affectedCharacter.SkillMeleeDetector : null); if (val2 != null) { val2.HitStarted(-1); return; } } Weapon obj = ((_affectedCharacter != null) ? _affectedCharacter.CurrentWeapon : null); MeleeWeapon val3 = (MeleeWeapon)(object)((obj is MeleeWeapon) ? obj : null); if (val3 != null) { ((Weapon)val3).HitStarted(-1); } } } public class WeaponSkillAnimationSelector : Effect { public WeaponType WeaponType; protected override void ActivateLocally(Character character, object[] _infos) { //IL_0003: Unknown result type (might be due to invalid IL or missing references) CustomWeaponBehaviour.ChangeGrip(character, WeaponType); } public static void SetCustomAttackAnimation(Skill skill, WeaponType weaponType) { //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) Transform transform = TinyGameObjectManager.MakeFreshObject("ActivationEffects", true, true, ((Component)skill).transform).transform; ((Component)transform).gameObject.AddComponent<WeaponSkillAnimationSelector>().WeaponType = weaponType; } } [HarmonyPatch(typeof(Skill), "HasAllRequirements")] public class Skill_HasAllRequirements { [HarmonyPrefix] public static void Prefix(Skill __instance, bool _tryingToActivate) { if (_tryingToActivate) { MeleeSkill val = (MeleeSkill)(object)((__instance is MeleeSkill) ? __instance : null); if (val != null && ((EffectSynchronizer)__instance).OwnerCharacter.NextAtkAllowed == 2 && CustomWeaponBehaviour.Instance.attackCancelBySkillBehaviour.IsAttackCancelBySkillMode(((EffectSynchronizer)__instance).OwnerCharacter) && ((Skill)val).HasAllRequirements(false)) { ((EffectSynchronizer)__instance).OwnerCharacter.ForceCancel(true, true); At.SetValue<bool>(true, typeof(Character), (object)((EffectSynchronizer)__instance).OwnerCharacter, "m_inLocomotion"); At.SetValue<bool>(true, typeof(Character), (object)((EffectSynchronizer)__instance).OwnerCharacter, "m_nextIsLocomotion"); } } } } [HarmonyPatch(typeof(Character), "BlockInput")] public class Character_BlockInput { [HarmonyPrefix] public static bool Prefix(Character __instance, ref bool _active) { //IL_0033: Unknown result type (might be due to invalid IL or missing references) //IL_003a: Invalid comparison between Unknown and I4 //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_0047: Invalid comparison between Unknown and I4 if (__instance.IsAI) { return true; } if (!__instance.IsPhotonPlayerLocal || __instance.Sheathing || __instance.PreparingToSleep || __instance.Dodging || (int)__instance.CurrentSpellCast == 35 || (int)__instance.CurrentSpellCast == 900) { return true; } if (!_active || (__instance.InLocomotion && __instance.NextIsLocomotion)) { return true; } if (__instance.ShieldEquipped || (Object)(object)__instance.CurrentWeapon == (Object)null || !CustomWeaponBehaviour.Instance.attackCancelByBlockBehaviour.IsBlockMode(__instance)) { return true; } int num = (int)At.GetValue(typeof(Character), (object)__instance, "m_dodgeAllowedInAction"); if (num > 0 && __instance.NextAtkAllowed > 0) { ((MonoBehaviour)__instance).photonView.RPC("SendBlockStateTrivial", (PhotonTargets)0, new object[1] { true }); __instance.StealthInput(false); return false; } return true; } } [HarmonyPatch(typeof(Character), "SendPerformAttackTrivial", new Type[] { typeof(int), typeof(int) })] public class Character_SendPerformAttackTrivial { [HarmonyPrefix] public static void Prefix(Character __instance, ref int _type, ref int _id) { BehaviourManager.AdaptGrip(__instance, ref _type, ref _id); } } [HarmonyPatch(typeof(Character), "HitEnded")] public class Character_HitEnded { [HarmonyPrefix] public static void Prefix(Character __instance, ref int _attackID) { if (_attackID != -2 && !__instance.IsCasting) { CustomWeaponBehaviour.ResetGrip(__instance); } } } [HarmonyPatch(typeof(Character), "StopLocomotionAction")] public class Character_StopLocomotionAction { [HarmonyPrefix] public static void Prefix(Character __instance) { CustomWeaponBehaviour.ResetGrip(__instance); } } [HarmonyPatch(typeof(Character), "ReceiveBlock", new Type[] { typeof(MonoBehaviour), typeof(float), typeof(Vector3), typeof(float), typeof(float), typeof(Character), typeof(float) })] public class Character_ReceiveBlock { [HarmonyPrefix] public static void Prefix(Character __instance, Character _dealerChar, Vector3 _hitDir, ref float _knockBack) { //IL_007a: Unknown result type (might be due to invalid IL or missing references) if (CustomWeaponBehaviour.Instance.parryBehaviour.DidSuccessfulParry(__instance.CurrentWeapon)) { float num = _knockBack; float? obj; if (__instance == null) { obj = null; } else { Weapon currentWeapon = __instance.CurrentWeapon; obj = ((currentWeapon != null) ? new float?(currentWeapon.Impact) : null); } float? num2 = obj; _knockBack = num - num2.GetValueOrDefault(); if (_knockBack < 0f) { _knockBack = 0f; } ParryBehaviour parryBehaviour = CustomWeaponBehaviour.Instance.parryBehaviour; float? obj2; if (__instance == null) { obj2 = null; } else { Weapon currentWeapon2 = __instance.CurrentWeapon; obj2 = ((currentWeapon2 != null) ? new float?(currentWeapon2.Impact) : null); } num2 = obj2; parryBehaviour.DeliverParry(__instance, _dealerChar, _hitDir, num2.GetValueOrDefault()); } } } [HarmonyPatch(typeof(AttackSkill), "OwnerHasAllRequiredItems")] public class AttackSkill_OwnerHasAllRequiredItemsMainHand { [HarmonyPrefix] public static void Prefix(AttackSkill __instance, out List<WeaponType> __state) { //IL_003b: 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_0057: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Unknown result type (might be due to invalid IL or missing references) //IL_006d: 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) __state = null; object obj; if (__instance == null) { obj = null; } else { Character ownerCharacter = ((EffectSynchronizer)__instance).OwnerCharacter; obj = ((ownerCharacter != null) ? ownerCharacter.CurrentWeapon : null); } Weapon val = (Weapon)obj; if (val == null || __instance.RequiredWeaponTypes == null) { return; } WeaponType? bastardType = BastardBehaviour.GetBastardType(val.Type); if (bastardType.HasValue) { WeaponType valueOrDefault = bastardType.GetValueOrDefault(); if (__instance.RequiredWeaponTypes.Contains(valueOrDefault) && !__instance.RequiredWeaponTypes.Contains(val.Type) && CustomWeaponBehaviour.Instance.bastardBehaviour.IsBastardMode(val)) { __state = __instance.RequiredWeaponTypes; __instance.RequiredWeaponTypes = new List<WeaponType>(__state); __instance.RequiredWeaponTypes.Add(val.Type); } } } public static void Postfix(AttackSkill __instance, List<WeaponType> __state) { if (__state != null) { __instance.RequiredWeaponTypes = __state; } } } [HarmonyPatch(typeof(AttackSkill), "OwnerHasAllRequiredItems")] public class AttackSkill_OwnerHasAllRequiredItemsOffHand { [HarmonyPrefix] public static void Prefix(AttackSkill __instance, out Tuple<List<WeaponType>, Equipment> __state) { //IL_0048: 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) __state = null; Character val = ((__instance != null) ? ((EffectSynchronizer)__instance).OwnerCharacter : null); if (val != null) { Weapon leftHandWeapon = val.LeftHandWeapon; if (leftHandWeapon != null && __instance.RequiredOffHandTypes != null && __instance.RequiredOffHandTypes.Contains((WeaponType)30) && ((Item)leftHandWeapon).HasTag(CustomWeaponBehaviour.PointyTag)) { __state = new Tuple<List<WeaponType>, Equipment>(__instance.RequiredOffHandTypes, (Equipment)(object)(val.LeftHandWeapon ?? null)); __instance.RequiredOffHandTypes = new List<WeaponType>(__state.Item1); __instance.RequiredOffHandTypes.Add(leftHandWeapon.Type); At.SetValue<Weapon>(leftHandWeapon, typeof(Character), (object)val, "m_leftHandEquipment"); } } } public static void Postfix(AttackSkill __instance, Tuple<List<WeaponType>, Equipment> __state) { if (__state != null) { __instance.RequiredOffHandTypes = __state.Item1; At.SetValue<Equipment>(__state.Item2, typeof(Character), (object)((__instance != null) ? ((EffectSynchronizer)__instance).OwnerCharacter : null), "m_leftHandEquipment"); } } } [HarmonyPatch(/*Could not decode attribute arguments.*/)] public class WeaponDamage_BuildDamage { [HarmonyPrefix] public static void Prefix(WeaponDamage __instance, ref AttackSkill ___m_attackSkill, out List<WeaponType> __state) { //IL_0035: 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_0051: Unknown result type (might be due to invalid IL or missing references) //IL_0065: Unknown result type (might be due to invalid IL or missing references) //IL_0075: 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) __state = null; AttackSkill obj = ___m_attackSkill; object obj2; if (obj == null) { obj2 = null; } else { Character ownerCharacter = ((EffectSynchronizer)obj).OwnerCharacter; obj2 = ((ownerCharacter != null) ? ownerCharacter.CurrentWeapon : null); } Weapon val = (Weapon)obj2; if (val == null || ___m_attackSkill.RequiredWeaponTypes == null) { return; } WeaponType? bastardType = BastardBehaviour.GetBastardType(val.Type); if (bastardType.HasValue) { WeaponType valueOrDefault = bastardType.GetValueOrDefault(); if (true && ___m_attackSkill.RequiredWeaponTypes.Contains(valueOrDefault) && !___m_attackSkill.RequiredWeaponTypes.Contains(val.Type) && CustomWeaponBehaviour.Instance.bastardBehaviour.IsBastardMode(val)) { __state = ___m_attackSkill.RequiredWeaponTypes; ___m_attackSkill.RequiredWeaponTypes = new List<WeaponType>(__state) { val.Type }; } } } public static void Postfix(AttackSkill ___m_attackSkill, List<WeaponType> __state) { if (__state != null && (Object)(object)___m_attackSkill != (Object)null) { ___m_attackSkill.RequiredWeaponTypes = __state; } } } [HarmonyPatch(typeof(AttackSkill), "OwnerHasAllRequiredItems")] public class AttackSkill_OwnerHasAllRequiredItemsFist { [HarmonyPrefix] public static void Prefix(AttackSkill __instance, out Tuple<List<WeaponType>, Equipment> __state) { //IL_0048: 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) __state = null; Character val = ((__instance != null) ? ((EffectSynchronizer)__instance).OwnerCharacter : null); if (val != null) { Weapon currentWeapon = val.CurrentWeapon; if (currentWeapon != null && __instance.RequiredOffHandTypes != null && __instance.RequiredOffHandTypes.Contains((WeaponType)30) && ((Item)currentWeapon).HasTag(CustomWeaponBehaviour.PointyTag)) { __state = new Tuple<List<WeaponType>, Equipment>(__instance.RequiredOffHandTypes, (Equipment)(object)(val.LeftHandWeapon ?? null)); __instance.RequiredOffHandTypes = new List<WeaponType>(__state.Item1); __instance.RequiredOffHandTypes.Add(currentWeapon.Type); At.SetValue<Weapon>(currentWeapon, typeof(Character), (object)val, "m_leftHandEquipment"); } } } public static void Postfix(AttackSkill __instance, Tuple<List<WeaponType>, Equipment> __state) { if (__state != null) { __instance.RequiredOffHandTypes = __state.Item1; At.SetValue<Equipment>(__state.Item2, typeof(Character), (object)((__instance != null) ? ((EffectSynchronizer)__instance).OwnerCharacter : null), "m_leftHandEquipment"); } } } [HarmonyPatch(typeof(CharacterStats), "GetAmplifiedAttackSpeed")] public class CharacterStats_GetAmplifiedAttackSpeed { [HarmonyPostfix] public static void Postfix(CharacterStats __instance, ref float __result, ref Character ___m_character) { Character obj = ___m_character; Weapon val = ((obj != null) ? obj.CurrentWeapon : null); if (!((Object)(object)val == (Object)null)) { CustomBehaviourFormulas.PostAffectSpeed(val, ref __result); } } } [HarmonyPatch(typeof(WeaponStats), "GetAttackStamCost")] public class WeaponStats_GetAttackStamCost { [HarmonyPostfix] public static void Postfix(WeaponStats __instance, Item ___m_item, ref float __result) { Weapon val = (Weapon)(object)((___m_item is Weapon) ? ___m_item : null); if (val != null) { CustomBehaviourFormulas.PostAffectStaminaCost(val, ref __result); } } } [HarmonyPatch(/*Could not decode attribute arguments.*/)] public class Weapon_BaseImpact { [HarmonyPostfix] public static void Postfix(Weapon __instance, ref float __result) { CustomBehaviourFormulas.PostAffectImpact(ref __instance, ref __result); } } [HarmonyPatch(typeof(WeaponStats), "GetAttackImpact")] public class WeaponStats_GetAttackImpact { [HarmonyPostfix] public static void Postfix(WeaponStats __instance, int _attackID, ref float __result, Item ___m_item) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Expected O, but got Unknown //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_005d: 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_006f: Unknown result type (might be due to invalid IL or missing references) Weapon val = (Weapon)___m_item; WeaponType val2 = val.Type; object obj; if (val == null) { obj = null; } else { Character ownerCharacter = ((EffectSynchronizer)val).OwnerCharacter; obj = ((ownerCharacter != null) ? ownerCharacter.Animator : null); } Animator val3 = (Animator)obj; if (val3 != null && UnityEngineExtensions.HasParameter(val3, "WeaponType")) { val2 = (WeaponType)val3.GetInteger("WeaponType"); } float num = 1f; if (WeaponStatData.WeaponBaseDataDict.Keys.Contains(val2)) { num = WeaponStatData.WeaponBaseDataDict[val2].ImpactMult[_attackID]; } __result = val.Impact * num; } } [HarmonyPatch(/*Could not decode attribute arguments.*/)] public class Weapon_Damage { [HarmonyPostfix] public static void Postfix(Weapon __instance, ref DamageList __result) { __result = __result.Clone(); CustomBehaviourFormulas.PostAffectDamage(ref __instance, ref __result); } } [HarmonyPatch(typeof(WeaponStats), "GetAttackDamage")] public class WeaponStats_GetAttackDamage { [HarmonyPostfix] public static void Postfix(WeaponStats __instance, int _attackID, ref IList<float> __result, Item ___m_item) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Expected O, but got Unknown //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_0069: 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_007b: Unknown result type (might be due to invalid IL or missing references) Weapon val = (Weapon)___m_item; WeaponType val2 = val.Type; object obj; if (val == null) { obj = null; } else { Character ownerCharacter = ((EffectSynchronizer)val).OwnerCharacter; obj = ((ownerCharacter != null) ? ownerCharacter.Animator : null); } Animator val3 = (Animator)obj; if (val3 != null && UnityEngineExtensions.HasParameter(val3, "WeaponType")) { val2 = (WeaponType)val3.GetInteger("WeaponType"); } float[] array = new float[5] { 1f, 1f, 1f, 1f, 1f }; if (WeaponStatData.WeaponBaseDataDict.Keys.Contains(val2)) { array = WeaponStatData.WeaponBaseDataDict[val2].DamageMult; } if (_attackID < 0 || _attackID >= array.Length) { _attackID = 0; } DamageList damage = val.Damage; for (int i = 0; i < damage.Count && i < __result.Count; i++) { __result[i] = damage[i].Damage * array[_attackID]; } } } public class WeaponStatData { public static Dictionary<WeaponType, WeaponStatData> WeaponBaseDataDict = new Dictionary<WeaponType, WeaponStatData> { { (WeaponType)0, new WeaponStatData { DamageMult = new float[5] { 1f, 1f, 1.495f, 1.265f, 1.265f }, ImpactMult = new float[5] { 1f, 1f, 1.3f, 1.1f, 1.1f }, StamMult = new float[5] { 1f, 1f, 1.2f, 1.1f, 1.1f } } }, { (WeaponType)51, new WeaponStatData { DamageMult = new float[5] { 1f, 1f, 1.5f, 1.265f, 1.265f }, ImpactMult = new float[5] { 1f, 1f, 1.5f, 1.1f, 1.1f }, StamMult = new float[5] { 1f, 1f, 1.3f, 1.1f, 1.1f } } }, { (WeaponType)1, new WeaponStatData { DamageMult = new float[5] { 1f, 1f, 1.3f, 1.3f, 1.3f }, ImpactMult = new float[5] { 1f, 1f, 1.3f, 1.3f, 1.3f }, StamMult = new float[5] { 1f, 1f, 1.2f, 1.2f, 1.2f } } }, { (WeaponType)52, new WeaponStatData { DamageMult = new float[5] { 1f, 1f, 1.3f, 1.3f, 1.3f }, ImpactMult = new float[5] { 1f, 1f, 1.3f, 1.3f, 1.3f }, StamMult = new float[5] { 1f, 1f, 1.375f, 1.375f, 1.35f } } }, { (WeaponType)2, new WeaponStatData { DamageMult = new float[5] { 1f, 1f, 1.3f, 1.3f, 1.3f }, ImpactMult = new float[5] { 1f, 1f, 2.5f, 1.3f, 1.3f }, StamMult = new float[5] { 1f, 1f, 1.3f, 1.3f, 1.3f } } }, { (WeaponType)53, new WeaponStatData { DamageMult = new float[5] { 1f, 1f, 0.75f, 1.4f, 1.4f }, ImpactMult = new float[5] { 1f, 1f, 2f, 1.4f, 1.4f }, StamMult = new float[5] { 1f, 1f, 1.2f, 1.2f, 1.2f } } }, { (WeaponType)50, new WeaponStatData { DamageMult = new float[5] { 1f, 1f, 1.3f, 1.3f, 1.7f }, ImpactMult = new float[5] { 1f, 1f, 1.3f, 1.3f, 1.7f }, StamMult = new float[5] { 1f, 1f, 1.25f, 1.25f, 1.75f } } }, { (WeaponType)54, new WeaponStatData { DamageMult = new float[5] { 1f, 1f, 1.4f, 1.3f, 1.2f }, ImpactMult = new float[5] { 1f, 1f, 1.2f, 1.2f, 1.1f }, StamMult = new float[5] { 1f, 1f, 1.25f, 1.25f, 1.25f } } }, { (WeaponType)55, new WeaponStatData { DamageMult = new float[5] { 1f, 1f, 1.3f, 1.3f, 1.3f }, ImpactMult = new float[5] { 1f, 1f, 1.3f, 1.3f, 1.3f }, StamMult = new float[5] { 1f, 1f, 1.3f, 1.2f, 1.2f } } } }; public float[] DamageMult; public float[] ImpactMult; public float[] StamMult; } [BepInPlugin("com.ehaugw.customweaponbehaviour", "Custom Weapon Behaviour", "3.1.3")] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency("com.ehaugw.holydamagemanager", "1.0.0")] [BepInDependency("com.ehaugw.tinyhelper", "4.3.4")] public class CustomWeaponBehaviour : BaseUnityPlugin { public const string GUID = "com.ehaugw.customweaponbehaviour"; public const string VERSION = "3.1.3"; public const string NAME = "Custom Weapon Behaviour"; public static CustomWeaponBehaviour Instance; public static Tag BastardTag; public static Tag FinesseTag; public static Tag HolyWeaponTag; public static Tag HalfHandedTag; public static Tag SpecialLeapTag; public static Tag ParryTag; public static Tag BucklerTag; public static Tag WandTag; public static Tag HandsFreeTag; public static Tag LanternTag; public static Tag MaulShoveTag; public static Tag PointyTag; public BastardBehaviour bastardBehaviour = new BastardBehaviour(); public MaulShoveBehaviour maulShoveBehaviour = new MaulShoveBehaviour(); public FinesseBehaviour finesseBehaviour = new FinesseBehaviour(); public HalfHandedBehaviour halfHandedBehaviour = new HalfHandedBehaviour(); public HolyBehaviour holyBehaviour = new HolyBehaviour(); public ParryBehaviour parryBehaviour = new ParryBehaviour(); public AttackCancelByBlockBehaviour attackCancelByBlockBehaviour = new AttackCancelByBlockBehaviour(); public AttackCancelBySkillBehaviour attackCancelBySkillBehaviour = new AttackCancelBySkillBehaviour(); public static List<IBastardModifier> IBastardModifiers = new List<IBastardModifier>(); public static List<IMaulShoveModifier> IMaulShoveModifiers = new List<IMaulShoveModifier>(); public static List<IBaseDamageModifier> IBaseDamageModifiers = new List<IBaseDamageModifier>(); internal void Awake() { //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Expected O, but got Unknown //IL_0069: Unknown result type (might be due to invalid IL or missing references) //IL_0073: Expected O, but got Unknown //IL_0073: Unknown result type (might be due to invalid IL or missing references) //IL_007d: Expected O, but got Unknown IBastardModifiers.Add(new BastardModifier()); IMaulShoveModifiers.Add(new MaulShoveModifier()); Instance = this; Harmony val = new Harmony("com.ehaugw.customweaponbehaviour"); val.PatchAll(); SL.BeforePacksLoaded += BeforePacksLoaded; SL.OnPacksLoaded += OnPacksLoaded; TinyHelper.OnDescriptionModified = (DescriptionModifier)Delegate.Combine((Delegate?)(object)TinyHelper.OnDescriptionModified, (Delegate?)new DescriptionModifier(CustomTagDescriptionModifier)); } private void CustomTagDescriptionModifier(Item item, ref string description) { //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_0066: Unknown result type (might be due to invalid IL or missing references) //IL_008e: Unknown result type (might be due to invalid IL or missing references) string text = ""; foreach (Tuple<Tag, string> item2 in new List<Tuple<Tag, string>> { new Tuple<Tag, string>(PointyTag, "Pointy"), new Tuple<Tag, string>(BastardTag, "Bastard"), new Tuple<Tag, string>(FinesseTag, "Finesse"), new Tuple<Tag, string>(HolyWeaponTag, "Holy"), new Tuple<Tag, string>(WandTag, "Wand") }) { if (item.HasTag(item2.Item1)) { text = text + ((text.Length > 0) ? ", " : "") + item2.Item2; } } if (text.Length > 0) { description = text + "\n\n" + description; } } private void BeforePacksLoaded() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_0029: 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_0038: 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_0051: 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_0060: Unknown result type (might be due to invalid IL or missing references) //IL_0065: Unknown result type (might be due to invalid IL or missing references) //IL_006f: 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_007e: Unknown result type (might be due to invalid IL or missing references) //IL_0083: 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_0092: Unknown result type (might be due to invalid IL or missing references) //IL_009c: 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_00ab: Unknown result type (might be due to invalid IL or missing references) //IL_00b0: Unknown result type (might be due to invalid IL or missing references) PointyTag = TinyTagManager.GetOrMakeTag("Pointy"); BastardTag = TinyTagManager.GetOrMakeTag("Bastard"); FinesseTag = TinyTagManager.GetOrMakeTag("Finesse"); HolyWeaponTag = TinyTagManager.GetOrMakeTag("Holy"); ParryTag = TinyTagManager.GetOrMakeTag("Parry"); BucklerTag = TinyTagManager.GetOrMakeTag("Buckler"); HalfHandedTag = TinyTagManager.GetOrMakeTag("HalfHanded"); SpecialLeapTag = TinyTagManager.GetOrMakeTag("SpecialLeap"); WandTag = TinyTagManager.GetOrMakeTag("Wand"); HandsFreeTag = TinyTagManager.GetOrMakeTag("HandsFreeTag"); LanternTag = TinyTagManager.GetOrMakeTag("Lantern"); MaulShoveTag = TinyTagManager.GetOrMakeTag("MaulShoveTag"); } private void OnPacksLoaded() { } public static void ChangeGrip(Character character, WeaponType toMoveset) { //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0016: Expected O, but got Unknown //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Expected I4, but got Unknown ((CharacterKnowledge)character.Inventory.SkillKnowledge).AddItem(new Item()); if (character != null) { Animator animator = character.Animator; if (animator != null) { animator.SetInteger("WeaponType", (int)toMoveset); } } } public static void ResetGrip(Character character) { //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_0037: Expected I4, but got Unknown //IL_0049: 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_0063: Unknown result type (might be due to invalid IL or missing references) //IL_0069: Invalid comparison between Unknown and I4 Weapon val = ((character != null) ? character.CurrentWeapon : null); if (val != null && character != null) { Animator animator = character.Animator; if (animator != null) { animator.SetInteger("WeaponType", (int)val.Type); } } Equipment val2 = ((character != null) ? character.LeftHandEquipment : null); if (val2 != null && ((Item)val2).HasTag(HandsFreeTag) && ((Item)val2).HasTag(LanternTag) && (int)val2.IKType == 0) { val2.IKType = (IKMode)1; } } } public class MaulShoveModifier : IMaulShoveModifier { public void ApplyDamageModifier(Weapon weapon, DamageList original, ref DamageList result) { result += original * -0.25f; } public void ApplyImpactModifier(Weapon weapon, float original, ref float result) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0007: 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_0009: Unknown result type (might be due to invalid IL or missing references) //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Invalid comparison between Unknown and I4 //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Invalid comparison between Unknown and I4 //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Invalid comparison between Unknown and I4 //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Invalid comparison between Unknown and I4 //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_0016: Invalid comparison between Unknown and I4 WeaponType type = weapon.Type; WeaponType val = type; if ((int)val <= 2) { if ((int)val <= 1) { goto IL_002a; } if ((int)val != 2) { return; } } else { if (val - 51 <= 1) { goto IL_002a; } if ((int)val != 53) { return; } } result += original * 0.5f; return; IL_002a: result += original * 2f; } public void ApplySpeedModifier(Weapon weapon, float original, ref float result) { result += original * -0.2f; } } public class BastardModifier : IBastardModifier { public void ApplyDamageModifier(Weapon weapon, DamageList original, ref DamageList result) { result += original * 0.1f; } public void ApplyImpactModifier(Weapon weapon, float original, ref float result) { result += original * 0.1f; } public void ApplySpeedModifier(Weapon weapon, float original, ref float result) { result += 0.1f; } public void ApplyStaminaModifier(Weapon weapon, float original, ref float stamina) { stamina += original * -0.4f; } }
plugins/EffectSourceConditions.dll
Decompiled 6 months agousing System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using BepInEx; using HarmonyLib; using TinyHelper; using UnityEngine; [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.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")] [assembly: AssemblyVersion("0.0.0.0")] namespace EffectSourceConditions; public class DynamicSkillStat : MonoBehaviour { public float ManaCost = 0f; public float StaminaCost = 0f; public float HealthCost = 0f; public float Cooldown = 2f; public float DurabilityCost = 0f; public SpellCastType CastType = (SpellCastType)(-1); public SpellCastModifier CastModifier = (SpellCastModifier)(-1); public float MobileCastMovementMult = -1f; public int CastSheatheRequired = 0; public bool CastLocomotionEnabled = false; public void SetSkillStats(Skill skill) { //IL_004b: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_0062: Unknown result type (might be due to invalid IL or missing references) //IL_0068: 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) skill.ManaCost = ManaCost; skill.StaminaCost = StaminaCost; skill.HealthCost = HealthCost; skill.DurabilityCost = DurabilityCost; ((Item)skill).CastSheathRequired = CastSheatheRequired; ((Item)skill).MobileCastMovementMult = MobileCastMovementMult; ((Item)skill).CastModifier = CastModifier; ((Item)skill).CastLocomotionEnabled = CastLocomotionEnabled; if (((Item)skill).ActivateEffectAnimType != CastType) { At.SetValue<SpellCastType>(CastType, typeof(Item), (object)skill, "m_activateEffectAnimType"); } if (!skill.InCooldown()) { skill.Cooldown = Cooldown; } } public static void UnsetSkillStats(Skill skill) { //IL_0041: 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_0054: Invalid comparison between Unknown and I4 skill.ManaCost = 0f; skill.StaminaCost = 0f; skill.HealthCost = 0f; skill.DurabilityCost = 0f; ((Item)skill).CastSheathRequired = 0; ((Item)skill).MobileCastMovementMult = -1f; ((Item)skill).CastModifier = (SpellCastModifier)0; ((Item)skill).CastLocomotionEnabled = false; if ((int)((Item)skill).ActivateEffectAnimType != -1) { At.SetValue<SpellCastType>((SpellCastType)(-1), typeof(Item), (object)skill, "m_activateEffectAnimType"); } if (!skill.InCooldown()) { skill.Cooldown = 0f; } } public static void TryUpdateSkillStats(Skill skill) { DynamicSkillStat[] componentsInChildren = ((Component)skill).gameObject.GetComponentsInChildren<DynamicSkillStat>(); if (componentsInChildren == null || componentsInChildren.Length == 0) { return; } bool flag = false; DynamicSkillStat[] array = componentsInChildren; foreach (DynamicSkillStat dynamicSkillStat in array) { Character ownerCharacter = ((EffectSynchronizer)skill).OwnerCharacter; if (ownerCharacter == null) { continue; } SourceCondition[] components = ((Component)dynamicSkillStat).gameObject.GetComponents<SourceCondition>(); if (components == null) { continue; } SourceCondition[] array2 = components; foreach (SourceCondition sourceCondition in array2) { if (sourceCondition.CharacterHasRequirement(ownerCharacter)) { dynamicSkillStat.SetSkillStats(skill); flag = true; } } } if (!flag) { UnsetSkillStats(skill); } } } [HarmonyPatch(/*Could not decode attribute arguments.*/)] public class Item_Description { [HarmonyPrefix] public static void Prefix(Item __instance) { Skill val = (Skill)(object)((__instance is Skill) ? __instance : null); if (val != null) { DynamicSkillStat.TryUpdateSkillStats(val); } } } [HarmonyPatch(typeof(Skill), "HasBaseRequirements")] public class Skill_HasBaseRequirements { [HarmonyPrefix] public static void Prefix(Skill __instance) { DynamicSkillStat.TryUpdateSkillStats(__instance); } } [BepInPlugin("com.ehaugw.effectsourceconditions", "Effect Source Conditions", "2.2.1")] public class EffectSourceConditions : BaseUnityPlugin { [HarmonyPatch(/*Could not decode attribute arguments.*/)] public class WeaponDamage_BuildDamage { [HarmonyPrefix] public static bool Prefix(Effect __instance, Character _targetCharacter, ref DamageList _list, ref float _knockback) { return HasSourceConditions(__instance); } } [HarmonyPatch(/*Could not decode attribute arguments.*/)] public class PunctualDamage_BuildDamage { [HarmonyPrefix] public static bool Prefix(Effect __instance, Character _targetCharacter, ref DamageList _list, ref float _knockback) { return HasSourceConditions(__instance); } } [HarmonyPatch(typeof(Effect), "TryTriggerConditions", new Type[] { typeof(Character), typeof(bool) })] public class Effect_TryTriggerConditions { [HarmonyPrefix] public static bool Prefix(Effect __instance, Character _affectedCharacter, bool _skipPriority) { return HasSourceConditions(__instance); } } public const string GUID = "com.ehaugw.effectsourceconditions"; public const string VERSION = "2.2.1"; public const string NAME = "Effect Source Conditions"; public const string EFFECTS_CONTAINER_ACTIVATION = "ActivationEffects"; public const string EFFECTS_CONTAINER = "Effects"; public const string SOURCE_CONDITION_CONTAINER = "SourceConditions"; public const string EFFECTS_MANUAL_CONTAINER = "ManualContainer"; internal void Awake() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Expected O, but got Unknown Harmony val = new Harmony("com.ehaugw.effectsourceconditions"); val.PatchAll(); } public static bool HasSourceConditions(Effect __instance) { object obj; if (__instance == null) { obj = null; } else { Transform transform = ((Component)__instance).transform; if (transform == null) { obj = null; } else { Transform obj2 = transform.Find("SourceConditions"); if (obj2 == null) { obj = null; } else { GameObject gameObject = ((Component)obj2).gameObject; obj = ((gameObject != null) ? gameObject.GetComponents<SourceCondition>() : null); } } } if (obj == null) { obj = new SourceCondition[0]; } SourceCondition[] array = (SourceCondition[])obj; foreach (SourceCondition sourceCondition in array) { if (!sourceCondition.CharacterHasRequirement(__instance.SourceCharacter)) { return false; } } return true; } } public class EffectSourceConditionChecker : EffectCondition { protected override bool CheckIsValid(Character _affectedCharacter) { SourceCondition[] componentsInChildren = ((Component)((Component)this).transform.parent.parent).gameObject.GetComponentsInChildren<SourceCondition>(); if (componentsInChildren != null) { SourceCondition[] array = componentsInChildren; foreach (SourceCondition sourceCondition in array) { if (sourceCondition.CharacterHasRequirement(_affectedCharacter)) { return !base.Invert; } } } return base.Invert; } public static ActivationCondition AddToSkill(Skill skill) { //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Expected O, but got Unknown Transform orMake = TinyGameObjectManager.GetOrMake(((Component)skill).transform, "AdditionalActivationConditions", true, true); GameObject gameObject = ((Component)TinyGameObjectManager.GetOrMake(orMake, "EffectSourceConditionChecker", true, true)).gameObject; ActivationCondition val = new ActivationCondition(); EffectSourceConditionChecker condition = gameObject.AddComponent<EffectSourceConditionChecker>(); val.Condition = (EffectCondition)(object)condition; At.SetValue<string>("This would have no effect.", typeof(ActivationCondition), (object)val, "m_defaultMessage"); List<ActivationCondition> list = (At.GetValue(typeof(Skill), (object)skill, "m_additionalConditions") as ActivationCondition[])?.ToList() ?? new List<ActivationCondition>(); list.Add(val); At.SetValue<ActivationCondition[]>(list.ToArray(), typeof(Skill), (object)skill, "m_additionalConditions"); return val; } } public abstract class SourceCondition : MonoBehaviour { public abstract bool CharacterHasRequirement(Character character); } public class SourceConditionEquipment : SourceCondition { public int RequiredItemID; public bool Inverted = false; public Item RequiredSkill { get { return ResourcesPrefabManager.Instance.GetItemPrefab(RequiredItemID); } set { RequiredItemID = value.ItemID; } } public override bool CharacterHasRequirement(Character character) { int result; if (RequiredItemID != 0) { int? obj; if (character == null) { obj = null; } else { CharacterInventory inventory = character.Inventory; if (inventory == null) { obj = null; } else { CharacterEquipment equipment = inventory.Equipment; obj = ((equipment != null) ? new int?(equipment.ItemEquippedCount(RequiredItemID)) : null); } } int? num = obj; result = (((num.GetValueOrDefault() > 0) ^ Inverted) ? 1 : 0); } else { result = 1; } return (byte)result != 0; } } public class SourceConditionMana : SourceCondition { public float ManaCost = 0f; public bool Inverted = false; public override bool CharacterHasRequirement(Character character) { return (ManaCost <= 0f || character.Mana >= character.Stats.GetFinalManaConsumption((Tag[])null, ManaCost)) ^ Inverted; } } public class SourceConditionQuest : SourceCondition { public int[] Quests; public bool Inverted = false; public LogicType Logic = (LogicType)0; public override bool CharacterHasRequirement(Character character) { //IL_0009: Unknown result type (might be due to invalid IL or missing references) return QuestRequirements.HasQuestKnowledge(character, Quests, Logic, Inverted, false); } } public class SourceConditionStatusEffect : SourceCondition { public string statusEffectName; public bool Inverted = false; public StatusEffect RequiredStatusEffect { get { return ResourcesPrefabManager.Instance.GetStatusEffectPrefab(statusEffectName); } set { statusEffectName = value.IdentifierName; } } public override bool CharacterHasRequirement(Character character) { int num; if (statusEffectName != null) { bool? obj; if (character == null) { obj = null; } else { StatusEffectManager statusEffectMngr = character.StatusEffectMngr; obj = ((statusEffectMngr != null) ? new bool?(statusEffectMngr.HasStatusEffect(statusEffectName)) : null); } bool? flag = obj; num = (flag.GetValueOrDefault() ? 1 : 0); } else { num = 0; } return (byte)((uint)num ^ (Inverted ? 1u : 0u)) != 0; } } public class SourceConditionSkill : SourceCondition { public int RequiredSkillID; public bool Inverted = false; public Item RequiredSkill { get { return ResourcesPrefabManager.Instance.GetItemPrefab(RequiredSkillID); } set { RequiredSkillID = value.ItemID; } } public override bool CharacterHasRequirement(Character character) { int result; if (RequiredSkillID != 0) { bool? obj; if (character == null) { obj = null; } else { CharacterInventory inventory = character.Inventory; if (inventory == null) { obj = null; } else { CharacterSkillKnowledge skillKnowledge = inventory.SkillKnowledge; obj = ((skillKnowledge != null) ? new bool?(((CharacterKnowledge)skillKnowledge).IsItemLearned(RequiredSkillID)) : null); } } bool? flag = obj; result = ((flag.GetValueOrDefault() ^ Inverted) ? 1 : 0); } else { result = 1; } return (byte)result != 0; } }
plugins/HolyDamageManager.dll
Decompiled 6 months agousing System.Collections.Generic; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using BepInEx; [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.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")] [assembly: AssemblyVersion("0.0.0.0")] namespace HolyDamageManager; [BepInPlugin("com.ehaugw.holydamagemanager", "Holy Damage Manager", "1.0.0")] public class HolyDamageManager : BaseUnityPlugin { public const string GUID = "com.ehaugw.holydamagemanager"; public const string VERSION = "1.0.0"; public const string NAME = "Holy Damage Manager"; private static Types m_holyDamageType; private static Tag m_holyDamageTag; internal void Awake() { //IL_0008: Unknown result type (might be due to invalid IL or missing references) SetHolyType((Types)3); SetHolyTag(Tag.None); } public static void SetHolyType(Types type) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) m_holyDamageType = type; } public static void SetHolyTag(Tag tag) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) m_holyDamageTag = tag; } public static float BuffHolyDamageOrHealing(Character character, float value) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000d: Expected O, but got Unknown //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Unknown result type (might be due to invalid IL or missing references) DamageList val = new DamageList(GetDamageType(), value); character.Stats.GetAmplifiedDamage((IList<Tag>)(object)new Tag[1] { GetDamageTag() }, ref val); return val.TotalDamage; } public static Tag GetDamageTag() { //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_0009: Unknown result type (might be due to invalid IL or missing references) return m_holyDamageTag; } public static Types GetDamageType() { //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_0009: Unknown result type (might be due to invalid IL or missing references) return m_holyDamageType; } public static int GetHolyIndex() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Expected I4, but got Unknown return (int)GetDamageType(); } public static float[] GetHolyDamageBonusArray(float damageBonus) { float[] array = new float[9]; array[GetHolyIndex()] = damageBonus; return array; } }
plugins/ImpendingDoom.dll
Decompiled 6 months agousing System; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using BepInEx; using HarmonyLib; using HolyDamageManager; using SideLoader; using TinyHelper; using TinyHelper.Effects; using UnityEngine; [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.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")] [assembly: AssemblyVersion("0.0.0.0")] namespace ImpendingDoom; public class WillDieFromImpendingDoom : EffectCondition { protected override bool CheckIsValid(Character _affectedCharacter) { StatusEffect statusEffectOfName = _affectedCharacter.StatusEffectMngr.GetStatusEffectOfName(ImpendingDoomMod.Instance.impendingDoomInstance.IdentifierName); if (statusEffectOfName != null) { float num = ImpendingDoom.RemainingDamage(_affectedCharacter, statusEffectOfName); if (num >= _affectedCharacter.Health && num >= 40f) { return true; } } return false; } } public class EffectInitializer { public static StatusEffect MakeImpendingDoomPrefab() { //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_0147: 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_0174: 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_01a7: Unknown result type (might be due to invalid IL or missing references) string impendingDoomEffectName = ModTheme.ImpendingDoomEffectName; string[] obj = new string[5] { "Take 1 ", null, null, null, null }; Types damageType = HolyDamageManager.GetDamageType(); obj[1] = ((object)(Types)(ref damageType)).ToString(); obj[2] = " over time and be smitten by thunder if you build up too much "; obj[3] = ModTheme.ImpendingDoomEffectName; obj[4] = "."; string text = string.Concat(obj); string text2 = Directory.GetParent(typeof(ImpendingDoomMod).Assembly.Location).ToString(); StatusEffect val = TinyEffectManager.MakeStatusEffectPrefab("ImpendingDoom", "ImpendingDoom", text, 15f, 1f, (StackBehaviors)1, "HolyBlaze", true, (string)null, (UID?)null, "com.ehaugw.impendingdoom", "\\SideLoader\\Texture2D\\impendingDoomIcon.png", impendingDoomEffectName, text2); EffectSignature statusEffectSignature = val.StatusEffectSignature; Transform transform = TinyGameObjectManager.MakeFreshObject("Effects", true, true, ((Component)statusEffectSignature).transform).transform; ImpendingDoom impendingDoom = ((Component)transform).gameObject.AddComponent<ImpendingDoom>(); ((Effect)impendingDoom).UseOnce = false; transform = TinyGameObjectManager.MakeFreshObject("Effects", true, true, ((Component)statusEffectSignature).transform).transform; WillDieFromImpendingDoom willDieFromImpendingDoom = ((Component)transform).gameObject.AddComponent<WillDieFromImpendingDoom>(); ShootBlastFromEffect val2 = ((Component)transform).gameObject.AddComponent<ShootBlastFromEffect>(); ((Effect)val2).UseOnce = true; ((Behaviour)val2).enabled = true; ((Component)val2).transform.parent = transform; ((ShootBlast)val2).BaseBlast = SL_ShootBlast.GetBlastPrefab((BlastPrefabs)99).GetComponent<Blast>(); ((ShootBlast)val2).InstanstiatedAmount = 5; ((Shooter)val2).CastPosition = (CastPositionType)0; ((Shooter)val2).TargetType = (TargetTypes)0; ((Shooter)val2).TransformName = "ShooterTransform"; ((ShootBlast)val2).UseTargetCharacterPositionType = false; ((Effect)val2).SyncType = (SyncTypes)0; ((Effect)val2).OverrideEffectCategory = (EffectCategories)0; ((Effect)val2).BasePotencyValue = 1f; ((Effect)val2).Delay = 0.25f; ((Shooter)val2).LocalCastPositionAdd = new Vector3(0f, -1f, 0f); ((ShootBlast)val2).BaseBlast.Radius = 4f; statusEffectSignature.Effects = new List<Effect> { (Effect)(object)impendingDoom, (Effect)(object)val2 }; Transform val3 = ((Component)((ShootBlast)val2).BaseBlast).transform.Find("Effects"); PunctualDamage component = ((Component)val3).GetComponent<PunctualDamage>(); Object.Destroy((Object)(object)component); component = (PunctualDamage)(object)((Component)val3).gameObject.AddComponent<ImpendingDoomDamage>(); ((Effect)component).Delay = 0.25f; component.Knockback = 40f; return val; } } public class ImpendingDoom : Effect { public const float RANGE = 4f; public const float LIFE_SPAN = 15f; public const float DAMAGE = 15f; public const float REFRESH_RATE = 1f; public const float BOOM_THRESHOLD = 40f; protected override void ActivateLocally(Character character, object[] _infos) { //IL_0048: 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_0055: Expected O, but got Unknown object field = At.GetField<Effect>((Effect)(object)this, "m_parentStatusEffect"); StatusEffect val = (StatusEffect)((field is StatusEffect) ? field : null); if (val != null && (Object)(object)((EffectSynchronizer)val).SourceCharacter != (Object)null && !character.Invincible) { float num = HolyDamageManager.BuffHolyDamageOrHealing(((EffectSynchronizer)val).SourceCharacter, 1f); DamageList val2 = new DamageList(HolyDamageManager.GetDamageType(), num); character.Stats.GetMitigatedDamage((Tag[])null, ref val2, true); character.Stats.ReceiveDamage(val2.TotalDamage); } } public static DamageList RemainingDamageList(Character character, StatusEffect parentStatusEffect, bool mitigated = true) { //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Expected O, but got Unknown float num = HolyDamageManager.BuffHolyDamageOrHealing(character, 15f * parentStatusEffect.RemainingLifespan / 15f); DamageList result = new DamageList(HolyDamageManager.GetDamageType(), num); if (mitigated) { character.Stats.GetMitigatedDamage((Tag[])null, ref result, true); } return result; } public static float RemainingDamage(Character character, StatusEffect parentStatusEffect, bool mitigated = true) { return RemainingDamageList(character, parentStatusEffect, mitigated).TotalDamage; } } [HarmonyPatch(typeof(StatusEffectManager), "OverrideStatusEffect", new Type[] { typeof(StatusEffect), typeof(StatusEffect) })] public class StatusEffectManager_OverrideStatusEffect_ImpendingDoom { [HarmonyPrefix] public static void Prefix(StatusEffectManager __instance, StatusEffect _existingEffect, StatusEffect _newEffect, out StatusData __state) { //IL_0044: Unknown result type (might be due to invalid IL or missing references) //IL_004e: Expected O, but got Unknown __state = null; if (_newEffect.IdentifierName == _existingEffect.IdentifierName && _newEffect.IdentifierName == ImpendingDoomMod.Instance.impendingDoomInstance.IdentifierName) { __state = _newEffect.StatusData; _newEffect.StatusData = new StatusData(__state); _newEffect.StatusData.LifeSpan = ((_newEffect.RemainingLifespan != 0f) ? _newEffect.RemainingLifespan : _newEffect.StartLifespan) + _existingEffect.RemainingLifespan; } } [HarmonyPostfix] public static void Postfix(StatusEffectManager __instance, StatusEffect _existingEffect, StatusEffect _newEffect, StatusData __state) { if (__state != null) { _newEffect.StatusData = __state; } } } internal class ImpendingDoomDamage : PunctualDamage { protected override void ActivateLocally(Character _affectedCharacter, object[] _infos) { EffectSynchronizer sourceSynchronizer = ((Effect)this).SourceSynchronizer; StatusEffect parentStatusEffect = (StatusEffect)(object)((sourceSynchronizer is StatusEffect) ? sourceSynchronizer : null); DamageList val = ImpendingDoom.RemainingDamageList(_affectedCharacter, parentStatusEffect); base.Damages = val.List.ToArray(); base.DamageAmplifiedByOwner = false; ((PunctualDamage)this).ActivateLocally(_affectedCharacter, _infos); } } [BepInPlugin("com.ehaugw.impendingdoom", "Impending Doom", "1.0.0")] public class ImpendingDoomMod : BaseUnityPlugin { public const string GUID = "com.ehaugw.impendingdoom"; public const string VERSION = "1.0.0"; public const string NAME = "Impending Doom"; public static ImpendingDoomMod Instance; public StatusEffect impendingDoomInstance; internal void Awake() { //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Expected O, but got Unknown Instance = this; Harmony val = new Harmony("com.ehaugw.impendingdoom"); val.PatchAll(); SL.OnPacksLoaded += OnPackLoaded; } private void OnPackLoaded() { impendingDoomInstance = EffectInitializer.MakeImpendingDoomPrefab(); } } public class ModTheme { public enum Theme { Elatt, DawnWeaver, Atheist, Crusader } public static Theme? modTheme; public const string ImpendingDoomEffectIdentifierName = "ImpendingDoom"; public static Theme GetTheme => modTheme ?? Theme.Crusader; public static string ImpendingDoomEffectName => "Impending Doom"; public static string Themifization() { return null; } }
plugins/TinyHelper.dll
Decompiled 6 months ago#define DEBUG using System; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Threading; using System.Threading.Tasks; using BepInEx; using HarmonyLib; using Localizer; using NodeCanvas.DialogueTrees; using NodeCanvas.Framework; using NodeCanvas.Tasks.Actions; using NodeCanvas.Tasks.Conditions; using Photon; using TinyHelper.Effects; using TinyHelper.Interfaces; using UnityEngine; [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.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")] [assembly: AssemblyVersion("0.0.0.0")] public static class TinyHelpers { public static void Shuffle<T>(this IList<T> list) { Random random = new Random(); int count = list.Count; for (int num = list.Count - 1; num > 1; num--) { int index = random.Next(num + 1); T value = list[index]; list[index] = list[num]; list[num] = value; } } } namespace TinyHelper { public static class At { public static BindingFlags flags = BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic; public static object Call(object obj, string method, params object[] args) { MethodInfo method2 = obj.GetType().GetMethod(method, flags); if (method2 != null) { return method2.Invoke(obj, args); } return null; } public static void SetValue<T>(T value, Type type, object obj, string field) { FieldInfo field2 = type.GetField(field, flags); if (field2 != null) { field2.SetValue(obj, value); } } public static object GetValue(Type type, object obj, string value) { FieldInfo field = type.GetField(value, flags); if (field != null) { return field.GetValue(obj); } return null; } public static void InheritBaseValues(object _derived, object _base) { FieldInfo[] fields = _base.GetType().GetFields(flags); foreach (FieldInfo fieldInfo in fields) { try { _derived.GetType().GetField(fieldInfo.Name).SetValue(_derived, fieldInfo.GetValue(_base)); } catch { } } } } public class QuestKnowledgeCondition : EffectCondition { public int[] Quests; public LogicType Logic = LogicType.Any; protected override bool CheckIsValid(Character _affectedCharacter) { return QuestRequirements.HasQuestKnowledge(_affectedCharacter, Quests, Logic); } } public class StatusEffectsCondition : EffectCondition { public enum LogicType { Any, All } public string[] StatusEffectNames; public LogicType Logic = LogicType.Any; protected override bool CheckIsValid(Character _affectedCharacter) { StatusEffectManager statusEffectManager = ((_affectedCharacter != null) ? _affectedCharacter.StatusEffectMngr : null); if (statusEffectManager != null) { IEnumerable<bool> source = StatusEffectNames.Select((string x) => (Object)(object)statusEffectManager.GetStatusEffectOfName(x) != (Object)null); return (Logic == LogicType.Any) ? source.Any((bool x) => x) : source.All((bool x) => x); } return false; } } public class AddNewStatusEffectRandom : AddStatusEffectRandom { protected override bool TryTriggerConditions() { List<StatusEffect> list = base.Statuses.ToList(); list.Shuffle(); base.ForceID = -1; for (int i = 0; i < list.Count; i++) { StatusEffect val = list[i]; if (!((Object)(object)val == (Object)null) && !((Object)(object)((Effect)this).m_affectedCharacter == (Object)null) && !((Effect)this).m_affectedCharacter.StatusEffectMngr.HasStatusEffect(val.EffectFamily)) { base.ForceID = UnityEngineExtensions.IndexOf<StatusEffect>(base.Statuses, val); break; } } return ((AddStatusEffectRandom)this).TryTriggerConditions(); } } public class CooldownChangeEffect : Effect { public float HitKnockbackCooldown = -1f; protected override void ActivateLocally(Character _affectedCharacter, object[] _infos) { Item parentItem = ((Effect)this).ParentItem; Skill val = (Skill)(object)((parentItem is Skill) ? parentItem : null); if (val != null && HitKnockbackCooldown != -1f && _affectedCharacter.IsInKnockback) { At.SetValue(HitKnockbackCooldown, typeof(Skill), val, "m_remainingCooldownTime"); } } } public class EquipSkillDurabilityCondition : EquipDurabilityCondition { protected override bool CheckIsValid(Character _affectedCharacter) { Skill component = ((Component)((Component)this).transform.parent.parent).gameObject.GetComponent<Skill>(); if (component != null) { base.DurabilityRequired = component.DurabilityCost; } return ((EquipDurabilityCondition)this).CheckIsValid(_affectedCharacter); } public static ActivationCondition AddToSkill(Skill skill, EquipmentSlotIDs slot) { //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Expected O, but got Unknown //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) Transform orMake = TinyGameObjectManager.GetOrMake(((Component)skill).transform, "AdditionalActivationConditions", setActive: true, dontDestroyOnLoad: true); GameObject gameObject = ((Component)TinyGameObjectManager.GetOrMake(orMake, "EquipSkillDurabilityCondition", setActive: true, dontDestroyOnLoad: true)).gameObject; ActivationCondition val = new ActivationCondition(); EquipSkillDurabilityCondition equipSkillDurabilityCondition = gameObject.AddComponent<EquipSkillDurabilityCondition>(); ((EquipDurabilityCondition)equipSkillDurabilityCondition).EquipmentSlot = slot; val.Condition = (EffectCondition)(object)equipSkillDurabilityCondition; At.SetValue("A required piece of equipment is missing or too damaged to be used this way.", typeof(ActivationCondition), val, "m_defaultMessage"); List<ActivationCondition> list = (At.GetValue(typeof(Skill), skill, "m_additionalConditions") as ActivationCondition[])?.ToList() ?? new List<ActivationCondition>(); list.Add(val); At.SetValue(list.ToArray(), typeof(Skill), skill, "m_additionalConditions"); return val; } public static ActivationCondition AddToSkillNotBroken(Skill skill, EquipmentSlotIDs slot) { //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Expected O, but got Unknown //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) Transform orMake = TinyGameObjectManager.GetOrMake(((Component)skill).transform, "AdditionalActivationConditions", setActive: true, dontDestroyOnLoad: true); GameObject gameObject = ((Component)TinyGameObjectManager.GetOrMake(orMake, "EquipDurabilityCondition", setActive: true, dontDestroyOnLoad: true)).gameObject; ActivationCondition val = new ActivationCondition(); EquipDurabilityCondition val2 = gameObject.AddComponent<EquipDurabilityCondition>(); val2.EquipmentSlot = slot; val2.DurabilityRequired = 0f; val.Condition = (EffectCondition)(object)val2; At.SetValue("A required piece of equipment is missing or broken.", typeof(ActivationCondition), val, "m_defaultMessage"); List<ActivationCondition> list = (At.GetValue(typeof(Skill), skill, "m_additionalConditions") as ActivationCondition[])?.ToList() ?? new List<ActivationCondition>(); list.Add(val); At.SetValue(list.ToArray(), typeof(Skill), skill, "m_additionalConditions"); return val; } } public class AffectCorruption : Effect { public float AffectQuantity = 0f; public bool AffectOwner = false; public bool IsRaw = false; protected override KeyValuePair<string, Type>[] GenerateSignature() { return new KeyValuePair<string, Type>[1] { new KeyValuePair<string, Type>("Value", typeof(float)) }; } public override void SetValue(string[] _data) { if (_data == null || _data.Length >= 1) { float.TryParse(_data[0], out AffectQuantity); } } protected override void ActivateLocally(Character _affectedCharacter, object[] _infos) { if (AffectOwner) { _affectedCharacter = ((Effect)this).OwnerCharacter; } if ((Object)(object)_affectedCharacter != (Object)null && _affectedCharacter.Alive && Object.op_Implicit((Object)(object)_affectedCharacter.PlayerStats)) { _affectedCharacter.PlayerStats.AffectCorruptionLevel(AffectQuantity, !IsRaw); } } } public class UseMana : Effect { public float UsedMana = 0f; protected override void ActivateLocally(Character _affectedCharacter, object[] _infos) { _affectedCharacter.Stats.UseMana((Tag[])null, UsedMana); } } public class SpecificImbueCondition : EffectCondition { public ImbueEffectPreset imbueEffectPreset; private bool inverse = false; protected override bool CheckIsValid(Character _affectedCharacter) { Weapon val = ((_affectedCharacter != null) ? _affectedCharacter.CurrentWeapon : null); return val != null && val.HasImbuePreset(imbueEffectPreset); } public static ActivationCondition AddToSkill(Skill skill, ImbueEffectPreset imbueEffectPreset, bool inverse = false) { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Expected O, but got Unknown //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Expected O, but got Unknown GameObject val = new GameObject("SpecificImbueCondition"); ActivationCondition val2 = new ActivationCondition(); SpecificImbueCondition specificImbueCondition = val.AddComponent<SpecificImbueCondition>(); Object.DontDestroyOnLoad((Object)(object)specificImbueCondition); val.SetActive(false); val2.Condition = (EffectCondition)(object)specificImbueCondition; specificImbueCondition.inverse = inverse; specificImbueCondition.imbueEffectPreset = imbueEffectPreset; At.SetValue("You do not have the required imbue effect.", typeof(ActivationCondition), val2, "m_defaultMessage"); List<ActivationCondition> list = (At.GetValue(typeof(Skill), skill, "m_additionalConditions") as ActivationCondition[])?.ToList() ?? new List<ActivationCondition>(); list.Add(val2); At.SetValue(list.ToArray(), typeof(Skill), skill, "m_additionalConditions"); return val2; } } public class ExtendedAddStatusEffect : AddStatusEffect { public bool ExtendDuration = false; protected override void ActivateLocally(Character _targetCharacter, object[] _infos) { //IL_005c: Unknown result type (might be due to invalid IL or missing references) //IL_0066: Expected O, but got Unknown StatusEffect status = base.Status; if (ExtendDuration) { bool? obj; if (_targetCharacter == null) { obj = null; } else { StatusEffectManager statusEffectMngr = _targetCharacter.StatusEffectMngr; obj = ((statusEffectMngr != null) ? new bool?(statusEffectMngr.HasStatusEffect(status.IdentifierName)) : null); } bool? flag = obj; if (flag.GetValueOrDefault()) { StatusData statusData = status.StatusData; status.StatusData = new StatusData(statusData); StatusEffect statusEffectOfName = _targetCharacter.StatusEffectMngr.GetStatusEffectOfName(status.IdentifierName); float num = ((statusEffectOfName != null) ? statusEffectOfName.RemainingLifespan : 0f); float num2 = ((status.RemainingLifespan > 0f) ? status.RemainingLifespan : status.StartLifespan); status.StatusData.LifeSpan = num2 + num; ((AddStatusEffect)this).ActivateLocally(_targetCharacter, _infos); status.StatusData = statusData; return; } } ((AddStatusEffect)this).ActivateLocally(_targetCharacter, _infos); } } public static class AnimatorExtension { public static bool HasParameter(this Animator animator, string paramName) { AnimatorControllerParameter[] parameters = animator.parameters; foreach (AnimatorControllerParameter val in parameters) { if (val.name == paramName) { return true; } } return false; } } public class TinyCharacterManager { public static Character SpawnCharacter(string uid, Vector3 position, Vector3 rotation) { //IL_0047: Unknown result type (might be due to invalid IL or missing references) //IL_0048: 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_006c: Unknown result type (might be due to invalid IL or missing references) Character character = CharacterManager.Instance.GetCharacter(uid); if ((Object)(object)character != (Object)null) { return character; } object[] array = new object[4] { 4, "NewPlayerPrefab", uid, string.Empty }; GameObject val = PhotonNetwork.InstantiateSceneObject("_characters/NewPlayerPrefab", position, Quaternion.Euler(rotation), (byte)0, array); val.SetActive(false); Character component = val.GetComponent<Character>(); component.SetUID(UID.op_Implicit(uid)); At.SetValue<Character>(component, typeof(int), 1, "m_isAI"); return component; } } public class TinyDialogueManager { public static GameObject AssignTrainerTemplate(Transform parentTransform) { //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_003c: Unknown result type (might be due to invalid IL or missing references) Object obj = Object.Instantiate(Resources.Load("editor/templates/TrainerTemplate")); GameObject val = (GameObject)(object)((obj is GameObject) ? obj : null); val.transform.parent = parentTransform; val.transform.position = parentTransform.position; val.transform.rotation = parentTransform.rotation; return val; } public static DialogueActor SetDialogueActorName(GameObject dialogueGameObject, string name) { DialogueActor componentInChildren = dialogueGameObject.GetComponentInChildren<DialogueActor>(); componentInChildren.SetName(name); return componentInChildren; } public static Trainer SetTrainerSkillTree(GameObject trainerTemplate, UID skillTreeUID) { //IL_0008: Unknown result type (might be due to invalid IL or missing references) Trainer componentInChildren = trainerTemplate.GetComponentInChildren<Trainer>(); At.SetValue<UID>(skillTreeUID, typeof(Trainer), componentInChildren, "m_skillTreeUID"); return componentInChildren; } public static Graph GetDialogueGraph(GameObject trainerTemplate) { DialogueTreeController componentInChildren = trainerTemplate.GetComponentInChildren<DialogueTreeController>(); return ((GraphOwner)componentInChildren).graph; } public static void SetActorReference(Graph graph, DialogueActor actor) { List<ActorParameter> list = At.GetValue(typeof(DialogueTree), (graph is DialogueTree) ? graph : null, "_actorParameters") as List<ActorParameter>; list[0].actor = (IDialogueActor)(object)actor; list[0].name = actor.name; } public static ActionNode MakeTrainDialogueAction(Graph graph, Trainer trainer) { Node obj = graph.allNodes[1]; ActionNode val = (ActionNode)(object)((obj is ActionNode) ? obj : null); ActionTask action = val.action; ((TrainDialogueAction)((action is TrainDialogueAction) ? action : null)).Trainer = new BBParameter<Trainer>(trainer); return val; } public static ActionNode MakeStartQuest(Graph graph, int questID) { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Expected O, but got Unknown ActionNode val = graph.AddNode<ActionNode>(); GiveQuest val3 = (GiveQuest)(object)(val.action = (ActionTask)new GiveQuest()); ref BBParameter<Quest> quest = ref val3.quest; Item itemPrefab = ResourcesPrefabManager.Instance.GetItemPrefab(questID); quest = new BBParameter<Quest>((Quest)(object)((itemPrefab is Quest) ? itemPrefab : null)); return val; } public static ActionNode MakeQuestEvent(Graph graph, string EventUID) { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Expected O, but got Unknown //IL_0017: 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_0029: Expected O, but got Unknown ActionNode val = graph.AddNode<ActionNode>(); SendQuestEvent val3 = (SendQuestEvent)(object)(val.action = (ActionTask)new SendQuestEvent()); val3.QuestEventRef = new QuestEventReference { EventUID = EventUID }; return val; } public static ConditionNode MakeEventOccuredCondition(Graph graph, string EventUID) { //IL_0009: Unknown result type (might be due to invalid IL or missing references) //IL_0013: Expected O, but got Unknown ConditionNode val = graph.AddNode<ConditionNode>(); val.condition = (ConditionTask)new Condition_QuestEventOccured(); return val; } public static ActionNode MakeGiveItemReward(Graph graph, int itemID, Receiver receiver, int quantity = 1) { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Expected O, but got Unknown //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Expected O, but got Unknown //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Expected O, but got Unknown ActionNode val = graph.AddNode<ActionNode>(); GiveReward val3 = (GiveReward)(object)(val.action = (ActionTask)new GiveReward()); val3.RewardReceiver = receiver; ItemQuantity val4 = new ItemQuantity(); ItemReference val5 = new ItemReference(); val5.ItemID = itemID; val4.Item = new BBParameter<ItemReference>(val5); val4.Quantity = BBParameter<int>.op_Implicit(quantity); val3.ItemReward = new List<ItemQuantity> { val4 }; return val; } public static StatementNodeExt MakeStatementNode(Graph graph, string name, string statementText) { //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_0014: Expected O, but got Unknown StatementNodeExt val = graph.AddNode<StatementNodeExt>(); val.statement = new Statement(statementText); val.SetActorName(name); return val; } public static MultipleChoiceNodeExt MakeMultipleChoiceNode(Graph graph, string[] statementTexts) { //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0020: 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_0032: Expected O, but got Unknown //IL_0037: Expected O, but got Unknown MultipleChoiceNodeExt val = graph.AddNode<MultipleChoiceNodeExt>(); foreach (string text in statementTexts) { val.availableChoices.Add(new Choice { statement = new Statement { text = text } }); } return val; } } public class TinyGameObjectManager { public static Transform GetOrMake(Transform parent, string child, bool setActive, bool dontDestroyOnLoad) { return parent.Find(child) ?? MakeFreshObject(child, setActive, dontDestroyOnLoad, parent).transform; } public static GameObject InstantiateClone(GameObject sourceGameObject, bool setActive, bool dontDestroyOnLoad) { return InstantiateClone(sourceGameObject, ((Object)sourceGameObject).name + "(Clone)", setActive, dontDestroyOnLoad); } public static GameObject InstantiateClone(GameObject sourceGameObject, string newGameObjectName, bool setActive, bool dontDestroyOnLoad) { GameObject val = Object.Instantiate<GameObject>(sourceGameObject); val.SetActive(setActive); ((Object)val).name = newGameObjectName; if (dontDestroyOnLoad) { Object.DontDestroyOnLoad((Object)(object)val); } return val; } public static Transform MakeFreshTransform(Transform parent, string child, bool setActive, bool dontDestroyOnLoad) { return MakeFreshObject(child, setActive, dontDestroyOnLoad, parent).transform; } public static GameObject MakeFreshObject(string newGameObjectName, bool setActive, bool dontDestroyOnLoad, Transform parent = null) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Expected O, but got Unknown GameObject val = new GameObject(newGameObjectName); val.SetActive(setActive); if ((Object)(object)parent != (Object)null) { val.transform.SetParent(parent); } if (dontDestroyOnLoad) { RecursiveDontDestroyOnLoad(val.transform); } return val; } public static void RecursiveDontDestroyOnLoad(Transform transform) { Transform val = transform; while ((Object)(object)val.parent != (Object)null) { val = val.parent; } Object.DontDestroyOnLoad((Object)(object)((Component)val).gameObject); } } public enum Behaviour { Add, Purge, Replace } public class TinyItemManager { private static Dictionary<int, ItemLocalization> m_ItemLocalizationDictionary; private static Dictionary<string, Item> m_ItemPrefabDictionary; private static Dictionary<int, ItemLocalization> ItemLocalizationDictionary { get { if (m_ItemLocalizationDictionary == null) { m_ItemLocalizationDictionary = At.GetValue(typeof(LocalizationManager), LocalizationManager.Instance, "m_itemLocalization") as Dictionary<int, ItemLocalization>; } return m_ItemLocalizationDictionary; } } private static Dictionary<string, Item> ItemPrefabDictionary { get { if (m_ItemPrefabDictionary == null) { m_ItemPrefabDictionary = At.GetValue(typeof(ResourcesPrefabManager), null, "ITEM_PREFABS") as Dictionary<string, Item>; } return m_ItemPrefabDictionary; } } public static bool SetLegacyResult(int itemID, int legacyOutcomeID) { Item itemPrefab = ResourcesPrefabManager.Instance.GetItemPrefab(itemID); if ((Object)(object)itemPrefab != (Object)null) { itemPrefab.LegacyItemID = legacyOutcomeID; return true; } return false; } public static bool AddEnchantingOption(int itemID, int enchantingRecipeID) { //IL_0045: 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_005b: Unknown result type (might be due to invalid IL or missing references) //IL_0066: Unknown result type (might be due to invalid IL or missing references) //IL_008b: 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) Item itemPrefab = ResourcesPrefabManager.Instance.GetItemPrefab(itemID); EnchantmentRecipe enchantmentRecipeForID = RecipeManager.Instance.GetEnchantmentRecipeForID(enchantingRecipeID); if ((Object)(object)enchantmentRecipeForID != (Object)null && (Object)(object)itemPrefab != (Object)null) { List<IngredientData> list = enchantmentRecipeForID.CompatibleEquipments.CompatibleEquipments.ToList(); list.Add(new IngredientData { Type = (IngredientType)1, SpecificIngredient = itemPrefab }); enchantmentRecipeForID.CompatibleEquipments = new EquipmentData { EquipmentTag = enchantmentRecipeForID.CompatibleEquipments.EquipmentTag, CompatibleEquipments = list.ToArray() }; return true; } return false; } public static Item MakeItem(int newID, int targetID, string name = null, string description = null, string identifierName = null) { Item val = TryCloneTargetItem(newID, targetID, newID + "_" + identifierName); ApplyNameAndDescription(val, name, description); return val; } public static Skill MakeSkill(int newID, int targetID, string name = null, string description = null, string identifierName = null, int? manaCost = 0, int? staminaCost = 0, int? healthCost = 0, bool? ignoreLearnNotification = null, bool? hideInUI = null) { Item obj = MakeItem(newID, targetID, name, description, identifierName); Skill val = (Skill)(object)((obj is Skill) ? obj : null); if (manaCost.HasValue) { val.ManaCost = manaCost.GetValueOrDefault(); } if (healthCost.HasValue) { val.HealthCost = healthCost.GetValueOrDefault(); } if (staminaCost.HasValue) { val.StaminaCost = staminaCost.GetValueOrDefault(); } val.IgnoreLearnNotification = ignoreLearnNotification.GetValueOrDefault(); return val; } public static Item TryCloneTargetItem(int newID, int targetID, string identifierName = null) { Dictionary<string, Item> itemPrefabDictionary = ItemPrefabDictionary; Item item = GetItem(targetID.ToString()); if ((Object)(object)item == (Object)null) { TinyHelper.TinyHelperPrint("Could not find target item with ID " + targetID + "."); return null; } if ((Object)(object)((Component)item).gameObject.GetComponent<Item>() == (Object)null) { TinyHelper.TinyHelperPrint(((Object)item).name + " is does not have an Item component."); return null; } GameObject val = Object.Instantiate<GameObject>(((Component)item).gameObject); val.SetActive(false); Object.DontDestroyOnLoad((Object)(object)val); Item component = val.GetComponent<Item>(); component.ItemID = newID; ((Object)component).name = identifierName ?? (newID + "_" + component.Name.Replace(" ", "")); ItemPrefabDictionary.Add(component.ItemID.ToString(), component); return component; } public static void ApplyNameAndDescription(Item item, string name, string description) { //IL_0003: Unknown result type (might be due to invalid IL or missing references) //IL_0009: Expected O, but got Unknown ItemLocalization value = new ItemLocalization(name, description); At.SetValue(name, typeof(Item), item, "m_name"); if (ItemLocalizationDictionary.ContainsKey(item.ItemID)) { ItemLocalizationDictionary[item.ItemID] = value; } else { ItemLocalizationDictionary.Add(item.ItemID, value); } } private static Item GetItem(int itemID) { return GetItem(itemID.ToString()); } private static Item GetItem(string itemID) { return ItemPrefabDictionary[itemID]; } } public class TinyHelperRPCManager : MonoBehaviour { public static TinyHelperRPCManager Instance; internal void Start() { Instance = this; PhotonView val = ((Component)this).gameObject.AddComponent<PhotonView>(); val.viewID = 954; Debug.Log((object)("Registered TinyHelpertRPC with ViewID " + ((MonoBehaviour)this).photonView.viewID)); } [PunRPC] public void ApplyAddImbueEffectRPC(string weaponGUID, int infusionID, float duration) { Item item = ItemManager.Instance.GetItem(weaponGUID); Weapon val = (Weapon)(object)((item is Weapon) ? item : null); ? val2 = val; EffectPreset effectPreset = ResourcesPrefabManager.Instance.GetEffectPreset(infusionID); ((Weapon)val2).AddImbueEffect((ImbueEffectPreset)(object)((effectPreset is ImbueEffectPreset) ? effectPreset : null), duration, (ImbueStack)null); } } public class QuestRequirements { public static bool HasQuestEvent(string questEventUID) { return QuestEventManager.Instance.GetEventCurrentStack(questEventUID) > 0; } public static bool HasQuestKnowledge(Character character, int[] questIDs, LogicType logicType, bool inverted = false, bool requireCompleted = false) { bool flag = false; object obj; if (character == null) { obj = null; } else { CharacterInventory inventory = character.Inventory; obj = ((inventory != null) ? inventory.QuestKnowledge : null); } CharacterQuestKnowledge q = (CharacterQuestKnowledge)obj; if (q != null) { IEnumerable<bool> source = questIDs.Select((int x) => ((CharacterKnowledge)q).IsItemLearned(x) && (q.IsQuestCompleted(x) || !requireCompleted)); flag = flag || ((logicType == LogicType.Any) ? source.Any((bool x) => x) : source.All((bool x) => x)); } return flag ^ inverted; } } public enum LogicType { Any, All } public class SkillRequirements { public static bool SafeHasSkillKnowledge(Character character, int skillID) { bool? obj; if (character == null) { obj = null; } else { CharacterInventory inventory = character.Inventory; if (inventory == null) { obj = null; } else { CharacterSkillKnowledge skillKnowledge = inventory.SkillKnowledge; obj = ((skillKnowledge != null) ? new bool?(((CharacterKnowledge)skillKnowledge).IsItemLearned(skillID)) : null); } } bool? flag = obj; return flag.GetValueOrDefault(); } } public class CustomTexture { public enum SpriteBorderTypes { None, Item, TrainerSkill } public enum IconName { m_itemIcon, SkillTreeIcon } private static Dictionary<string, byte[]> m_loadedTextures; private static Dictionary<string, byte[]> LoadedTextures { get { if (m_loadedTextures == null) { m_loadedTextures = new Dictionary<string, byte[]>(); } return m_loadedTextures; } } public static Texture2D LoadTexture(string filePath, int mipCount, bool linear, FilterMode filterMode, float? mipMapBias = null, string rootPath = null) { //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_0047: Expected O, but got Unknown //IL_0048: Unknown result type (might be due to invalid IL or missing references) filePath = (rootPath ?? TinyHelper.PLUGIN_ROOT_PATH) + filePath; if (!LoadedTextures.ContainsKey(filePath)) { LoadedTextures[filePath] = File.ReadAllBytes(filePath); } Texture2D val = new Texture2D(4, 4, (TextureFormat)12, mipCount > 0, linear); ((Texture)val).filterMode = filterMode; ((Texture)val).mipMapBias = mipMapBias ?? ((Texture)val).mipMapBias; ImageConversion.LoadImage(val, LoadedTextures[filePath]); ((Texture)val).filterMode = (FilterMode)1; return val; } public static Sprite MakeSprite(Texture2D texture, SpriteBorderTypes spriteBorderType) { //IL_0079: 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) float num; float num2; float num3; float num4; switch (spriteBorderType) { case SpriteBorderTypes.Item: num = 1f; num2 = 2f; num3 = 2f; num4 = 3f; break; case SpriteBorderTypes.TrainerSkill: num = 1f; num2 = 1f; num3 = 1f; num4 = 2f; break; default: num = 0f; num2 = 0f; num3 = 0f; num4 = 0f; break; } return Sprite.Create(texture, new Rect(num, num3, (float)((Texture)texture).width - num2, (float)((Texture)texture).height - num4), new Vector2(0f, 0f), 100f, 0u); } } public class CooldownChangeWeaponDamageTargetHealth : WeaponDamageTargetHealth { public float ExecuteSetCooldown = -1f; public float HitKnockbackCooldown = -1f; protected override void ActivateLocally(Character _affectedCharacter, object[] _infos) { Item parentItem = ((Effect)this).ParentItem; Skill val = (Skill)(object)((parentItem is Skill) ? parentItem : null); if (val != null) { if (HitKnockbackCooldown != -1f && _affectedCharacter.IsInKnockback) { At.SetValue(HitKnockbackCooldown, typeof(Skill), val, "m_remainingCooldownTime"); } bool isDead = _affectedCharacter.IsDead; ((WeaponDamage)this).ActivateLocally(_affectedCharacter, _infos); if (!isDead && _affectedCharacter.IsDead && ExecuteSetCooldown != -1f) { At.SetValue(ExecuteSetCooldown, typeof(Skill), val, "m_remainingCooldownTime"); } } } } public class ToggleEffect : Effect { public StatusEffect StatusEffectInstance; protected override void ActivateLocally(Character _affectedCharacter, object[] _infos) { if (_affectedCharacter.StatusEffectMngr.HasStatusEffect(StatusEffectInstance.IdentifierName)) { _affectedCharacter.StatusEffectMngr.CleanseStatusEffect(((Object)StatusEffectInstance).name); } else { _affectedCharacter.StatusEffectMngr.AddStatusEffect(StatusEffectInstance, ((Effect)this).SourceCharacter); } } } public class AddThenSpreadStatus : AddStatusEffect { public float Range; protected override void ActivateLocally(Character _affectedCharacter, object[] _infos) { //IL_0066: Unknown result type (might be due to invalid IL or missing references) if (base.AffectController) { _affectedCharacter = ((Effect)this).OwnerCharacter; } if ((Object)(object)((_affectedCharacter != null) ? _affectedCharacter.StatusEffectMngr : null) == (Object)null || (Object)(object)base.Status == (Object)null) { return; } if (_affectedCharacter.StatusEffectMngr.HasStatusEffect(base.Status.IdentifierName)) { List<Character> source = new List<Character>(); CharacterManager.Instance.FindCharactersInRange(_affectedCharacter.CenterPosition, Range, ref source); foreach (Character item in source.Where((Character c) => !c.IsAlly(((Effect)this).SourceCharacter))) { ((AddStatusEffect)this).ActivateLocally(item, _infos); } } ((AddStatusEffect)this).ActivateLocally(_affectedCharacter, _infos); } } public class EmptyOffHandCondition : EffectCondition { public bool AllowDrawnTwoHandedInRight = false; public bool AllowSheathedTwoHandedInLeft = false; protected override bool CheckIsValid(Character _affectedCharacter) { //IL_0035: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)_affectedCharacter == (Object)null) { goto IL_00dc; } bool? obj; if (_affectedCharacter == null) { obj = null; } else { Equipment leftHandEquipment = _affectedCharacter.LeftHandEquipment; obj = ((leftHandEquipment != null) ? new bool?(((Item)leftHandEquipment).HasTag(TinyTagManager.GetOrMakeTag("HandsFreeTag"))) : null); } if (obj ?? true) { bool? obj2; if (_affectedCharacter == null) { obj2 = null; } else { Weapon currentWeapon = _affectedCharacter.CurrentWeapon; obj2 = ((currentWeapon != null) ? new bool?(((Equipment)currentWeapon).TwoHanded) : null); } bool? flag = obj2; if (!flag.GetValueOrDefault()) { goto IL_00dc; } } if (!_affectedCharacter.Sheathed && AllowDrawnTwoHandedInRight) { Weapon currentWeapon2 = _affectedCharacter.CurrentWeapon; if (currentWeapon2 == null || ((Equipment)currentWeapon2).TwoHandedRight) { goto IL_00dc; } } int result; if (_affectedCharacter.Sheathed && AllowSheathedTwoHandedInLeft) { Weapon currentWeapon3 = _affectedCharacter.CurrentWeapon; result = ((currentWeapon3 == null || ((Equipment)currentWeapon3).TwoHandedRight) ? 1 : 0); } else { result = 0; } goto IL_00dd; IL_00dc: result = 1; goto IL_00dd; IL_00dd: return (byte)result != 0; } public static ActivationCondition AddToSkill(Skill skill, bool allowDrawnTwoHandedInRight = false, bool allowSheathedTwoHandedInLeft = false) { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Expected O, but got Unknown //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Expected O, but got Unknown GameObject val = new GameObject("EmptyOffhandCondition"); ActivationCondition val2 = new ActivationCondition(); EmptyOffHandCondition emptyOffHandCondition = val.AddComponent<EmptyOffHandCondition>(); Object.DontDestroyOnLoad((Object)(object)emptyOffHandCondition); val.SetActive(false); val2.Condition = (EffectCondition)(object)emptyOffHandCondition; emptyOffHandCondition.AllowDrawnTwoHandedInRight = allowDrawnTwoHandedInRight; emptyOffHandCondition.AllowSheathedTwoHandedInLeft = allowSheathedTwoHandedInLeft; At.SetValue("Requires an empty left hand.", typeof(ActivationCondition), val2, "m_defaultMessage"); List<ActivationCondition> list = (At.GetValue(typeof(Skill), skill, "m_additionalConditions") as ActivationCondition[])?.ToList() ?? new List<ActivationCondition>(); list.Add(val2); At.SetValue(list.ToArray(), typeof(Skill), skill, "m_additionalConditions"); return val2; } } internal class InputEnablerEffect : Effect { protected override void ActivateLocally(Character _affectedCharacter, object[] _infos) { StatusEffect parentStatusEffect = base.m_parentStatusEffect; if (parentStatusEffect != null && (double)((_affectedCharacter != null) ? _affectedCharacter.AnimMoveSqMagnitude : 0f) > 0.1 && (double)parentStatusEffect.Age > 0.5) { StatusEffectManager statusEffectMngr = _affectedCharacter.StatusEffectMngr; if (statusEffectMngr != null) { statusEffectMngr.CleanseStatusEffect(parentStatusEffect.IdentifierName); } _affectedCharacter.ForceCancel(true, true); } } } internal class TinyUnofficialPatches { } [HarmonyPatch(typeof(Skill), "HasEnoughMana")] public class Skill_HasEnoughMana { [HarmonyPostfix] public static void Postfix(Skill __instance, ref bool _tryingToActivate, ref bool __result) { if (__instance.ManaCost <= 0f) { __result = true; } } } [HarmonyPatch(typeof(Skill), "HasEnoughStamina")] public class Skill_HasEnoughStamina { [HarmonyPostfix] public static void Postfix(Skill __instance, ref bool _tryingToActivate, ref bool __result) { if (__instance.StaminaCost <= 0f) { __result = true; } } } [HarmonyPatch(typeof(Skill), "HasEnoughHealth")] public class Skill_HasEnoughHealth { [HarmonyPostfix] public static void Postfix(Skill __instance, ref bool _tryingToActivate, ref bool __result) { if (__instance.HealthCost <= 0f) { __result = true; } } } public class WeaponManager { public static Dictionary<WeaponType, float> Speeds = new Dictionary<WeaponType, float> { { (WeaponType)0, 1.251f }, { (WeaponType)1, 1.399f }, { (WeaponType)2, 1.629f }, { (WeaponType)51, 1.71f }, { (WeaponType)52, 1.667f }, { (WeaponType)53, 2.036f }, { (WeaponType)54, 1.499f }, { (WeaponType)50, 1.612f } }; } public class TinyTagManager { public static Tag GetOrMakeTag(string name) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_002b: 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_0078: Unknown result type (might be due to invalid IL or missing references) //IL_003c: Unknown result type (might be due to invalid IL or missing references) //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0072: Unknown result type (might be due to invalid IL or missing references) //IL_0073: Unknown result type (might be due to invalid IL or missing references) //IL_007b: Unknown result type (might be due to invalid IL or missing references) Tag val = ((IEnumerable<Tag>)TagSourceManager.Instance.DbTags).FirstOrDefault((Func<Tag, bool>)((Tag x) => x.TagName == name)); if (val == Tag.None) { ((Tag)(ref val))..ctor(TagSourceManager.TagRoot, name); ((Tag)(ref val)).SetTagType((TagTypes)0); TagSourceManager.Instance.DbTags.Add(val); TagSourceManager.Instance.RefreshTags(true); return val; } return val; } public static string[] GetOrMakeTags(string[] names) { //IL_000e: Unknown result type (might be due to invalid IL or missing references) foreach (string name in names) { GetOrMakeTag(name); } return names; } public static string[] GetSafeTags(string[] tags) { //IL_0034: Unknown result type (might be due to invalid IL or missing references) List<string> list = new List<string>(); foreach (string tag in tags) { ((IEnumerable<Tag>)TagSourceManager.Instance.DbTags).FirstOrDefault((Func<Tag, bool>)((Tag x) => x.TagName == tag || ((Tag)(ref x)).UID == UID.op_Implicit(tag))); if (true) { list.Add(tag); } } return list.ToArray(); } } public class TinyUIDManager { public static UID MakeUID(string name, string modGUID, string category) { //IL_006e: Unknown result type (might be due to invalid IL or missing references) //IL_0073: 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_002e: Unknown result type (might be due to invalid IL or missing references) //IL_002f: 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) if (modGUID == null || name == null || category == null) { Debug.LogError((object)$"TinyUIDManager.MakeUID({name}, {modGUID}, {category} returned a random UID. This will cause trouble in multiplayer!"); return default(UID); } return new UID((modGUID + "." + category + "." + name).Replace(" ", "").ToLower()); } } [BepInPlugin("com.ehaugw.tinyhelper", "Tiny Helper", "4.3.4")] public class TinyHelper : BaseUnityPlugin { public delegate void DescriptionModifier(Item item, ref string description); [HarmonyPatch(typeof(ResourcesPrefabManager), "Load")] public class ResourcesPrefabManager_Load { [HarmonyPostfix] public static void Postfix() { ResourcesPrefabManager instance = ResourcesPrefabManager.Instance; if (instance != null && instance.Loaded) { TinyHelper.OnPrefabLoaded(); } } } [HarmonyPatch(/*Could not decode attribute arguments.*/)] public class Item_Description { [HarmonyPostfix] public static void Postfix(Item __instance, ref string __result) { OnDescriptionModified(__instance, ref __result); } } public const string GUID = "com.ehaugw.tinyhelper"; public const string VERSION = "4.3.4"; public const string NAME = "Tiny Helper"; public static DescriptionModifier OnDescriptionModified; public static TinyHelper Instance; private static int tinyHelperPrintedMessages; public static string PLUGIN_ROOT_PATH => typeof(TinyHelper).Assembly.Location + "\\..\\..\\"; public static event Action OnPrefabLoaded; internal void Awake() { //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Expected O, but got Unknown //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_002b: Expected O, but got Unknown Instance = this; GameObject val = new GameObject("CrusaderRPC"); Object.DontDestroyOnLoad((Object)(object)val); val.AddComponent<TinyHelperRPCManager>(); Harmony val2 = new Harmony("com.ehaugw.tinyhelper"); val2.PatchAll(); } public static void TinyHelperPrint(string str) { Debug.Log((object)("TinyHelper #" + tinyHelperPrintedMessages++ + ": " + str)); } static TinyHelper() { TinyHelper.OnPrefabLoaded = delegate { }; OnDescriptionModified = delegate { }; tinyHelperPrintedMessages = 0; } } public class DelayedTask { public static Task GetTask(int milliseconds) { TaskCompletionSource<object> tcs = new TaskCompletionSource<object>(); new Timer(delegate { tcs.SetResult(null); }).Change(milliseconds, -1); return tcs.Task; } } public class TinyEffectManager { public static StatusEffect MakeStatusEffectPrefab(string effectName, string familyName, string description, float lifespan, float refreshRate, StackBehaviors stackBehavior, string targetStatusName, bool isMalusEffect, string tagID = null, UID? uid = null, string modGUID = null, string iconFileName = null, string displayName = null, string rootPath = null) { //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0157: Unknown result type (might be due to invalid IL or missing references) //IL_015c: 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_0149: Unknown result type (might be due to invalid IL or missing references) //IL_0168: Expected O, but got Unknown //IL_0187: 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_018f: Expected O, but got Unknown //IL_0194: Expected O, but got Unknown //IL_0219: Unknown result type (might be due to invalid IL or missing references) //IL_0210: Unknown result type (might be due to invalid IL or missing references) //IL_021e: 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_023f: Expected O, but got Unknown Dictionary<string, StatusEffect> dictionary = At.GetValue(typeof(ResourcesPrefabManager), null, "STATUSEFFECT_PREFABS") as Dictionary<string, StatusEffect>; StatusEffectFamily val = MakeStatusEffectFamiliy(familyName, stackBehavior, -1, (LengthTypes)0); GameObject val2 = TinyGameObjectManager.InstantiateClone(((Component)dictionary[targetStatusName]).gameObject, effectName, setActive: false, dontDestroyOnLoad: true); StatusEffect obj = val2.GetComponent<StatusEffect>() ?? val2.AddComponent<StatusEffect>(); StatusEffect val3 = obj; dictionary[effectName] = obj; StatusEffect val4 = val3; At.SetValue(effectName, typeof(StatusEffect), val4, "m_identifierName"); At.SetValue<StatusEffectFamily>(val, typeof(StatusEffect), val4, "m_bindFamily"); At.SetValue(displayName ?? effectName, typeof(StatusEffect), val4, "m_nameLocKey"); At.SetValue(description, typeof(StatusEffect), val4, "m_descriptionLocKey"); val4.RefreshRate = refreshRate; val4.IsMalusEffect = isMalusEffect; At.SetValue<EffectSignatureModes>((EffectSignatureModes)1, typeof(StatusEffect), val4, "m_effectSignatureMode"); At.SetValue<FamilyModes>((FamilyModes)0, typeof(StatusEffect), val4, "m_familyMode"); val4.RequiredStatus = null; val4.RemoveRequiredStatus = false; if (iconFileName != null) { val4.OverrideIcon = CustomTexture.MakeSprite(CustomTexture.LoadTexture(iconFileName, 0, linear: false, (FilterMode)0, null, rootPath), CustomTexture.SpriteBorderTypes.None); } TagSourceSelector value = ((tagID != null) ? new TagSourceSelector(TagSourceManager.Instance.GetTag(UID.op_Implicit(tagID))) : new TagSourceSelector()); At.SetValue<TagSourceSelector>(value, typeof(StatusEffect), val4, "m_effectType"); StatusData val5 = new StatusData(val4.StatusData); StatusData val6 = val5; val4.StatusData = val5; StatusData val7 = val6; val7.LifeSpan = lifespan; List<StatusData> list = At.GetValue(typeof(StatusEffect), val4, "m_statusStack") as List<StatusData>; list[0] = val7; Object.Destroy((Object)(object)((Component)val2.GetComponentInChildren<EffectSignature>()).gameObject); EffectSignature val8 = TinyGameObjectManager.MakeFreshObject("Signature", setActive: true, dontDestroyOnLoad: true).AddComponent<EffectSignature>(); ((Object)val8).name = "Signature"; val8.SignatureUID = (UID)(((??)uid) ?? TinyUIDManager.MakeUID(effectName, modGUID, "Status Effect")); EffectSignature effectSignature = (val7.EffectSignature = val8); val.EffectSignature = effectSignature; StatusEffectFamilySelector val10 = new StatusEffectFamilySelector(); ((UidSelector<StatusEffectFamily>)(object)val10).Set(val); At.SetValue<StatusEffectFamilySelector>(val10, typeof(StatusEffect), val4, "m_stackingFamily"); return val4; } public static StatusEffectFamily MakeStatusEffectFamiliy(string familyName, StackBehaviors stackBehavior, int maxStackCount, LengthTypes lengthType, UID? uid = null, string modGUID = null) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Expected O, but got Unknown //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_0061: Unknown result type (might be due to invalid IL or missing references) //IL_0062: Unknown result type (might be due to invalid IL or missing references) //IL_006f: 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_0028: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Unknown result type (might be due to invalid IL or missing references) StatusEffectFamily val = new StatusEffectFamily(); uid = (UID)(((??)uid) ?? ((modGUID != null) ? TinyUIDManager.MakeUID(familyName, modGUID, "Status Effect Family") : UID.Generate())); At.SetValue<UID>(uid.Value, typeof(StatusEffectFamily), val, "m_uid"); val.Name = familyName; val.StackBehavior = stackBehavior; val.MaxStackCount = maxStackCount; val.LengthType = lengthType; return val; } public static void SetNameAndDesc(EffectPreset imbueEffect, string name, string desc) { //IL_0003: Unknown result type (might be due to invalid IL or missing references) //IL_0009: Expected O, but got Unknown ItemLocalization value = new ItemLocalization(name, desc); if (At.GetValue(typeof(LocalizationManager), LocalizationManager.Instance, "m_itemLocalization") is Dictionary<int, ItemLocalization> dictionary) { if (dictionary.ContainsKey(imbueEffect.PresetID)) { dictionary[imbueEffect.PresetID] = value; } else { dictionary.Add(imbueEffect.PresetID, value); } } } public static AddStatusEffectBuildUp MakeStatusEffectBuildup(Transform effectTransform, string statusEffectName, float buildup) { //IL_0027: Unknown result type (might be due to invalid IL or missing references) AddStatusEffectBuildUp val = ((Component)effectTransform).gameObject.AddComponent<AddStatusEffectBuildUp>(); val.BuildUpValue = buildup; val.Status = ResourcesPrefabManager.Instance.GetStatusEffectPrefab(statusEffectName); ((Effect)val).OverrideEffectCategory = (EffectCategories)4; return val; } public static AddStatusEffect MakeStatusEffectChance(Transform effectTransform, string statusEffectName, int chance) { //IL_0028: Unknown result type (might be due to invalid IL or missing references) AddStatusEffect val = ((Component)effectTransform).gameObject.AddComponent<AddStatusEffect>(); val.SetChanceToContract(chance); val.Status = ResourcesPrefabManager.Instance.GetStatusEffectPrefab(statusEffectName); ((Effect)val).OverrideEffectCategory = (EffectCategories)4; return val; } public static WeaponDamage MakeWeaponDamage(Transform effectTransform, float baseDamage, float damageScaling, Types damageType, float knockback) { //IL_001b: 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_002a: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Expected O, but got Unknown //IL_0039: Unknown result type (might be due to invalid IL or missing references) WeaponDamage val = ((Component)effectTransform).gameObject.AddComponent<WeaponDamage>(); val.WeaponDamageMult = 1f + damageScaling; val.OverrideDType = damageType; ((PunctualDamage)val).Damages = (DamageType[])(object)new DamageType[1] { new DamageType(damageType, baseDamage) }; ((Effect)val).OverrideEffectCategory = (EffectCategories)4; ((PunctualDamage)val).Knockback = knockback; return val; } public static WeaponDamage MakeDynamicWeaponDamage(Transform effectTransform, IDamageScaler damageScaler) { //IL_000f: Unknown result type (might be due to invalid IL or missing references) DynamicWeaponDamage dynamicWeaponDamage = ((Component)effectTransform).gameObject.AddComponent<DynamicWeaponDamage>(); ((Effect)dynamicWeaponDamage).OverrideEffectCategory = (EffectCategories)4; dynamicWeaponDamage.DamageScaler = damageScaler; return (WeaponDamage)(object)dynamicWeaponDamage; } public static void MakeAbsorbHealth(Transform effectTransform, float absorbRatio) { AddAbsorbHealth obj = ((Component)effectTransform).gameObject.AddComponent<AddAbsorbHealth>(); At.SetValue(absorbRatio, typeof(AddAbsorbHealth), obj, "m_healthRatio"); } public static ImbueEffectPreset MakeImbuePreset(int imbueID, string name, string description, string iconFileName = null, int? visualEffectID = null, List<Skill> replaceOnSkills = null, string statusEffectName = null, int? chanceToContract = null, int? buildUp = null, float? scalingDamage = null, float? flatDamage = null, float? knockback = null, Types? damageType = null) { //IL_004f: Unknown result type (might be due to invalid IL or missing references) //IL_0055: Expected O, but got Unknown //IL_00f4: Unknown result type (might be due to invalid IL or missing references) //IL_0111: Unknown result type (might be due to invalid IL or missing references) //IL_0236: Unknown result type (might be due to invalid IL or missing references) //IL_0247: Expected O, but got I4 //IL_023b->IL023b: Incompatible stack types: O vs I4 //IL_0234->IL023b: Incompatible stack types: I4 vs O //IL_0234->IL023b: Incompatible stack types: O vs I4 Dictionary<int, EffectPreset> dictionary = (Dictionary<int, EffectPreset>)At.GetValue(typeof(ResourcesPrefabManager), null, "EFFECTPRESET_PREFABS"); if (!dictionary.ContainsKey(imbueID)) { GameObject val = new GameObject(imbueID + "_" + name.Replace(" ", "")); val.SetActive(true); Object.DontDestroyOnLoad((Object)(object)val); ImbueEffectPreset val2 = val.AddComponent<ImbueEffectPreset>(); ((Object)val2).name = imbueID + "_" + name.Replace(" ", ""); At.SetValue(imbueID, typeof(EffectPreset), val2, "m_StatusEffectID"); At.SetValue(name, typeof(ImbueEffectPreset), val2, "m_imbueNameKey"); At.SetValue(description, typeof(ImbueEffectPreset), val2, "m_imbueDescKey"); if (visualEffectID.HasValue) { val2.ImbueStatusIcon = ((ImbueEffectPreset)dictionary[visualEffectID.Value]).ImbueStatusIcon; val2.ImbueFX = ((ImbueEffectPreset)dictionary[visualEffectID.Value]).ImbueFX; } if (iconFileName != null) { val2.ImbueStatusIcon = CustomTexture.MakeSprite(CustomTexture.LoadTexture(iconFileName, 0, linear: false, (FilterMode)0), CustomTexture.SpriteBorderTypes.None); } SetNameAndDesc((EffectPreset)(object)val2, name, description); dictionary.Add(imbueID, (EffectPreset)(object)val2); if (statusEffectName != null && chanceToContract.GetValueOrDefault() > 0) { MakeStatusEffectChance(TinyGameObjectManager.GetOrMake(((Component)val2).transform, "Effects", setActive: true, dontDestroyOnLoad: true), statusEffectName, chanceToContract.GetValueOrDefault()); } if (statusEffectName != null && buildUp.GetValueOrDefault() > 0) { MakeStatusEffectBuildup(TinyGameObjectManager.GetOrMake(((Component)val2).transform, "Effects", setActive: true, dontDestroyOnLoad: true), statusEffectName, buildUp.GetValueOrDefault()); } if (scalingDamage.GetValueOrDefault() > 0f || flatDamage.GetValueOrDefault() > 0f || knockback.GetValueOrDefault() > 0f) { object obj = TinyGameObjectManager.GetOrMake(((Component)val2).transform, "Effects", setActive: true, dontDestroyOnLoad: true); float valueOrDefault = flatDamage.GetValueOrDefault(); valueOrDefault = scalingDamage.GetValueOrDefault(); Types? val3 = damageType; int num; if (val3.HasValue) { obj = val3.GetValueOrDefault(); num = (int)obj; } else { num = 9; obj = num; num = (int)obj; } MakeWeaponDamage((Transform)(object)num, valueOrDefault, valueOrDefault, (Types)obj, knockback.GetValueOrDefault()); } foreach (Skill item in replaceOnSkills ?? new List<Skill>()) { if ((Object)(object)item != (Object)null) { ((ImbueObject)((Component)item).GetComponentInChildren<ImbueWeapon>()).ImbuedEffect = val2; } } return val2; } return null; } public static EffectPreset GetEffectPreset(int effectID) { Dictionary<int, EffectPreset> dictionary = (Dictionary<int, EffectPreset>)At.GetValue(typeof(ResourcesPrefabManager), null, "EFFECTPRESET_PREFABS"); if (dictionary.ContainsKey(effectID)) { EffectPreset val = dictionary[effectID]; if (val != null) { return val; } } return null; } public static void AddStatusEffectForDuration(Character character, StatusEffect statusEffect, float duration, Character source = null) { //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_0014: Expected O, but got Unknown StatusData statusData = statusEffect.StatusData; statusEffect.StatusData = new StatusData(statusData); statusEffect.StatusData.LifeSpan = duration; character.StatusEffectMngr.AddStatusEffect(statusEffect, source); statusEffect.StatusData = statusData; } public static void ChangeEffectPresetDamageTypeData(EffectPreset effect, Types originalType, Types newType) { //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_005a: Unknown result type (might be due to invalid IL or missing references) //IL_005f: 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_006b: Unknown result type (might be due to invalid IL or missing references) PunctualDamage[] componentsInChildren = ((Component)effect).gameObject.GetComponentsInChildren<PunctualDamage>(); foreach (PunctualDamage val in componentsInChildren) { WeaponDamage val2 = (WeaponDamage)(object)((val is WeaponDamage) ? val : null); if (val2 != null && val2.OverrideDType == originalType) { val2.OverrideDType = newType; } DamageType[] damages = val.Damages; foreach (DamageType val3 in damages) { if (val3.Type == originalType) { val3.Type = newType; } } } } } public class CasualStagger : Effect { protected override void ActivateLocally(Character _affectedCharacter, object[] _infos) { Stagger(_affectedCharacter); } public static void Stagger(Character character) { At.SetValue<HurtType>((HurtType)1, typeof(Character), character, "m_hurtType"); character.Animator.SetTrigger("Knockback"); character.ForceCancel(false, true); ((MonoBehaviour)character).Invoke("DelayedForceCancel", 0.3f); if (Object.op_Implicit((Object)(object)character.CharacterUI)) { character.CharacterUI.OnPlayerKnocked(); } } } public class CooldownChangeWeaponDamage : WeaponDamage { public float ExecutionSetCooldown = -1f; public float HitKnockbackCooldown = -1f; protected override void ActivateLocally(Character _affectedCharacter, object[] _infos) { Item parentItem = ((Effect)this).ParentItem; Skill val = (Skill)(object)((parentItem is Skill) ? parentItem : null); if (val != null) { if (HitKnockbackCooldown != -1f && _affectedCharacter.IsInKnockback) { At.SetValue(HitKnockbackCooldown, typeof(Skill), val, "m_remainingCooldownTime"); } bool isDead = _affectedCharacter.IsDead; ((WeaponDamage)this).ActivateLocally(_affectedCharacter, _infos); if (!isDead && _affectedCharacter.IsDead && ExecutionSetCooldown != -1f) { At.SetValue(ExecutionSetCooldown, typeof(Skill), val, "m_remainingCooldownTime"); } } } } } namespace TinyHelper.Interfaces { public interface IDamageScaler { float GetWeaponDamageMult(WeaponDamage weaponDamage); Types GetOverrideDType(WeaponDamage weaponDamage); DamageType[] GetDamages(WeaponDamage weaponDamage); float GetKnockback(WeaponDamage weaponDamage); } } namespace TinyHelper.Effects { public class DynamicWeaponDamage : WeaponDamage { public IDamageScaler DamageScaler = null; private void Recalculate() { //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) Console.WriteLine("recalculated"); Debug.WriteLine("recalculated"); base.WeaponDamageMult = DamageScaler.GetWeaponDamageMult((WeaponDamage)(object)this); base.OverrideDType = DamageScaler.GetOverrideDType((WeaponDamage)(object)this); ((PunctualDamage)this).Damages = DamageScaler.GetDamages((WeaponDamage)(object)this); ((PunctualDamage)this).Knockback = DamageScaler.GetKnockback((WeaponDamage)(object)this); } protected override void StartInit() { Recalculate(); ((WeaponDamage)this).StartInit(); } public override Weapon BuildDamage(Character _targetCharacter, ref DamageList _list, ref float _knockback) { Recalculate(); return ((WeaponDamage)this).BuildDamage(_targetCharacter, ref _list, ref _knockback); } protected override void BuildDamage(Weapon _weapon, Character _targetCharacter, bool _isSkillOrShield, ref DamageList _list, ref float _knockback) { Recalculate(); ((WeaponDamage)this).BuildDamage(_weapon, _targetCharacter, _isSkillOrShield, ref _list, ref _knockback); } protected override void ActivateLocally(Character _targetCharacter, object[] _infos) { Recalculate(); ((WeaponDamage)this).ActivateLocally(_targetCharacter, _infos); } protected override DamageList DealHit(Character _targetCharacter) { Recalculate(); return ((WeaponDamage)this).DealHit(_targetCharacter); } public override float DamageMult(Character _targetCharacter, bool _isSkill) { Recalculate(); return ((WeaponDamage)this).DamageMult(_targetCharacter, _isSkill); } public override float KnockbackMult(Character _targetCharacter, bool _isSkill) { Recalculate(); return ((WeaponDamage)this).KnockbackMult(_targetCharacter, _isSkill); } } public class ShootBlastFromEffect : ShootBlast { public override void Setup(TargetingSystem _targetSystem, Transform _parent) { Character sourceCharacter = ((Effect)this).SourceCharacter; ((Shooter)this).Setup(((sourceCharacter != null) ? sourceCharacter.TargetingSystem : null) ?? _targetSystem, _parent); } } }