Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
Decompiled source of MagnificentMagicks v4.2.0
MagnificentMagicks.dll
Decompiled 7 months agousing System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using BepInEx; using BepInEx.Configuration; using HarmonyLib; using Jotunn; using Jotunn.Configs; using Jotunn.Entities; using Jotunn.Managers; using Jotunn.Utils; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: AssemblyTitle("MagnificentMagicks")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("MagnificentMagicks")] [assembly: AssemblyCopyright("Copyright © 2025")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("21fd0ae0-12ac-4ca9-9492-972a7d3d8423")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")] [assembly: AssemblyVersion("1.0.0.0")] namespace MagnificentMagicks; [BepInPlugin("TheRonTron.MagnificentMagicks", "Magnificent Magicks", "4.2.0")] [BepInDependency(/*Could not decode attribute arguments.*/)] public class MagnificentMagicks : BaseUnityPlugin { public const string PluginGUID = "com.jotunn.StaffUpgrades"; public ConfigEntry<int> Balls; public ConfigEntry<int> Shards; public ConfigEntry<bool> Bros; public ConfigEntry<int> Bombs; public ConfigEntry<int> Roots; public CustomStatusEffect AshMageSE; public void Awake() { GenerateConfig(); Logger.ShowDate = true; Game.isModded = true; PrefabManager.OnVanillaPrefabsAvailable += delegate { //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_0037: Unknown result type (might be due to invalid IL or missing references) Material prefab3 = Cache.GetPrefab<Material>("shieldstaffbulbs_mat"); prefab3.SetOverrideTag("RenderType", "Fade"); prefab3.color = Color.op_Implicit(new Vector4(0.5f, 0.5f, 0.5f, 0.5f)); prefab3.renderQueue = 3000; MeshRenderer componentInChildren = PrefabManager.Instance.GetPrefab("StaffShield").GetComponentInChildren<MeshRenderer>(); ((Renderer)componentInChildren).sharedMaterials = (Material[])(object)new Material[2] { ((Renderer)PrefabManager.Instance.GetPrefab("StaffShield").GetComponentInChildren<MeshRenderer>()).sharedMaterial, prefab3 }; }; PrefabManager.OnPrefabsRegistered += delegate { //IL_0099: Unknown result type (might be due to invalid IL or missing references) //IL_00ac: Unknown result type (might be due to invalid IL or missing references) //IL_00b4: Unknown result type (might be due to invalid IL or missing references) //IL_020d: 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_0233: Unknown result type (might be due to invalid IL or missing references) //IL_0245: Unknown result type (might be due to invalid IL or missing references) //IL_024b: Expected O, but got Unknown //IL_03b0: Unknown result type (might be due to invalid IL or missing references) //IL_04f4: Unknown result type (might be due to invalid IL or missing references) //IL_0764: Unknown result type (might be due to invalid IL or missing references) //IL_0847: Unknown result type (might be due to invalid IL or missing references) //IL_0854: Unknown result type (might be due to invalid IL or missing references) //IL_0861: Unknown result type (might be due to invalid IL or missing references) //IL_086e: Unknown result type (might be due to invalid IL or missing references) //IL_087b: Unknown result type (might be due to invalid IL or missing references) //IL_0888: Unknown result type (might be due to invalid IL or missing references) //IL_0895: Unknown result type (might be due to invalid IL or missing references) //IL_08a2: Unknown result type (might be due to invalid IL or missing references) //IL_0929: Unknown result type (might be due to invalid IL or missing references) //IL_092e: Unknown result type (might be due to invalid IL or missing references) //IL_0931: Unknown result type (might be due to invalid IL or missing references) //IL_0936: Unknown result type (might be due to invalid IL or missing references) //IL_093e: Unknown result type (might be due to invalid IL or missing references) //IL_0945: Unknown result type (might be due to invalid IL or missing references) //IL_0951: Expected O, but got Unknown //IL_0e24: Unknown result type (might be due to invalid IL or missing references) //IL_0e2b: Expected O, but got Unknown //IL_0e90: Unknown result type (might be due to invalid IL or missing references) //IL_0e97: Expected O, but got Unknown //IL_0eea: Unknown result type (might be due to invalid IL or missing references) //IL_0ef1: Expected O, but got Unknown //IL_0f44: Unknown result type (might be due to invalid IL or missing references) //IL_0f4b: Expected O, but got Unknown //IL_0f9b: Unknown result type (might be due to invalid IL or missing references) //IL_0fa2: Expected O, but got Unknown //IL_0fae: Unknown result type (might be due to invalid IL or missing references) //IL_0fb5: Expected O, but got Unknown //IL_10c9: Unknown result type (might be due to invalid IL or missing references) //IL_10d0: Expected O, but got Unknown //IL_1111: Unknown result type (might be due to invalid IL or missing references) //IL_1118: Expected O, but got Unknown //IL_1159: Unknown result type (might be due to invalid IL or missing references) //IL_1160: Expected O, but got Unknown //IL_11d4: Unknown result type (might be due to invalid IL or missing references) //IL_11db: Expected O, but got Unknown //IL_11e7: Unknown result type (might be due to invalid IL or missing references) //IL_11ee: Expected O, but got Unknown //IL_1293: Unknown result type (might be due to invalid IL or missing references) //IL_13d2: Unknown result type (might be due to invalid IL or missing references) //IL_1523: Unknown result type (might be due to invalid IL or missing references) //IL_169d: Unknown result type (might be due to invalid IL or missing references) //IL_17e2: Unknown result type (might be due to invalid IL or missing references) //IL_0692: Unknown result type (might be due to invalid IL or missing references) //IL_0697: Unknown result type (might be due to invalid IL or missing references) //IL_06c7: Unknown result type (might be due to invalid IL or missing references) //IL_06cc: Unknown result type (might be due to invalid IL or missing references) PrefabManager.Instance.GetPrefab("HelmetPointyHat").GetComponent<ItemDrop>().m_itemData.m_shared.m_eitrRegenModifier = 0.1f; PrefabManager.Instance.GetPrefab("HelmetYule").GetComponent<ItemDrop>().m_itemData.m_shared.m_eitrRegenModifier = 0.1f; SE_Stats prefab = Cache.GetPrefab<SE_Stats>("SetEffect_MageArmor"); ((StatusEffect)prefab).m_icon = PrefabManager.Instance.GetPrefab("HelmetMage").GetComponent<ItemDrop>().m_itemData.m_shared.m_icons.ElementAt(0); prefab.m_eitrRegenMultiplier = 1.3f; prefab.m_raiseSkill = (SkillType)10; prefab.m_raiseSkillModifier = 0.15f; prefab.m_skillLevel = (SkillType)10; prefab.m_modifyAttackSkill = (SkillType)10; prefab.m_damageModifier = 1.15f; PrefabManager.Instance.GetPrefab("HelmetMage").GetComponent<ItemDrop>().m_itemData.m_shared.m_setName = "mage_armor"; PrefabManager.Instance.GetPrefab("HelmetMage").GetComponent<ItemDrop>().m_itemData.m_shared.m_setStatusEffect = (StatusEffect)(object)prefab; PrefabManager.Instance.GetPrefab("ArmorMageChest").GetComponent<ItemDrop>().m_itemData.m_shared.m_setName = "mage_armor"; PrefabManager.Instance.GetPrefab("ArmorMageChest").GetComponent<ItemDrop>().m_itemData.m_shared.m_setStatusEffect = (StatusEffect)(object)prefab; PrefabManager.Instance.GetPrefab("ArmorMageLegs").GetComponent<ItemDrop>().m_itemData.m_shared.m_setName = "mage_armor"; PrefabManager.Instance.GetPrefab("ArmorMageLegs").GetComponent<ItemDrop>().m_itemData.m_shared.m_setStatusEffect = (StatusEffect)(object)prefab; SE_Stats val = ScriptableObject.CreateInstance<SE_Stats>(); ((Object)val).name = "SetEffect_AshMageArmor"; ((StatusEffect)val).m_name = "$se_mageseteffect_name"; ((StatusEffect)val).m_icon = PrefabManager.Instance.GetPrefab("HelmetMage_Ashlands").GetComponent<ItemDrop>().m_itemData.m_shared.m_icons.ElementAt(0); ((StatusEffect)val).m_tooltip = "$se_mageseteffect_tooltip"; val.m_eitrRegenMultiplier = 1.6f; val.m_raiseSkill = (SkillType)9; val.m_raiseSkillModifier = 0.15f; val.m_skillLevel = (SkillType)9; val.m_skillLevelModifier = 15f; val.m_modifyAttackSkill = (SkillType)9; val.m_damageModifier = 1.15f; CustomStatusEffect val2 = new CustomStatusEffect((StatusEffect)(object)val, false); ItemManager.Instance.AddStatusEffect(val2); PrefabManager.Instance.GetPrefab("HelmetMage_Ashlands").GetComponent<ItemDrop>().m_itemData.m_shared.m_setName = "ashmage_armor"; PrefabManager.Instance.GetPrefab("HelmetMage_Ashlands").GetComponent<ItemDrop>().m_itemData.m_shared.m_setStatusEffect = val2.StatusEffect; PrefabManager.Instance.GetPrefab("ArmorMageChest_Ashlands").GetComponent<ItemDrop>().m_itemData.m_shared.m_setName = "ashmage_armor"; PrefabManager.Instance.GetPrefab("ArmorMageChest_Ashlands").GetComponent<ItemDrop>().m_itemData.m_shared.m_setStatusEffect = val2.StatusEffect; PrefabManager.Instance.GetPrefab("ArmorMageLegs_Ashlands").GetComponent<ItemDrop>().m_itemData.m_shared.m_setName = "ashmage_armor"; PrefabManager.Instance.GetPrefab("ArmorMageLegs_Ashlands").GetComponent<ItemDrop>().m_itemData.m_shared.m_setStatusEffect = val2.StatusEffect; SharedData shared = PrefabManager.Instance.GetPrefab("StaffFireball").GetComponent<ItemDrop>().m_itemData.m_shared; Attack secondaryAttack = shared.m_secondaryAttack; shared.m_attack.m_attackStartNoise = 10f; shared.m_aiAttackRange = 20f; shared.m_aiAttackRangeMin = 15f; shared.m_aiAttackInterval = 0f; shared.m_aiAttackMaxAngle = 15f; secondaryAttack.m_attackType = (AttackType)2; secondaryAttack.m_attackAnimation = "staff_fireball"; secondaryAttack.m_attackChainLevels = 2; secondaryAttack.m_attackStamina = 0f; secondaryAttack.m_attackEitr = 35 * Balls.Value; secondaryAttack.m_speedFactor = 0.3f; secondaryAttack.m_speedFactorRotation = 0.3f; secondaryAttack.m_attackHitNoise = 0f; secondaryAttack.m_attackRange = 2f; secondaryAttack.m_attackHeight = 1.2f; secondaryAttack.m_attackOffset = 0.2f; secondaryAttack.m_attackProjectile = shared.m_attack.m_attackProjectile; secondaryAttack.m_projectileVel = 20f; secondaryAttack.m_projectileAccuracy = 4f; secondaryAttack.m_projectileAccuracyMin = 2f; secondaryAttack.m_launchAngle = -5f; secondaryAttack.m_projectiles = Balls.Value; SharedData shared2 = PrefabManager.Instance.GetPrefab("StaffIceShards").GetComponent<ItemDrop>().m_itemData.m_shared; Attack secondaryAttack2 = shared2.m_secondaryAttack; shared2.m_attack.m_attackStartNoise = 10f; shared2.m_aiAttackRange = 15f; shared2.m_aiAttackRangeMin = 10f; shared2.m_aiAttackInterval = 0f; shared2.m_aiAttackMaxAngle = 15f; secondaryAttack2.m_attackType = (AttackType)2; secondaryAttack2.m_attackAnimation = "staff_rapidfire"; secondaryAttack2.m_loopingAttack = true; secondaryAttack2.m_attackStamina = 0f; secondaryAttack2.m_attackEitr = 5f; secondaryAttack2.m_speedFactor = 0.5f; secondaryAttack2.m_speedFactorRotation = 1f; secondaryAttack2.m_attackHitNoise = 0f; secondaryAttack2.m_damageMultiplier = 1f / (float)Shards.Value; secondaryAttack2.m_attackRange = 2f; secondaryAttack2.m_attackHeight = 1.2f; secondaryAttack2.m_attackOffset = 0.2f; secondaryAttack2.m_raiseSkillAmount = 0.2f / (float)Shards.Value; secondaryAttack2.m_attackProjectile = shared2.m_attack.m_attackProjectile; secondaryAttack2.m_projectileVel = 30f; secondaryAttack2.m_projectileVelMin = 30f; secondaryAttack2.m_projectileAccuracy = 8f; secondaryAttack2.m_projectileAccuracyMin = 4f; secondaryAttack2.m_launchAngle = -4f; secondaryAttack2.m_projectiles = Shards.Value; secondaryAttack2.m_projectileBursts = 999; secondaryAttack2.m_burstInterval = 0.2f; secondaryAttack2.m_perBurstResourceUsage = true; secondaryAttack2.m_startEffect = shared2.m_attack.m_startEffect; secondaryAttack2.m_burstEffect = shared2.m_attack.m_burstEffect; GameObject prefab2 = PrefabManager.Instance.GetPrefab("fx_shield_start"); ParticleSystem[] componentsInChildren = prefab2.GetComponentsInChildren<ParticleSystem>(); foreach (ParticleSystem val3 in componentsInChildren) { if (((Object)((Component)val3).gameObject).name == "Landing Shockwave") { MainModule main = ((Component)val3).GetComponentInChildren<ParticleSystem>().main; ((MainModule)(ref main)).simulationSpace = (ParticleSystemSimulationSpace)1; } if (((Object)((Component)val3).gameObject).name == "Shockwave Pixels") { MainModule main2 = ((Component)val3).GetComponentInChildren<ParticleSystem>().main; ((MainModule)(ref main2)).simulationSpace = (ParticleSystemSimulationSpace)1; } } SharedData shared3 = PrefabManager.Instance.GetPrefab("StaffShield").GetComponent<ItemDrop>().m_itemData.m_shared; Attack secondaryAttack3 = shared3.m_secondaryAttack; shared3.m_name = "Staff of Sacrifice"; shared3.m_attack.m_attackStartNoise = 10f; shared3.m_aiAttackRange = 25f; shared3.m_aiAttackRangeMin = 20f; shared3.m_aiAttackInterval = 60f; shared3.m_aiAttackMaxAngle = 15f; secondaryAttack3.m_attackType = (AttackType)2; secondaryAttack3.m_attackAnimation = "staff_summon"; secondaryAttack3.m_attackStamina = 0f; secondaryAttack3.m_attackEitr = 70f; secondaryAttack3.m_attackHealthPercentage = 60f; secondaryAttack3.m_speedFactor = 0.3f; secondaryAttack3.m_speedFactorRotation = 0.3f; secondaryAttack3.m_attackHitNoise = 0f; secondaryAttack3.m_attackRange = 0f; secondaryAttack3.m_attackHeight = 1.8f; secondaryAttack3.m_attackOffset = 0.3f; secondaryAttack3.m_attackRayWidth = 0.3f; secondaryAttack3.m_attackProjectile = PrefabManager.Instance.GetPrefab("DvergerMistile_spawn"); secondaryAttack3.m_projectileAccuracy = 2f; PrefabManager.Instance.GetPrefab("DvergerMistile_spawn").GetComponent<SpawnAbility>().m_minToSpawn = 3; Humanoid component = PrefabManager.Instance.GetPrefab("Mistile").GetComponent<Humanoid>(); ((Character)component).m_damageModifiers.m_blunt = (DamageModifier)4; ((Character)component).m_damageModifiers.m_slash = (DamageModifier)4; ((Character)component).m_damageModifiers.m_pierce = (DamageModifier)4; ((Character)component).m_damageModifiers.m_fire = (DamageModifier)4; ((Character)component).m_damageModifiers.m_frost = (DamageModifier)4; ((Character)component).m_damageModifiers.m_lightning = (DamageModifier)4; ((Character)component).m_damageModifiers.m_poison = (DamageModifier)4; ((Character)component).m_damageModifiers.m_spirit = (DamageModifier)6; SharedData shared4 = PrefabManager.Instance.GetPrefab("Mistile_kamikaze").GetComponent<ItemDrop>().m_itemData.m_shared; shared4.m_damages.m_damage = 120f; shared4.m_damages.m_blunt = 0f; shared4.m_damages.m_spirit = 30f; SpawnAbility component2 = PrefabManager.Instance.GetPrefab("staff_skeleton_spawn").GetComponent<SpawnAbility>(); component2.m_setMaxInstancesFromWeaponLevel = Bros.Value; component2.m_levelUpSettings.Add(new LevelUpSettings { m_skill = (SkillType)10, m_skillLevel = 100, m_setLevel = 1, m_maxSpawns = 6 }); Transform child = PrefabManager.Instance.GetPrefab("Skeleton_Friendly").GetComponentInChildren<Transform>().GetChild(1) .GetChild(0) .GetChild(0) .GetChild(0) .GetChild(2) .GetChild(0) .GetChild(0) .GetChild(1) .GetChild(0) .GetChild(1); child.Rotate(-32f, -90f, 8f); child.Translate(0f, 0.035f, 0.018f); MonsterAI component3 = PrefabManager.Instance.GetPrefab("Skeleton_Friendly").GetComponent<MonsterAI>(); component3.m_consumeItems = new List<ItemDrop> { PrefabManager.Instance.GetPrefab("BoneFragments").GetComponent<ItemDrop>(), PrefabManager.Instance.GetPrefab("Entrails").GetComponent<ItemDrop>() }; component3.m_consumeSearchRange = 10f; PrefabManager.Instance.GetPrefab("Skeleton_Friendly").GetComponent<Tameable>().m_fedDuration = 60f; PrefabManager.Instance.GetPrefab("skeleton_sword").GetComponent<ItemDrop>().m_itemData.m_shared.m_aiAttackInterval = 0f; PrefabManager.Instance.GetPrefab("skeleton_sword").GetComponent<ItemDrop>().m_itemData.m_shared.m_attack.m_attackRange = 1.4f; PrefabManager.Instance.GetPrefab("skeleton_sword2").GetComponent<ItemDrop>().m_itemData.m_shared.m_aiAttackInterval = 0f; PrefabManager.Instance.GetPrefab("skeleton_sword2").GetComponent<ItemDrop>().m_itemData.m_shared.m_attack.m_attackRange = 1.4f; PrefabManager.Instance.GetPrefab("draugr_sword").GetComponent<ItemDrop>().m_itemData.m_shared.m_aiAttackInterval = 0f; PrefabManager.Instance.GetPrefab("draugr_sword").GetComponent<ItemDrop>().m_itemData.m_shared.m_aiAttackRange = 1.8f; PrefabManager.Instance.GetPrefab("draugr_axe").GetComponent<ItemDrop>().m_itemData.m_shared.m_attack.m_attackRange = 1.8f; PrefabManager.Instance.GetPrefab("draugr_axe").GetComponent<ItemDrop>().m_itemData.m_shared.m_aiAttackInterval = 0f; PrefabManager.Instance.GetPrefab("draugr_axe").GetComponent<ItemDrop>().m_itemData.m_shared.m_attack.m_attackRange = 1.4f; PrefabManager.Instance.GetPrefab("skeleton_mace").GetComponent<ItemDrop>().m_itemData.m_shared.m_attack.m_attackRange = 2f; PrefabManager.Instance.GetPrefab("skeleton_mace").GetComponent<ItemDrop>().m_itemData.m_shared.m_aiAttackInterval = 0f; PrefabManager.Instance.GetPrefab("skeleton_mace").GetComponent<ItemDrop>().m_itemData.m_shared.m_aiAttackRange = 1.6f; PrefabManager.Instance.GetPrefab("skeleton_sword_hildir").GetComponent<ItemDrop>().m_itemData.m_shared.m_attack.m_attackRange = 2.6f; PrefabManager.Instance.GetPrefab("skeleton_sword_hildir").GetComponent<ItemDrop>().m_itemData.m_shared.m_aiAttackInterval = 0f; PrefabManager.Instance.GetPrefab("skeleton_sword_hildir").GetComponent<ItemDrop>().m_itemData.m_shared.m_aiAttackRange = 2.2f; Humanoid component4 = PrefabManager.Instance.GetPrefab("Skeleton_Friendly").GetComponent<Humanoid>(); component4.m_defaultItems = (GameObject[])(object)new GameObject[0]; component4.m_randomWeapon = (GameObject[])(object)new GameObject[8] { PrefabManager.Instance.GetPrefab("skeleton_sword2"), PrefabManager.Instance.GetPrefab("skeleton_sword2"), PrefabManager.Instance.GetPrefab("draugr_sword"), PrefabManager.Instance.GetPrefab("draugr_sword"), PrefabManager.Instance.GetPrefab("draugr_axe"), PrefabManager.Instance.GetPrefab("draugr_axe"), PrefabManager.Instance.GetPrefab("skeleton_mace"), PrefabManager.Instance.GetPrefab("skeleton_sword_hildir") }; component4.m_randomArmor = (GameObject[])(object)new GameObject[3] { PrefabManager.Instance.GetPrefab("HelmetBronze"), PrefabManager.Instance.GetPrefab("HelmetIron"), PrefabManager.Instance.GetPrefab("HelmetYule") }; component4.m_randomShield.SetValue(PrefabManager.Instance.GetPrefab("ShieldBanded"), 0); component4.m_randomShield.SetValue(PrefabManager.Instance.GetPrefab("ShieldIronBuckler"), 2); component4.m_randomShield.SetValue(PrefabManager.Instance.GetPrefab("ShieldSilver"), 3); ItemSet val4 = new ItemSet(); val4.m_name = "DeadBronze"; val4.m_items = (GameObject[])(object)new GameObject[4] { PrefabManager.Instance.GetPrefab("HelmetBronze"), PrefabManager.Instance.GetPrefab("CapeTrollHide"), PrefabManager.Instance.GetPrefab("BeltStrength"), PrefabManager.Instance.GetPrefab("ArmorBronzeLegs") }; ItemSet val5 = val4; val4 = new ItemSet(); val4.m_name = "DeadIron"; val4.m_items = (GameObject[])(object)new GameObject[3] { PrefabManager.Instance.GetPrefab("HelmetIron"), PrefabManager.Instance.GetPrefab("ArmorIronChest"), PrefabManager.Instance.GetPrefab("ArmorIronLegs") }; ItemSet val6 = val4; val4 = new ItemSet(); val4.m_name = "DeadSnow"; val4.m_items = (GameObject[])(object)new GameObject[3] { PrefabManager.Instance.GetPrefab("HelmetYule"), PrefabManager.Instance.GetPrefab("ArmorWolfChest"), PrefabManager.Instance.GetPrefab("ArmorWolfLegs") }; ItemSet val7 = val4; val4 = new ItemSet(); val4.m_name = "No Pants!"; val4.m_items = (GameObject[])(object)new GameObject[1] { PrefabManager.Instance.GetPrefab("ArmorBronzeLegs") }; ItemSet val8 = val4; component4.m_randomSets = (ItemSet[])(object)new ItemSet[4] { val5, val6, val7, val8 }; CreatureConfig val9 = new CreatureConfig(); CustomCreature val10 = new CustomCreature("SkeletonArcher_Friendly", "Skeleton_Friendly", val9); Humanoid component5 = val10.Prefab.GetComponent<Humanoid>(); ((Character)component5).m_name = "$enemy_skeleton_summoned"; component5.m_defaultItems = (GameObject[])(object)new GameObject[0]; component5.m_randomWeapon = (GameObject[])(object)new GameObject[5] { PrefabManager.Instance.GetPrefab("skeleton_bow2"), PrefabManager.Instance.GetPrefab("skeleton_bow2"), PrefabManager.Instance.GetPrefab("skeleton_bow2"), PrefabManager.Instance.GetPrefab("skeleton_bow2"), PrefabManager.Instance.GetPrefab("draugr_bow") }; component5.m_randomArmor = (GameObject[])(object)new GameObject[6] { PrefabManager.Instance.GetPrefab("HelmetLeather"), PrefabManager.Instance.GetPrefab("HelmetBronze"), PrefabManager.Instance.GetPrefab("HelmetYule"), PrefabManager.Instance.GetPrefab("CapeDeerHide"), PrefabManager.Instance.GetPrefab("CapeTrollHide"), PrefabManager.Instance.GetPrefab("ArmorBronzeLegs") }; component5.m_randomShield = (GameObject[])(object)new GameObject[0]; val4 = new ItemSet(); val4.m_name = "DeadLeather"; val4.m_items = (GameObject[])(object)new GameObject[2] { PrefabManager.Instance.GetPrefab("CapeDeerHide"), PrefabManager.Instance.GetPrefab("HelmetLeather") }; ItemSet val11 = val4; val4 = new ItemSet(); val4.m_name = "DeadTroll"; val4.m_items = (GameObject[])(object)new GameObject[2] { PrefabManager.Instance.GetPrefab("CapeTrollHide"), PrefabManager.Instance.GetPrefab("HelmetLeather") }; ItemSet val12 = val4; val4 = new ItemSet(); val4.m_name = "DeadElf"; val4.m_items = (GameObject[])(object)new GameObject[2] { PrefabManager.Instance.GetPrefab("HelmetYule"), PrefabManager.Instance.GetPrefab("CapeWolf") }; ItemSet val13 = val4; component5.m_randomSets = (ItemSet[])(object)new ItemSet[5] { val11, val12, val5, val13, val8 }; CreatureManager.Instance.AddCreature(val10); ItemConfig val14 = new ItemConfig(); CustomItem val15 = new CustomItem("staff_skeletonarcher_spawn", "staff_skeleton_spawn", val14); ItemManager.Instance.AddItem(val15); SpawnAbility component6 = val15.ItemPrefab.GetComponent<SpawnAbility>(); component6.m_spawnPrefab.SetValue(PrefabManager.Instance.GetPrefab("SkeletonArcher_Friendly"), 0); SharedData shared5 = PrefabManager.Instance.GetPrefab("StaffSkeleton").GetComponent<ItemDrop>().m_itemData.m_shared; Attack secondaryAttack4 = shared5.m_secondaryAttack; shared5.m_attack.m_attackStartNoise = 10f; shared5.m_aiAttackRange = 30f; shared5.m_aiAttackRangeMin = 25f; shared5.m_aiAttackInterval = 60f; shared5.m_aiAttackMaxAngle = 15f; secondaryAttack4.m_attackType = (AttackType)2; secondaryAttack4.m_attackAnimation = "staff_summon"; secondaryAttack4.m_hitTerrain = false; secondaryAttack4.m_attackStamina = 0f; secondaryAttack4.m_attackEitr = 100f; secondaryAttack4.m_attackHealthPercentage = 40f; secondaryAttack4.m_speedFactor = 0.3f; secondaryAttack4.m_speedFactorRotation = 0.3f; secondaryAttack4.m_attackHitNoise = 0f; secondaryAttack4.m_attackRange = 0f; secondaryAttack4.m_attackHeight = 0f; secondaryAttack4.m_attackProjectile = PrefabManager.Instance.GetPrefab("staff_skeletonarcher_spawn"); secondaryAttack4.m_projectileVel = 0f; secondaryAttack4.m_projectileVelMin = 0f; secondaryAttack4.m_projectileAccuracy = 1f; secondaryAttack4.m_projectileAccuracyMin = 1f; secondaryAttack4.m_startEffect = shared5.m_attack.m_startEffect; SharedData shared6 = PrefabManager.Instance.GetPrefab("StaffClusterbomb").GetComponent<ItemDrop>().m_itemData.m_shared; Attack secondaryAttack5 = shared6.m_secondaryAttack; shared6.m_attack.m_attackStartNoise = 10f; shared6.m_aiAttackRange = 30f; shared6.m_aiAttackRangeMin = 25f; shared6.m_aiAttackInterval = 60f; shared6.m_aiAttackMaxAngle = 15f; secondaryAttack5.m_attackType = (AttackType)2; secondaryAttack5.m_attackAnimation = "staff_fireball"; secondaryAttack5.m_attackChainLevels = 2; secondaryAttack5.m_attackStamina = 0f; secondaryAttack5.m_attackEitr = 30 * Bombs.Value; secondaryAttack5.m_speedFactor = 0.3f; secondaryAttack5.m_speedFactorRotation = 0.3f; secondaryAttack5.m_attackHitNoise = 0f; secondaryAttack5.m_attackRange = 2f; secondaryAttack5.m_attackHeight = 1.2f; secondaryAttack5.m_attackOffset = 0.2f; secondaryAttack5.m_raiseSkillAmount = 0.1f; secondaryAttack5.m_attackProjectile = shared6.m_attack.m_attackProjectile; secondaryAttack5.m_projectileVel = 20f; secondaryAttack5.m_projectileAccuracy = 8f; secondaryAttack5.m_projectileAccuracyMin = 2f; secondaryAttack5.m_launchAngle = -5f; secondaryAttack5.m_projectiles = Bombs.Value; SharedData shared7 = PrefabManager.Instance.GetPrefab("StaffLightning").GetComponent<ItemDrop>().m_itemData.m_shared; Attack secondaryAttack6 = shared7.m_secondaryAttack; shared7.m_attack.m_attackStartNoise = 10f; shared7.m_aiAttackRange = 10f; shared7.m_aiAttackRangeMin = 5f; shared7.m_aiAttackInterval = 2f; shared7.m_aiAttackMaxAngle = 15f; secondaryAttack6.m_attackType = (AttackType)2; secondaryAttack6.m_attackAnimation = "staff_lightningshot"; secondaryAttack6.m_attackStamina = 0f; secondaryAttack6.m_attackEitr = 25f; secondaryAttack6.m_speedFactor = 0.3f; secondaryAttack6.m_speedFactorRotation = 0f; secondaryAttack6.m_attackStartNoise = 15f; secondaryAttack6.m_attackHitNoise = 8f; secondaryAttack6.m_recoilPushback = 80f; secondaryAttack6.m_attackRange = 1f; secondaryAttack6.m_attackHeight = 1.2f; secondaryAttack6.m_attackOffset = 0.2f; secondaryAttack6.m_requiresReload = true; secondaryAttack6.m_reloadAnimation = "recharge_lightningstaff"; secondaryAttack6.m_reloadTime = 3.8f; secondaryAttack6.m_reloadEitrDrain = 25f; secondaryAttack6.m_attackProjectile = shared7.m_attack.m_attackProjectile; secondaryAttack6.m_projectileVel = 200f; secondaryAttack6.m_projectileVelMin = 0f; secondaryAttack6.m_projectileAccuracy = 5f; secondaryAttack6.m_projectileAccuracyMin = 0f; secondaryAttack6.m_launchAngle = -1f; secondaryAttack6.m_projectiles = 12; SharedData shared8 = PrefabManager.Instance.GetPrefab("StaffGreenRoots").GetComponent<ItemDrop>().m_itemData.m_shared; Attack secondaryAttack7 = shared8.m_secondaryAttack; shared8.m_attack.m_attackStartNoise = 10f; shared8.m_aiAttackRange = 25f; shared8.m_aiAttackRangeMin = 20f; shared8.m_aiAttackInterval = 0f; shared8.m_aiAttackMaxAngle = 15f; secondaryAttack7.m_attackType = (AttackType)2; secondaryAttack7.m_attackAnimation = "staff_fireball"; secondaryAttack7.m_attackChainLevels = 2; secondaryAttack7.m_attackStamina = 0f; secondaryAttack7.m_attackEitr = 55 * Roots.Value; secondaryAttack7.m_speedFactor = 0.3f; secondaryAttack7.m_speedFactorRotation = 0.3f; secondaryAttack7.m_attackHitNoise = 0f; secondaryAttack7.m_attackRange = 2f; secondaryAttack7.m_attackHeight = 1.2f; secondaryAttack7.m_attackOffset = 0.2f; secondaryAttack7.m_attackProjectile = shared8.m_attack.m_attackProjectile; secondaryAttack7.m_projectileVel = 20f; secondaryAttack7.m_projectileAccuracy = 8f; secondaryAttack7.m_projectileAccuracyMin = 4f; secondaryAttack7.m_launchAngle = -5f; secondaryAttack7.m_projectiles = Roots.Value; SharedData shared9 = PrefabManager.Instance.GetPrefab("StaffRedTroll").GetComponent<ItemDrop>().m_itemData.m_shared; Attack secondaryAttack8 = shared9.m_secondaryAttack; shared9.m_attack.m_attackStartNoise = 10f; shared9.m_aiAttackRange = 30f; shared9.m_aiAttackRangeMin = 25f; shared9.m_aiAttackInterval = 300f; shared9.m_aiAttackMaxAngle = 15f; secondaryAttack8.m_attackType = (AttackType)2; secondaryAttack8.m_attackAnimation = "staff_trollsummon"; secondaryAttack8.m_hitTerrain = false; secondaryAttack8.m_attackStamina = 0f; secondaryAttack8.m_attackEitr = 240f; secondaryAttack8.m_attackHealthPercentage = 84f; secondaryAttack8.m_speedFactor = 0.3f; secondaryAttack8.m_speedFactorRotation = 0.3f; secondaryAttack8.m_attackHitNoise = 0f; secondaryAttack8.m_attackRange = 15f; secondaryAttack8.m_attackHeight = 0f; secondaryAttack8.m_cantUseInDungeon = true; secondaryAttack8.m_attackProjectile = shared9.m_attack.m_attackProjectile; secondaryAttack8.m_projectileVel = 0f; secondaryAttack8.m_projectileVelMin = 0f; secondaryAttack8.m_projectileAccuracy = 16f; secondaryAttack8.m_projectileAccuracyMin = 12f; secondaryAttack8.m_projectiles = 2; secondaryAttack8.m_startEffect = shared9.m_attack.m_startEffect; PrefabManager.Instance.GetPrefab("staff_redtroll_spawn").GetComponent<SpawnAbility>().m_spawnRadius = 8f; }; Harmony.CreateAndPatchAll(Assembly.GetExecutingAssembly(), (string)null); } public void GenerateConfig() { //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Unknown result type (might be due to invalid IL or missing references) //IL_0047: Expected O, but got Unknown //IL_0047: Unknown result type (might be due to invalid IL or missing references) //IL_0051: Expected O, but got Unknown //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_008f: Expected O, but got Unknown //IL_008f: Unknown result type (might be due to invalid IL or missing references) //IL_0099: Expected O, but got Unknown //IL_00be: Unknown result type (might be due to invalid IL or missing references) //IL_00c3: Unknown result type (might be due to invalid IL or missing references) //IL_00cc: Expected O, but got Unknown //IL_00cc: Unknown result type (might be due to invalid IL or missing references) //IL_00d6: Expected O, but got Unknown //IL_0106: Unknown result type (might be due to invalid IL or missing references) //IL_010b: Unknown result type (might be due to invalid IL or missing references) //IL_0114: Expected O, but got Unknown //IL_0114: Unknown result type (might be due to invalid IL or missing references) //IL_011e: Expected O, but got Unknown //IL_014e: Unknown result type (might be due to invalid IL or missing references) //IL_0153: Unknown result type (might be due to invalid IL or missing references) //IL_015c: Expected O, but got Unknown //IL_015c: Unknown result type (might be due to invalid IL or missing references) //IL_0166: Expected O, but got Unknown ((BaseUnityPlugin)this).Config.SaveOnConfigSet = true; Balls = ((BaseUnityPlugin)this).Config.Bind<int>("Staff of Embers", "Amount of Fireballs", 2, new ConfigDescription("Designates Amount of Fireballs", (AcceptableValueBase)null, new object[2] { new AcceptableValueRange<int>(1, 100), (object)new ConfigurationManagerAttributes { IsAdminOnly = true } })); Shards = ((BaseUnityPlugin)this).Config.Bind<int>("Staff of Frost", "Strength of Blizzard", 8, new ConfigDescription("Designates Number of Iceshards", (AcceptableValueBase)null, new object[2] { new AcceptableValueRange<int>(1, 100), (object)new ConfigurationManagerAttributes { IsAdminOnly = true } })); Bros = ((BaseUnityPlugin)this).Config.Bind<bool>("DeadRaiser", "Lock Spawn Amount to Staff Level", true, new ConfigDescription("Switch Amount of SkeleBros between Item Quality or BloodMagic Skill", (AcceptableValueBase)null, new object[1] { (object)new ConfigurationManagerAttributes { IsAdminOnly = true } })); Bombs = ((BaseUnityPlugin)this).Config.Bind<int>("Staff of Fracturing", "Amount of Firebombs", 3, new ConfigDescription("Designates the number of Firebombs cast", (AcceptableValueBase)null, new object[2] { new AcceptableValueRange<int>(1, 100), (object)new ConfigurationManagerAttributes { IsAdminOnly = true } })); Roots = ((BaseUnityPlugin)this).Config.Bind<int>("Staff of the Wild", "Amount of Roots", 2, new ConfigDescription("Designates the number of Roots Summoned", (AcceptableValueBase)null, new object[2] { new AcceptableValueRange<int>(1, 100), (object)new ConfigurationManagerAttributes { IsAdminOnly = true } })); SynchronizationManager.OnConfigurationSynchronized += delegate(object obj, ConfigurationSynchronizationEventArgs attr) { if (attr.InitialSynchronization) { Logger.LogMessage((object)"Initial Config sync event received"); } else { Logger.LogMessage((object)"Config sync event received"); } }; } }