Some mods may be broken due to the recent Alloyed Collective update.
Decompiled source of InfernoMithrixStandalone v1.0.1
InfernoMithrixStandalone.dll
Decompiled 2 years agousing System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Configuration; using BepInEx.Logging; using EntityStates; using EntityStates.BrotherHaunt; using EntityStates.BrotherMonster; using EntityStates.BrotherMonster.Weapon; using EntityStates.Missions.BrotherEncounter; using Microsoft.CodeAnalysis; using On.EntityStates.BrotherHaunt; using On.EntityStates.BrotherMonster; using On.EntityStates.BrotherMonster.Weapon; using On.EntityStates.Missions.BrotherEncounter; using On.RoR2; using On.RoR2.Projectile; using R2API; using RoR2; using RoR2.CharacterAI; using RoR2.Projectile; using UnityEngine; using UnityEngine.Networking; using UnityEngine.SceneManagement; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: TargetFramework(".NETStandard,Version=v2.0", FrameworkDisplayName = ".NET Standard 2.0")] [assembly: AssemblyCompany("InfernoMithrixStandalone")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("InfernoMithrixStandalone")] [assembly: AssemblyTitle("InfernoMithrixStandalone")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace InfernoMithrixStandalone { public static class AI { public static void Init() { CharacterMaster.onStartGlobal += CharacterMaster_onStartGlobal; } private static void CharacterMaster_onStartGlobal(CharacterMaster master) { //IL_0314: Unknown result type (might be due to invalid IL or missing references) //IL_034d: Unknown result type (might be due to invalid IL or missing references) CharacterBody body = master.GetBody(); if (!Object.op_Implicit((Object)(object)body)) { return; } BaseAI component = ((Component)master).GetComponent<BaseAI>(); if (!Object.op_Implicit((Object)(object)component)) { return; } string name = ((Object)master).name; string text = name; if (!(text == "BrotherMaster(Clone)")) { if (text == "BrotherHurtMaster(Clone)") { master.inventory.GiveItem(Items.TeleportWhenOob, 1); body.levelMoveSpeed = Main.LevelMoveSpeed.Value; body.levelRegen = Main.LevelRegen.Value; body.levelAttackSpeed = Main.LevelAttackSpeed.Value; component.fullVision = true; component.aimVectorDampTime = Mathf.Max(0.001f, 0.031f - 0.0001f * Main.AIScaling.Value * (float)Run.instance.stageClearCount); component.aimVectorMaxSpeed = 250f + 20f * Main.AIScaling.Value * (float)Run.instance.stageClearCount; component.enemyAttentionDuration = 1.5f; AISkillDriver val = (from x in ((Component)master).GetComponents<AISkillDriver>() where x.customName == "SlamGround" select x).First(); val.maxUserHealthFraction = float.PositiveInfinity; val.movementType = (MovementType)2; AISkillDriver val2 = (from x in ((Component)master).GetComponents<AISkillDriver>() where x.customName == "Shoot" select x).First(); val2.movementType = (MovementType)2; master.inventory.GiveItem(Items.PrimaryStockItemDef, 6); master.inventory.GiveItem(Items.AllCooldownItemDef, 5); } return; } master.inventory.GiveItem(Items.TeleportWhenOob, 1); body.levelMoveSpeed = Main.LevelMoveSpeed.Value; body.levelRegen = Main.LevelRegen.Value; body.levelAttackSpeed = Main.LevelAttackSpeed.Value; component.fullVision = true; component.aimVectorDampTime = Mathf.Max(0.001f, 0.031f - 0.0001f * Main.AIScaling.Value * (float)Run.instance.stageClearCount); component.aimVectorMaxSpeed = 250f + 20f * Main.AIScaling.Value * (float)Run.instance.stageClearCount; component.enemyAttentionDuration = 1.5f; AISkillDriver val3 = (from x in ((Component)master).GetComponents<AISkillDriver>() where x.customName == "Sprint and FireLunarShards" select x).First(); val3.minDistance = 0f; val3.maxUserHealthFraction = float.PositiveInfinity; AISkillDriver val4 = (from x in ((Component)master).GetComponents<AISkillDriver>() where x.customName == "Sprint After Target" select x).First(); val4.minDistance = 40f - Main.AIScaling.Value * (float)Run.instance.stageClearCount; AISkillDriver val5 = (from x in ((Component)master).GetComponents<AISkillDriver>() where x.customName == "DashStrafe" select x).First(); val5.nextHighPriorityOverride = val3; master.inventory.GiveItem(Items.UtilityStockItemDef, 1); master.inventory.GiveItem(Items.SpecialStockItemDef, 1); master.inventory.GiveItem(Items.AllCooldownItemDef, 10); } } public static class Body { public static void Init() { CharacterBody.onBodyAwakeGlobal += CharacterBody_onBodyAwakeGlobal; } private static void CharacterBody_onBodyAwakeGlobal(CharacterBody body) { //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_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0014: 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_006b: 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_00c9: Unknown result type (might be due to invalid IL or missing references) //IL_00a7: Unknown result type (might be due to invalid IL or missing references) //IL_00ad: 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_00b5: Unknown result type (might be due to invalid IL or missing references) //IL_00bc: Unknown result type (might be due to invalid IL or missing references) //IL_00bd: Unknown result type (might be due to invalid IL or missing references) //IL_011b: 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_0122: Unknown result type (might be due to invalid IL or missing references) //IL_0129: Unknown result type (might be due to invalid IL or missing references) //IL_0130: Unknown result type (might be due to invalid IL or missing references) //IL_0131: Unknown result type (might be due to invalid IL or missing references) if (body.bodyIndex == Main.mithrixBody && body.bodyIndex == Main.mithrixPhase4Body) { SetStateOnHurt component = ((Component)body).GetComponent<SetStateOnHurt>(); CharacterDirection component2 = ((Component)body).GetComponent<CharacterDirection>(); if ((Object)(object)component2 != (Object)null) { component2.turnSpeed = 360f; } if ((Object)(object)component != (Object)null) { component.canBeHitStunned = false; } if (body.bodyIndex == Main.mithrixBody) { body.baseAcceleration = 200f; body.baseMoveSpeed = 17f; body.baseMaxHealth = 800f; body.levelMaxHealth = 240f; body.bodyFlags = (BodyFlags)(body.bodyFlags | 1); body.bodyFlags = (BodyFlags)(body.bodyFlags | 0x20); } if (body.bodyIndex == Main.mithrixPhase4Body) { body.baseMaxHealth = 500f; body.levelMaxHealth = 150f; body.baseMoveSpeed = 10f; body.sprintingSpeedMultiplier = 1.45f; body.baseDamage = 5f; body.levelDamage = 1f; body.bodyFlags = (BodyFlags)(body.bodyFlags | 1); body.bodyFlags = (BodyFlags)(body.bodyFlags | 0x20); } } } } public static class Items { [CompilerGenerated] private static class <>O { public static hook_RecalculateStats <0>__AddStock; public static StatHookEventHandler <1>__ChangeCDR; } private const string PrimaryStockItemName = "InfernoMithrixStandalone: +1 Primary Stock"; private const string PrimaryStockItemLangTokenName = "INFERNO_MITHRIX_STANDALONE_PRIMARYSTOCK"; private const string PrimaryStockItemPickupDesc = "Racecar"; private const string PrimaryStockItemFullDescription = "15:21"; private const string SecondaryStockItemName = "InfernoMithrixStandalone: +1 Secondary Stock"; private const string SecondaryStockItemLangTokenName = "INFERNO_MITHRIX_STANDALONE_SECONDARYSTOCK"; private const string SecondaryStockItemPickupDesc = "Omega"; private const string SecondaryStockItemFullDescription = "11:44"; private const string UtilityStockItemName = "InfernoMithrixStandalone: +1 Utility Stock"; private const string UtilityStockItemLangTokenName = "INFERNO_MITHRIX_STANDALONE_UTILITYSTOCK"; private const string UtilityStockItemPickupDesc = "Reptile"; private const string UtilityStockItemFullDescription = "16:44"; private const string SpecialStockItemName = "InfernoMithrixStandalone: +1 Special Stock"; private const string SpecialStockItemLangTokenName = "INFERNO_MITHRIX_STANDALONE_SPECIALSTOCK"; private const string SpecialStockItemPickupDesc = "Dracul Gras"; private const string SpecialStockItemFullDescription = "12:22"; private const string AllCooldownItemName = "InfernoMithrixStandalone: +1% All CDR"; private const string AllCooldownItemLangTokenName = "INFERNO_MITHRIX_STANDALONE_ALLCDR"; private const string AllCooldownItemPickupDesc = "Periphery VI When"; private const string AllCooldownItemFullDescription = "???:???"; public static ItemTier Tier; public static ItemDef PrimaryStockItemDef; public static ItemDef SecondaryStockItemDef; public static ItemDef UtilityStockItemDef; public static ItemDef SpecialStockItemDef; public static ItemDef AllCooldownItemDef; public static ItemTag[] ItemTags { get; set; } = (ItemTag[])(object)new ItemTag[0]; public static void Init() { //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_008a: Unknown result type (might be due to invalid IL or missing references) //IL_008f: Unknown result type (might be due to invalid IL or missing references) //IL_00ce: Unknown result type (might be due to invalid IL or missing references) //IL_00d8: Expected O, but got Unknown //IL_013f: Unknown result type (might be due to invalid IL or missing references) //IL_0144: Unknown result type (might be due to invalid IL or missing references) //IL_0183: Unknown result type (might be due to invalid IL or missing references) //IL_018d: Expected O, but got Unknown //IL_01f4: Unknown result type (might be due to invalid IL or missing references) //IL_01f9: 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_0242: Expected O, but got Unknown //IL_02a9: Unknown result type (might be due to invalid IL or missing references) //IL_02ae: Unknown result type (might be due to invalid IL or missing references) //IL_02ed: Unknown result type (might be due to invalid IL or missing references) //IL_02f7: Expected O, but got Unknown //IL_035e: Unknown result type (might be due to invalid IL or missing references) //IL_0363: Unknown result type (might be due to invalid IL or missing references) //IL_03a2: Unknown result type (might be due to invalid IL or missing references) //IL_03ac: Expected O, but got Unknown //IL_03bd: Unknown result type (might be due to invalid IL or missing references) //IL_03c2: Unknown result type (might be due to invalid IL or missing references) //IL_03c8: Expected O, but got Unknown //IL_03de: Unknown result type (might be due to invalid IL or missing references) //IL_03e3: Unknown result type (might be due to invalid IL or missing references) //IL_03e9: Expected O, but got Unknown ItemTags = new List<ItemTag>(ItemTags) { (ItemTag)4 }.ToArray(); Tier = (ItemTier)5; PrimaryStockItemDef = ScriptableObject.CreateInstance<ItemDef>(); ((Object)PrimaryStockItemDef).name = "ITEM_INFERNO_MITHRIX_STANDALONE_PRIMARYSTOCK"; PrimaryStockItemDef.nameToken = "ITEM_INFERNO_MITHRIX_STANDALONE_PRIMARYSTOCK_NAME"; PrimaryStockItemDef.pickupToken = "ITEM_INFERNO_MITHRIX_STANDALONE_PRIMARYSTOCK_PICKUP"; PrimaryStockItemDef.descriptionToken = "ITEM_INFERNO_MITHRIX_STANDALONE_PRIMARYSTOCK_DESCRIPTION"; PrimaryStockItemDef.hidden = true; PrimaryStockItemDef.tags = ItemTags; PrimaryStockItemDef.deprecatedTier = Tier; LanguageAPI.Add("ITEM_INFERNO_MITHRIX_STANDALONE_PRIMARYSTOCK_NAME", "InfernoMithrixStandalone: +1 Primary Stock"); LanguageAPI.Add("ITEM_INFERNO_MITHRIX_STANDALONE_PRIMARYSTOCK_PICKUP", "Racecar"); LanguageAPI.Add("ITEM_INFERNO_MITHRIX_STANDALONE_PRIMARYSTOCK_DESCRIPTION", "15:21"); ItemAPI.Add(new CustomItem(PrimaryStockItemDef, CreateItemDisplayRules())); SecondaryStockItemDef = ScriptableObject.CreateInstance<ItemDef>(); ((Object)SecondaryStockItemDef).name = "ITEM_INFERNO_MITHRIX_STANDALONE_SECONDARYSTOCK"; SecondaryStockItemDef.nameToken = "ITEM_INFERNO_MITHRIX_STANDALONE_SECONDARYSTOCK_NAME"; SecondaryStockItemDef.pickupToken = "ITEM_INFERNO_MITHRIX_STANDALONE_SECONDARYSTOCK_PICKUP"; SecondaryStockItemDef.descriptionToken = "ITEM_INFERNO_MITHRIX_STANDALONE_SECONDARYSTOCK_DESCRIPTION"; SecondaryStockItemDef.hidden = true; SecondaryStockItemDef.tags = ItemTags; SecondaryStockItemDef.deprecatedTier = Tier; LanguageAPI.Add("ITEM_INFERNO_MITHRIX_STANDALONE_SECONDARYSTOCK_NAME", "InfernoMithrixStandalone: +1 Secondary Stock"); LanguageAPI.Add("ITEM_INFERNO_MITHRIX_STANDALONE_SECONDARYSTOCK_PICKUP", "Omega"); LanguageAPI.Add("ITEM_INFERNO_MITHRIX_STANDALONE_SECONDARYSTOCK_DESCRIPTION", "11:44"); ItemAPI.Add(new CustomItem(SecondaryStockItemDef, CreateItemDisplayRules())); UtilityStockItemDef = ScriptableObject.CreateInstance<ItemDef>(); ((Object)UtilityStockItemDef).name = "ITEM_INFERNO_MITHRIX_STANDALONE_UTILITYSTOCK"; UtilityStockItemDef.nameToken = "ITEM_INFERNO_MITHRIX_STANDALONE_UTILITYSTOCK_NAME"; UtilityStockItemDef.pickupToken = "ITEM_INFERNO_MITHRIX_STANDALONE_UTILITYSTOCK_PICKUP"; UtilityStockItemDef.descriptionToken = "ITEM_INFERNO_MITHRIX_STANDALONE_UTILITYSTOCK_DESCRIPTION"; UtilityStockItemDef.hidden = true; UtilityStockItemDef.tags = ItemTags; UtilityStockItemDef.deprecatedTier = Tier; LanguageAPI.Add("ITEM_INFERNO_MITHRIX_STANDALONE_UTILITYSTOCK_NAME", "InfernoMithrixStandalone: +1 Utility Stock"); LanguageAPI.Add("ITEM_INFERNO_MITHRIX_STANDALONE_UTILITYSTOCK_PICKUP", "Reptile"); LanguageAPI.Add("ITEM_INFERNO_MITHRIX_STANDALONE_UTILITYSTOCK_DESCRIPTION", "16:44"); ItemAPI.Add(new CustomItem(UtilityStockItemDef, CreateItemDisplayRules())); SpecialStockItemDef = ScriptableObject.CreateInstance<ItemDef>(); ((Object)SpecialStockItemDef).name = "ITEM_INFERNO_MITHRIX_STANDALONE_SPECIALSTOCK"; SpecialStockItemDef.nameToken = "ITEM_INFERNO_MITHRIX_STANDALONE_SPECIALSTOCK_NAME"; SpecialStockItemDef.pickupToken = "ITEM_INFERNO_MITHRIX_STANDALONE_SPECIALSTOCK_PICKUP"; SpecialStockItemDef.descriptionToken = "ITEM_INFERNO_MITHRIX_STANDALONE_SPECIALSTOCK_DESCRIPTION"; SpecialStockItemDef.hidden = true; SpecialStockItemDef.tags = ItemTags; SpecialStockItemDef.deprecatedTier = Tier; LanguageAPI.Add("ITEM_INFERNO_MITHRIX_STANDALONE_SPECIALSTOCK_NAME", "InfernoMithrixStandalone: +1 Special Stock"); LanguageAPI.Add("ITEM_INFERNO_MITHRIX_STANDALONE_SPECIALSTOCK_PICKUP", "Dracul Gras"); LanguageAPI.Add("ITEM_INFERNO_MITHRIX_STANDALONE_SPECIALSTOCK_DESCRIPTION", "12:22"); ItemAPI.Add(new CustomItem(SpecialStockItemDef, CreateItemDisplayRules())); AllCooldownItemDef = ScriptableObject.CreateInstance<ItemDef>(); ((Object)AllCooldownItemDef).name = "ITEM_INFERNO_MITHRIX_STANDALONE_ALLCDR"; AllCooldownItemDef.nameToken = "ITEM_INFERNO_MITHRIX_STANDALONE_ALLCDR_NAME"; AllCooldownItemDef.pickupToken = "ITEM_INFERNO_MITHRIX_STANDALONE_ALLCDR_PICKUP"; AllCooldownItemDef.descriptionToken = "ITEM_INFERNO_MITHRIX_STANDALONE_ALLCDR_DESCRIPTION"; AllCooldownItemDef.hidden = true; AllCooldownItemDef.tags = ItemTags; AllCooldownItemDef.deprecatedTier = Tier; LanguageAPI.Add("ITEM_INFERNO_MITHRIX_STANDALONE_ALLCDR_NAME", "InfernoMithrixStandalone: +1% All CDR"); LanguageAPI.Add("ITEM_INFERNO_MITHRIX_STANDALONE_ALLCDR_PICKUP", "Periphery VI When"); LanguageAPI.Add("ITEM_INFERNO_MITHRIX_STANDALONE_ALLCDR_DESCRIPTION", "???:???"); ItemAPI.Add(new CustomItem(AllCooldownItemDef, CreateItemDisplayRules())); object obj = <>O.<0>__AddStock; if (obj == null) { hook_RecalculateStats val = AddStock; <>O.<0>__AddStock = val; obj = (object)val; } CharacterBody.RecalculateStats += (hook_RecalculateStats)obj; object obj2 = <>O.<1>__ChangeCDR; if (obj2 == null) { StatHookEventHandler val2 = ChangeCDR; <>O.<1>__ChangeCDR = val2; obj2 = (object)val2; } RecalculateStatsAPI.GetStatCoefficients += (StatHookEventHandler)obj2; } public static void ChangeCDR(CharacterBody sender, StatHookEventArgs args) { if (Object.op_Implicit((Object)(object)sender) && Object.op_Implicit((Object)(object)sender.inventory)) { int itemCount = sender.inventory.GetItemCount(AllCooldownItemDef); if (itemCount > 0) { args.cooldownMultAdd -= 0.01f * (float)itemCount; } } } public static void AddStock(orig_RecalculateStats orig, CharacterBody self) { orig.Invoke(self); if (Object.op_Implicit((Object)(object)self) && Object.op_Implicit((Object)(object)self.inventory) && Object.op_Implicit((Object)(object)self.skillLocator)) { SkillLocator skillLocator = self.skillLocator; if (Object.op_Implicit((Object)(object)skillLocator.primary)) { skillLocator.primary.SetBonusStockFromBody(skillLocator.primary.bonusStockFromBody + self.inventory.GetItemCount(PrimaryStockItemDef)); } if (Object.op_Implicit((Object)(object)skillLocator.secondary)) { skillLocator.secondary.SetBonusStockFromBody(skillLocator.secondary.bonusStockFromBody + self.inventory.GetItemCount(SecondaryStockItemDef)); } if (Object.op_Implicit((Object)(object)skillLocator.utility)) { skillLocator.utility.SetBonusStockFromBody(skillLocator.utility.bonusStockFromBody + self.inventory.GetItemCount(UtilityStockItemDef)); } if (Object.op_Implicit((Object)(object)skillLocator.special)) { skillLocator.special.SetBonusStockFromBody(skillLocator.special.bonusStockFromBody + self.inventory.GetItemCount(SpecialStockItemDef)); } } } public static ItemDisplayRuleDict CreateItemDisplayRules() { return null; } } [BepInPlugin("HIFU.InfernoMithrixStandalone", "InfernoMithrixStandalone", "1.0.0")] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] public class Main : BaseUnityPlugin { public const string PluginGUID = "HIFU.InfernoMithrixStandalone"; public const string PluginAuthor = "HIFU"; public const string PluginName = "InfernoMithrixStandalone"; public const string PluginVersion = "1.0.0"; public static ManualLogSource IMSLogger; public static BodyIndex mithrixBody; public static BodyIndex mithrixPhase4Body; public static bool hasFired; public static GameObject Ramp1; public static GameObject Ramp2; public static GameObject Ramp3; public static GameObject Rocks; public static int ShardCount; public static ConfigEntry<float> LevelRegen { get; set; } public static ConfigEntry<float> LevelMoveSpeed { get; set; } public static ConfigEntry<float> LevelAttackSpeed { get; set; } public static ConfigEntry<float> LoopArmor { get; set; } public static ConfigEntry<float> BossHp { get; set; } public static ConfigEntry<float> StageCooldownReduction { get; set; } public static ConfigEntry<float> ProjectileSpeed { get; set; } public static ConfigEntry<float> AIScaling { get; set; } public void Awake() { //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Expected O, but got Unknown IMSLogger = ((BaseUnityPlugin)this).Logger; BodyCatalog.Init += new hook_Init(BodyCatalog_Init); LevelMoveSpeed = ((BaseUnityPlugin)this).Config.Bind<float>("General", "Enemy Move Speed Scaling", 0.12f, "Adds move speed to each monster every level. Vanilla is 0"); LevelRegen = ((BaseUnityPlugin)this).Config.Bind<float>("General", "Enemy Regen Scaling", 0.12f, "Adds health regen to each monster every level. Vanilla is 0"); LevelAttackSpeed = ((BaseUnityPlugin)this).Config.Bind<float>("General", "Enemy Attack Speed Scaling", 0.003f, "Adds attack speed to each monster every level. Vanilla is 0"); LoopArmor = ((BaseUnityPlugin)this).Config.Bind<float>("General", "Enemy Armor Scaling", 10f, "Adds armor to each monster every completed loop. Vanilla is 0"); BossHp = ((BaseUnityPlugin)this).Config.Bind<float>("General", "Boss Health Scaling", 0.07f, "Adds % max hp to each boss every completed stage. Vanilla is 0"); StageCooldownReduction = ((BaseUnityPlugin)this).Config.Bind<float>("General", "Enemy Cooldown Reduction Scaling", 0.01f, "Adds % cooldown reduction to each monster every completed stage. Vanilla is 0"); ProjectileSpeed = ((BaseUnityPlugin)this).Config.Bind<float>("General II", "Enemy Projectile Speed", 1.25f, "Sets the projectile speed multiplier. Vanilla is 1"); AIScaling = ((BaseUnityPlugin)this).Config.Bind<float>("General II", "AI Scaling Coefficient", 1f, "Adds to AI aim and range every cleared stage. Only works with AI Changes enabled. Vanilla is false"); Items.Init(); AI.Init(); Body.Init(); Skills.Init(); } private void BodyCatalog_Init(orig_Init orig) { //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0012: 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_0021: Unknown result type (might be due to invalid IL or missing references) orig.Invoke(); mithrixBody = BodyCatalog.FindBodyIndex("BrotherBody"); mithrixPhase4Body = BodyCatalog.FindBodyIndex("BrotherHurtBody"); } } public static class Skills { [CompilerGenerated] private static class <>O { public static hook_OnEnter <0>__FireRandomProjectiles; public static hook_OnEnter <1>__BaseSlideState; public static hook_OnEnter <2>__ExitSkyLeap; public static hook_OnEnter <3>__FistSlam; public static hook_OnEnter <4>__HoldSkyLeap; public static hook_OnEnter <5>__SlideIntroState; public static hook_OnEnter <6>__SpellChannelEnterState; public static hook_OnEnter <7>__SpellChannelExitState; public static hook_OnEnter <8>__SpellChannelState; public static hook_OnEnter <9>__SprintBash; public static hook_OnEnter <10>__StaggerEnter; public static hook_OnEnter <11>__StaggerExit; public static hook_OnEnter <12>__StaggerLoop; public static hook_OnEnter <13>__TrueDeathState; public static hook_OnEnter <14>__UltChannelState; public static hook_FireWave <15>__FireWave; public static hook_OnEnter <16>__FireLunarShards; public static hook_FixedUpdate <17>__WeaponSlam2; public static hook_OnEnter <18>__WeaponSlam; public static hook_OnEnter <19>__Phase1; public static hook_OnEnter <20>__Phase2; public static hook_OnEnter <21>__Phase3; public static hook_OnEnter <22>__Phase4; public static hook_Start <23>__SpeedUpProjectiles; public static hook_Start <24>__SpeedUpProjectiles2; public static hook_Start <25>__CacheObjects; public static StatHookEventHandler <26>__RecalculateStatsAPI_GetStatCoefficients; } public static void Init() { //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Expected O, but got Unknown //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) //IL_003d: Expected O, but got Unknown //IL_0053: Unknown result type (might be due to invalid IL or missing references) //IL_0058: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Expected O, but got Unknown //IL_0074: Unknown result type (might be due to invalid IL or missing references) //IL_0079: Unknown result type (might be due to invalid IL or missing references) //IL_007f: Expected O, but got Unknown //IL_0095: Unknown result type (might be due to invalid IL or missing references) //IL_009a: Unknown result type (might be due to invalid IL or missing references) //IL_00a0: Expected O, but got Unknown //IL_00b6: Unknown result type (might be due to invalid IL or missing references) //IL_00bb: Unknown result type (might be due to invalid IL or missing references) //IL_00c1: Expected O, but got Unknown //IL_00d7: 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_00e2: Expected O, but got Unknown //IL_00f8: 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_0103: Expected O, but got Unknown //IL_0119: Unknown result type (might be due to invalid IL or missing references) //IL_011e: Unknown result type (might be due to invalid IL or missing references) //IL_0124: Expected O, but got Unknown //IL_013a: Unknown result type (might be due to invalid IL or missing references) //IL_013f: Unknown result type (might be due to invalid IL or missing references) //IL_0145: Expected O, but got Unknown //IL_015b: Unknown result type (might be due to invalid IL or missing references) //IL_0160: Unknown result type (might be due to invalid IL or missing references) //IL_0166: Expected O, but got Unknown //IL_017c: Unknown result type (might be due to invalid IL or missing references) //IL_0181: Unknown result type (might be due to invalid IL or missing references) //IL_0187: Expected O, but got Unknown //IL_019d: 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_01a8: Expected O, but got Unknown //IL_01be: Unknown result type (might be due to invalid IL or missing references) //IL_01c3: Unknown result type (might be due to invalid IL or missing references) //IL_01c9: 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_01ea: Expected O, but got Unknown //IL_0200: Unknown result type (might be due to invalid IL or missing references) //IL_0205: Unknown result type (might be due to invalid IL or missing references) //IL_020b: Expected O, but got Unknown //IL_0221: Unknown result type (might be due to invalid IL or missing references) //IL_0226: Unknown result type (might be due to invalid IL or missing references) //IL_022c: Expected O, but got Unknown //IL_0242: Unknown result type (might be due to invalid IL or missing references) //IL_0247: Unknown result type (might be due to invalid IL or missing references) //IL_024d: Expected O, but got Unknown //IL_0263: Unknown result type (might be due to invalid IL or missing references) //IL_0268: Unknown result type (might be due to invalid IL or missing references) //IL_026e: Expected O, but got Unknown //IL_0284: Unknown result type (might be due to invalid IL or missing references) //IL_0289: Unknown result type (might be due to invalid IL or missing references) //IL_028f: Expected O, but got Unknown //IL_02a5: Unknown result type (might be due to invalid IL or missing references) //IL_02aa: Unknown result type (might be due to invalid IL or missing references) //IL_02b0: Expected O, but got Unknown //IL_02c6: Unknown result type (might be due to invalid IL or missing references) //IL_02cb: Unknown result type (might be due to invalid IL or missing references) //IL_02d1: Expected O, but got Unknown //IL_02e7: Unknown result type (might be due to invalid IL or missing references) //IL_02ec: Unknown result type (might be due to invalid IL or missing references) //IL_02f2: Expected O, but got Unknown //IL_0308: Unknown result type (might be due to invalid IL or missing references) //IL_030d: Unknown result type (might be due to invalid IL or missing references) //IL_0313: Expected O, but got Unknown //IL_0329: Unknown result type (might be due to invalid IL or missing references) //IL_032e: Unknown result type (might be due to invalid IL or missing references) //IL_0334: Expected O, but got Unknown //IL_034a: Unknown result type (might be due to invalid IL or missing references) //IL_034f: Unknown result type (might be due to invalid IL or missing references) //IL_0355: Expected O, but got Unknown //IL_036b: Unknown result type (might be due to invalid IL or missing references) //IL_0370: Unknown result type (might be due to invalid IL or missing references) //IL_0376: Expected O, but got Unknown object obj = <>O.<0>__FireRandomProjectiles; if (obj == null) { hook_OnEnter val = FireRandomProjectiles; <>O.<0>__FireRandomProjectiles = val; obj = (object)val; } FireRandomProjectiles.OnEnter += (hook_OnEnter)obj; object obj2 = <>O.<1>__BaseSlideState; if (obj2 == null) { hook_OnEnter val2 = BaseSlideState; <>O.<1>__BaseSlideState = val2; obj2 = (object)val2; } BaseSlideState.OnEnter += (hook_OnEnter)obj2; object obj3 = <>O.<2>__ExitSkyLeap; if (obj3 == null) { hook_OnEnter val3 = ExitSkyLeap; <>O.<2>__ExitSkyLeap = val3; obj3 = (object)val3; } ExitSkyLeap.OnEnter += (hook_OnEnter)obj3; object obj4 = <>O.<3>__FistSlam; if (obj4 == null) { hook_OnEnter val4 = FistSlam; <>O.<3>__FistSlam = val4; obj4 = (object)val4; } FistSlam.OnEnter += (hook_OnEnter)obj4; object obj5 = <>O.<4>__HoldSkyLeap; if (obj5 == null) { hook_OnEnter val5 = HoldSkyLeap; <>O.<4>__HoldSkyLeap = val5; obj5 = (object)val5; } HoldSkyLeap.OnEnter += (hook_OnEnter)obj5; object obj6 = <>O.<5>__SlideIntroState; if (obj6 == null) { hook_OnEnter val6 = SlideIntroState; <>O.<5>__SlideIntroState = val6; obj6 = (object)val6; } SlideIntroState.OnEnter += (hook_OnEnter)obj6; object obj7 = <>O.<6>__SpellChannelEnterState; if (obj7 == null) { hook_OnEnter val7 = SpellChannelEnterState; <>O.<6>__SpellChannelEnterState = val7; obj7 = (object)val7; } SpellChannelEnterState.OnEnter += (hook_OnEnter)obj7; object obj8 = <>O.<7>__SpellChannelExitState; if (obj8 == null) { hook_OnEnter val8 = SpellChannelExitState; <>O.<7>__SpellChannelExitState = val8; obj8 = (object)val8; } SpellChannelExitState.OnEnter += (hook_OnEnter)obj8; object obj9 = <>O.<8>__SpellChannelState; if (obj9 == null) { hook_OnEnter val9 = SpellChannelState; <>O.<8>__SpellChannelState = val9; obj9 = (object)val9; } SpellChannelState.OnEnter += (hook_OnEnter)obj9; object obj10 = <>O.<9>__SprintBash; if (obj10 == null) { hook_OnEnter val10 = SprintBash; <>O.<9>__SprintBash = val10; obj10 = (object)val10; } SprintBash.OnEnter += (hook_OnEnter)obj10; object obj11 = <>O.<10>__StaggerEnter; if (obj11 == null) { hook_OnEnter val11 = StaggerEnter; <>O.<10>__StaggerEnter = val11; obj11 = (object)val11; } StaggerEnter.OnEnter += (hook_OnEnter)obj11; object obj12 = <>O.<11>__StaggerExit; if (obj12 == null) { hook_OnEnter val12 = StaggerExit; <>O.<11>__StaggerExit = val12; obj12 = (object)val12; } StaggerExit.OnEnter += (hook_OnEnter)obj12; object obj13 = <>O.<12>__StaggerLoop; if (obj13 == null) { hook_OnEnter val13 = StaggerLoop; <>O.<12>__StaggerLoop = val13; obj13 = (object)val13; } StaggerLoop.OnEnter += (hook_OnEnter)obj13; object obj14 = <>O.<13>__TrueDeathState; if (obj14 == null) { hook_OnEnter val14 = TrueDeathState; <>O.<13>__TrueDeathState = val14; obj14 = (object)val14; } TrueDeathState.OnEnter += (hook_OnEnter)obj14; object obj15 = <>O.<14>__UltChannelState; if (obj15 == null) { hook_OnEnter val15 = UltChannelState; <>O.<14>__UltChannelState = val15; obj15 = (object)val15; } UltChannelState.OnEnter += (hook_OnEnter)obj15; object obj16 = <>O.<15>__FireWave; if (obj16 == null) { hook_FireWave val16 = FireWave; <>O.<15>__FireWave = val16; obj16 = (object)val16; } UltChannelState.FireWave += (hook_FireWave)obj16; object obj17 = <>O.<16>__FireLunarShards; if (obj17 == null) { hook_OnEnter val17 = FireLunarShards; <>O.<16>__FireLunarShards = val17; obj17 = (object)val17; } FireLunarShards.OnEnter += (hook_OnEnter)obj17; object obj18 = <>O.<17>__WeaponSlam2; if (obj18 == null) { hook_FixedUpdate val18 = WeaponSlam2; <>O.<17>__WeaponSlam2 = val18; obj18 = (object)val18; } WeaponSlam.FixedUpdate += (hook_FixedUpdate)obj18; object obj19 = <>O.<18>__WeaponSlam; if (obj19 == null) { hook_OnEnter val19 = WeaponSlam; <>O.<18>__WeaponSlam = val19; obj19 = (object)val19; } WeaponSlam.OnEnter += (hook_OnEnter)obj19; object obj20 = <>O.<19>__Phase1; if (obj20 == null) { hook_OnEnter val20 = Phase1; <>O.<19>__Phase1 = val20; obj20 = (object)val20; } Phase1.OnEnter += (hook_OnEnter)obj20; object obj21 = <>O.<20>__Phase2; if (obj21 == null) { hook_OnEnter val21 = Phase2; <>O.<20>__Phase2 = val21; obj21 = (object)val21; } Phase2.OnEnter += (hook_OnEnter)obj21; object obj22 = <>O.<21>__Phase3; if (obj22 == null) { hook_OnEnter val22 = Phase3; <>O.<21>__Phase3 = val22; obj22 = (object)val22; } Phase3.OnEnter += (hook_OnEnter)obj22; object obj23 = <>O.<22>__Phase4; if (obj23 == null) { hook_OnEnter val23 = Phase4; <>O.<22>__Phase4 = val23; obj23 = (object)val23; } Phase4.OnEnter += (hook_OnEnter)obj23; object obj24 = <>O.<23>__SpeedUpProjectiles; if (obj24 == null) { hook_Start val24 = SpeedUpProjectiles; <>O.<23>__SpeedUpProjectiles = val24; obj24 = (object)val24; } ProjectileSimple.Start += (hook_Start)obj24; object obj25 = <>O.<24>__SpeedUpProjectiles2; if (obj25 == null) { hook_Start val25 = SpeedUpProjectiles2; <>O.<24>__SpeedUpProjectiles2 = val25; obj25 = (object)val25; } ProjectileController.Start += (hook_Start)obj25; object obj26 = <>O.<25>__CacheObjects; if (obj26 == null) { hook_Start val26 = CacheObjects; <>O.<25>__CacheObjects = val26; obj26 = (object)val26; } SceneDirector.Start += (hook_Start)obj26; object obj27 = <>O.<26>__RecalculateStatsAPI_GetStatCoefficients; if (obj27 == null) { StatHookEventHandler val27 = RecalculateStatsAPI_GetStatCoefficients; <>O.<26>__RecalculateStatsAPI_GetStatCoefficients = val27; obj27 = (object)val27; } RecalculateStatsAPI.GetStatCoefficients += (StatHookEventHandler)obj27; } public static void SpeedUpProjectiles2(orig_Start orig, ProjectileController self) { //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_0059: 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) orig.Invoke(self); ProjectileCharacterController component = ((Component)self).gameObject.GetComponent<ProjectileCharacterController>(); ProjectileController component2 = ((Component)self).GetComponent<ProjectileController>(); object obj; if (component2 == null) { obj = null; } else { GameObject owner = component2.owner; obj = ((owner != null) ? owner.GetComponent<CharacterBody>() : null); } CharacterBody val = (CharacterBody)obj; if ((Object)(object)((Component)self).gameObject != (Object)null && (Object)(object)component != (Object)null && (val.bodyIndex == Main.mithrixBody || val.bodyIndex == Main.mithrixPhase4Body)) { component.velocity *= Main.ProjectileSpeed.Value; if (component.lifetime < 4f) { component.lifetime = 4f; } } } public static void SlideIntroState(orig_OnEnter orig, SlideIntroState self) { //IL_0010: 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_002a: Unknown result type (might be due to invalid IL or missing references) //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) //IL_0089: 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) if (((EntityState)self).isAuthority) { Ray aimRay = ((BaseState)self).GetAimRay(); for (int i = 0; i < 6; i++) { ProjectileManager.instance.FireProjectile(FireLunarShards.projectilePrefab, ((Ray)(ref aimRay)).origin, Quaternion.LookRotation(((Ray)(ref aimRay)).direction), ((EntityState)self).gameObject, ((EntityState)self).characterBody.damage * 0.03f / 12f, 0f, Util.CheckRoll(((EntityState)self).characterBody.crit, ((EntityState)self).characterBody.master), (DamageColorIndex)0, (GameObject)null, -1f); ((Ray)(ref aimRay)).direction = Util.ApplySpread(((Ray)(ref aimRay)).direction, 0f, 4f, 4f, 4f, 0f, 0f); } } orig.Invoke(self); } public static void FireWave(orig_FireWave orig, UltChannelState self) { //IL_0023: 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_002d: Unknown result type (might be due to invalid IL or missing references) //IL_0032: 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_006a: 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_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_008b: 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_0091: 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_00a1: Unknown result type (might be due to invalid IL or missing references) if (((EntityState)self).isAuthority) { float num = 4f; float num2 = 360f / num; Vector3 val = Vector3.ProjectOnPlane(((EntityState)self).inputBank.aimDirection, Vector3.up); Transform val2 = ((BaseState)self).FindModelChild(WeaponSlam.muzzleString); Vector3 val3 = val2.position + new Vector3(Random.Range(-50f, 50f), 0f, Random.Range(-50f, 50f)); for (int i = 0; (float)i < num; i++) { Vector3 val4 = Quaternion.AngleAxis(num2 * (float)i, Vector3.up) * val; ProjectileManager.instance.FireProjectile(UltChannelState.waveProjectileLeftPrefab, val3, Util.QuaternionSafeLookRotation(val4), ((EntityState)self).gameObject, ((EntityState)self).characterBody.damage * 4f, FistSlam.waveProjectileForce, Util.CheckRoll(((EntityState)self).characterBody.crit, ((EntityState)self).characterBody.master), (DamageColorIndex)0, (GameObject)null, -1f); } } orig.Invoke(self); } public static void Phase1(orig_OnEnter orig, Phase1 self) { Main.Ramp1.SetActive(false); Main.Ramp2.SetActive(false); Main.Ramp3.SetActive(false); Main.Rocks.SetActive(false); orig.Invoke(self); } public static void CacheObjects(orig_Start orig, SceneDirector self) { //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) Scene activeScene = SceneManager.GetActiveScene(); if (((Scene)(ref activeScene)).name == "moon2") { Transform transform = GameObject.Find("HOLDER: Final Arena").transform; Main.Ramp1 = ((Component)transform.GetChild(0)).gameObject; Main.Ramp2 = ((Component)transform.GetChild(1)).gameObject; Main.Ramp3 = ((Component)transform.GetChild(2)).gameObject; Main.Rocks = ((Component)transform.GetChild(6)).gameObject; } orig.Invoke(self); } public static void Phase4(orig_OnEnter orig, Phase4 self) { Main.Ramp1.SetActive(false); Main.Ramp2.SetActive(false); Main.Ramp3.SetActive(false); Main.Rocks.SetActive(false); orig.Invoke(self); } public static void HoldSkyLeap(orig_OnEnter orig, HoldSkyLeap self) { HoldSkyLeap.duration = 2f; if (NetworkServer.active) { Util.CleanseBody(((EntityState)self).characterBody, true, false, false, true, true, false); } orig.Invoke(self); } public static void ExitSkyLeap(orig_OnEnter orig, ExitSkyLeap self) { ExitSkyLeap.waveProjectileCount = 20; ExitSkyLeap.waveProjectileDamageCoefficient = 2f; orig.Invoke(self); } public static void WeaponSlam(orig_OnEnter orig, WeaponSlam self) { //IL_004a: 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) WeaponSlam.waveProjectileArc = 360f; WeaponSlam.waveProjectileCount = 8; WeaponSlam.waveProjectileDamageCoefficient = 2f; WeaponSlam.waveProjectileForce = -1600f; WeaponSlam.weaponForce = -2300f; GameObject pillarProjectilePrefab = WeaponSlam.pillarProjectilePrefab; pillarProjectilePrefab.transform.localScale = new Vector3(4f, 4f, 4f); GameObject ghostPrefab = pillarProjectilePrefab.GetComponent<ProjectileController>().ghostPrefab; ghostPrefab.transform.localScale = new Vector3(4f, 4f, 4f); Main.hasFired = false; WeaponSlam.duration = 3f; orig.Invoke(self); } public static void BaseSlideState(orig_OnEnter orig, BaseSlideState self) { //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: Unknown result type (might be due to invalid IL or missing references) //IL_0037: Unknown result type (might be due to invalid IL or missing references) //IL_003c: Unknown result type (might be due to invalid IL or missing references) //IL_0049: Unknown result type (might be due to invalid IL or missing references) //IL_004e: Unknown result type (might be due to invalid IL or missing references) //IL_0053: Unknown result type (might be due to invalid IL or missing references) if (!(self is SlideBackwardState)) { if (!(self is SlideLeftState)) { if (self is SlideRightState) { self.slideRotation = Quaternion.AngleAxis(40f, Vector3.up); } } else { self.slideRotation = Quaternion.AngleAxis(-40f, Vector3.up); } } else { self.slideRotation = Quaternion.identity; } orig.Invoke(self); } public static void SprintBash(orig_OnEnter orig, SprintBash self) { //IL_003c: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_005d: 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_0065: 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_0090: 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_00a2: 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_00f3: Unknown result type (might be due to invalid IL or missing references) //IL_00f8: Unknown result type (might be due to invalid IL or missing references) //IL_00fc: Unknown result type (might be due to invalid IL or missing references) //IL_0123: Unknown result type (might be due to invalid IL or missing references) //IL_0128: Unknown result type (might be due to invalid IL or missing references) //IL_0136: Unknown result type (might be due to invalid IL or missing references) //IL_013b: Unknown result type (might be due to invalid IL or missing references) //IL_013d: Unknown result type (might be due to invalid IL or missing references) SprintBash.durationBeforePriorityReduces = 0.18f; ((BasicMeleeAttack)self).baseDuration = 1.4f; ((BasicMeleeAttack)self).damageCoefficient = 1.5f; ((BasicMeleeAttack)self).pushAwayForce = 1500f; ((BasicMeleeAttack)self).forceVector = new Vector3(0f, 750f, 0f); if (((EntityState)self).isAuthority) { for (int i = 0; i < 6; i++) { Ray aimRay = ((BaseState)self).GetAimRay(); Vector3 val = Util.ApplySpread(((Ray)(ref aimRay)).direction, 0f, 0f, 1f, 0f, (float)i * 5f, 0f); ProjectileManager.instance.FireProjectile(FireLunarShards.projectilePrefab, ((Ray)(ref aimRay)).origin, Util.QuaternionSafeLookRotation(val), ((EntityState)self).gameObject, ((EntityState)self).characterBody.damage * 0.05f / 12f, 0f, Util.CheckRoll(((EntityState)self).characterBody.crit, ((EntityState)self).characterBody.master), (DamageColorIndex)0, (GameObject)null, -1f); Ray aimRay2 = ((BaseState)self).GetAimRay(); Vector3 val2 = Util.ApplySpread(((Ray)(ref aimRay2)).direction, 0f, 0f, 1f, 0f, (0f - (float)i) * 5f, 0f); ProjectileManager.instance.FireProjectile(FireLunarShards.projectilePrefab, ((Ray)(ref aimRay2)).origin, Util.QuaternionSafeLookRotation(val2), ((EntityState)self).gameObject, ((EntityState)self).characterBody.damage * 0.05f / 12f, 0f, Util.CheckRoll(((EntityState)self).characterBody.crit, ((EntityState)self).characterBody.master), (DamageColorIndex)0, (GameObject)null, -1f); } } orig.Invoke(self); } public static void FireLunarShards(orig_OnEnter orig, FireLunarShards self) { //IL_006c: Unknown result type (might be due to invalid IL or missing references) //IL_0071: Unknown result type (might be due to invalid IL or missing references) //IL_0076: 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) //IL_008c: 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_00b9: 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_00cb: 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_00d7: 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_00e8: Unknown result type (might be due to invalid IL or missing references) //IL_00ea: 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) FireLunarShards.spreadBloomValue = 20f; FireLunarShards.recoilAmplitude = 2f; FireLunarShards.baseDuration = 0.03f; Main.ShardCount++; if (self is FireLunarShardsHurt) { if (((EntityState)self).isAuthority && Main.ShardCount == 9) { float num = 3f; float num2 = 360f / num; Vector3 val = Vector3.ProjectOnPlane(((EntityState)self).inputBank.aimDirection, Vector3.up); Transform val2 = ((BaseState)self).FindModelChild(WeaponSlam.muzzleString); Vector3 val3 = val2.position + new Vector3(Random.Range(-50f, 50f), 0f, Random.Range(-50f, 50f)); int num3 = 0; while ((float)num3 < num) { Vector3 val4 = Quaternion.AngleAxis(num2 * (float)num3, Vector3.up) * val; ProjectileManager.instance.FireProjectile(UltChannelState.waveProjectileLeftPrefab, val3, Util.QuaternionSafeLookRotation(val4), ((EntityState)self).gameObject, ((EntityState)self).characterBody.damage * 3.5f, FistSlam.waveProjectileForce, Util.CheckRoll(((EntityState)self).characterBody.crit, ((EntityState)self).characterBody.master), (DamageColorIndex)0, (GameObject)null, -1f); num3++; Main.ShardCount = 0; } } } else { Main.ShardCount = 0; } orig.Invoke(self); } public static void Phase2(orig_OnEnter orig, Phase2 self) { //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Expected O, but got Unknown orig.Invoke(self); ((BrotherEncounterPhaseBaseState)self).PreEncounterBegin(); ((EntityState)self).outer.SetNextState((EntityState)new Phase3()); } public static void FistSlam(orig_OnEnter orig, FistSlam self) { //IL_0048: Unknown result type (might be due to invalid IL or missing references) //IL_004d: Unknown result type (might be due to invalid IL or missing references) //IL_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_0067: Unknown result type (might be due to invalid IL or missing references) //IL_008f: Unknown result type (might be due to invalid IL or missing references) //IL_0094: Unknown result type (might be due to invalid IL or missing references) //IL_0099: Unknown result type (might be due to invalid IL or missing references) //IL_00a6: 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) //IL_00b1: Unknown result type (might be due to invalid IL or missing references) //IL_00b6: Unknown result type (might be due to invalid IL or missing references) //IL_00c2: 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) FistSlam.waveProjectileDamageCoefficient = 2.3f; FistSlam.healthCostFraction = 0f; FistSlam.waveProjectileCount = 20; FistSlam.baseDuration = 3.5f; if (((EntityState)self).isAuthority) { float num = 8f; float num2 = 360f / num; Vector3 val = Vector3.ProjectOnPlane(((EntityState)self).inputBank.aimDirection, Vector3.up); Transform val2 = ((BaseState)self).FindModelChild(WeaponSlam.muzzleString); Vector3 val3 = val2.position + new Vector3(Random.Range(-50f, 50f), 0f, Random.Range(-50f, 50f)); for (int i = 0; (float)i < num; i++) { Vector3 val4 = Quaternion.AngleAxis(num2 * (float)i, Vector3.up) * val; ProjectileManager.instance.FireProjectile(UltChannelState.waveProjectileLeftPrefab, val3, Util.QuaternionSafeLookRotation(val4), ((EntityState)self).gameObject, ((EntityState)self).characterBody.damage * 3.5f, FistSlam.waveProjectileForce, Util.CheckRoll(((EntityState)self).characterBody.crit, ((EntityState)self).characterBody.master), (DamageColorIndex)0, (GameObject)null, -1f); } } orig.Invoke(self); } public static void SpellChannelEnterState(orig_OnEnter orig, SpellChannelEnterState self) { SpellChannelEnterState.duration = 3f; orig.Invoke(self); } public static void SpellChannelState(orig_OnEnter orig, SpellChannelState self) { SpellChannelState.stealInterval = 0.05f; SpellChannelState.delayBeforeBeginningSteal = 0f; SpellChannelState.maxDuration = 15f; orig.Invoke(self); } public static void SpellChannelExitState(orig_OnEnter orig, SpellChannelExitState self) { SpellChannelExitState.lendInterval = 0.04f; SpellChannelExitState.duration = 2.5f; orig.Invoke(self); } public static void StaggerEnter(orig_OnEnter orig, StaggerEnter self) { ((StaggerBaseState)self).duration = 0f; orig.Invoke(self); } public static void StaggerExit(orig_OnEnter orig, StaggerExit self) { ((StaggerBaseState)self).duration = 0f; orig.Invoke(self); } public static void StaggerLoop(orig_OnEnter orig, StaggerLoop self) { ((StaggerBaseState)self).duration = 0f; orig.Invoke(self); } public static void TrueDeathState(orig_OnEnter orig, TrueDeathState self) { TrueDeathState.dissolveDuration = 5f; orig.Invoke(self); } public static void FireRandomProjectiles(orig_OnEnter orig, FireRandomProjectiles self) { FireRandomProjectiles.maximumCharges = 150; FireRandomProjectiles.chargeRechargeDuration = 0.03f; FireRandomProjectiles.chanceToFirePerSecond = 0.5f; FireRandomProjectiles.damageCoefficient = 12f; orig.Invoke(self); } public static void SpeedUpProjectiles(orig_Start orig, ProjectileSimple self) { //IL_0030: 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_0043: 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_0065: 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_0075: 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_007d: Unknown result type (might be due to invalid IL or missing references) ProjectileController component = ((Component)self).GetComponent<ProjectileController>(); object obj; if (component == null) { obj = null; } else { GameObject owner = component.owner; obj = ((owner != null) ? owner.GetComponent<CharacterBody>() : null); } CharacterBody val = (CharacterBody)obj; if ((val?.bodyIndex == (BodyIndex?)Main.mithrixBody || val?.bodyIndex == (BodyIndex?)Main.mithrixPhase4Body) && Object.op_Implicit((Object)(object)self.rigidbody) && !self.rigidbody.useGravity) { self.desiredForwardSpeed *= Main.ProjectileSpeed.Value; if (self.lifetime < 4f) { self.lifetime = 4f; } } orig.Invoke(self); } public static void RecalculateStatsAPI_GetStatCoefficients(CharacterBody sender, StatHookEventArgs args) { //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_000f: Unknown result type (might be due to invalid IL or missing references) //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) if (Object.op_Implicit((Object)(object)sender) && (sender.bodyIndex == Main.mithrixBody || sender.bodyIndex == Main.mithrixPhase4Body)) { args.armorAdd += Main.LoopArmor.Value * (float)Run.instance.loopClearCount; args.cooldownMultAdd += Main.StageCooldownReduction.Value * (float)Run.instance.stageClearCount; if (sender.isBoss || sender.isChampion) { args.healthMultAdd += Main.BossHp.Value * (float)Run.instance.stageClearCount; } } } public static void UltChannelState(orig_OnEnter orig, UltChannelState self) { UltChannelState.totalWaves = 8; UltChannelState.maxDuration = 8f; orig.Invoke(self); } public static void WeaponSlam2(orig_FixedUpdate orig, WeaponSlam self) { //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Unknown result type (might be due to invalid IL or missing references) //IL_0090: Unknown result type (might be due to invalid IL or missing references) //IL_0095: Unknown result type (might be due to invalid IL or missing references) //IL_009a: 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_00b0: 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_0067: 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_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_00cf: 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_00e0: Unknown result type (might be due to invalid IL or missing references) //IL_00e2: Unknown result type (might be due to invalid IL or missing references) //IL_00e4: Unknown result type (might be due to invalid IL or missing references) if (((EntityState)self).isAuthority && self.hasDoneBlastAttack && Object.op_Implicit((Object)(object)self.modelTransform) && !Main.hasFired) { Ray aimRay = ((BaseState)self).GetAimRay(); Transform val = ((BaseState)self).FindModelChild(FireLunarShards.muzzleString); if (Object.op_Implicit((Object)(object)val)) { ((Ray)(ref aimRay)).origin = val.position; } float num = 7f; Main.hasFired = true; float num2 = 360f / num; Vector3 val2 = Vector3.ProjectOnPlane(((EntityState)self).inputBank.aimDirection, Vector3.up); Transform val3 = ((BaseState)self).FindModelChild(WeaponSlam.muzzleString); Vector3 position = val3.position; for (int i = 0; (float)i < num; i++) { Vector3 val4 = Quaternion.AngleAxis(num2 * (float)i, Vector3.up) * val2; ProjectileManager.instance.FireProjectile(FistSlam.waveProjectilePrefab, position, Util.QuaternionSafeLookRotation(val4), ((EntityState)self).gameObject, ((EntityState)self).characterBody.damage * FistSlam.waveProjectileDamageCoefficient * 0.6f, FistSlam.waveProjectileForce, Util.CheckRoll(((EntityState)self).characterBody.crit, ((EntityState)self).characterBody.master), (DamageColorIndex)0, (GameObject)null, -1f); } } orig.Invoke(self); } public static void Phase3(orig_OnEnter orig, Phase3 self) { Main.Ramp1.SetActive(false); Main.Ramp2.SetActive(false); Main.Ramp3.SetActive(false); Main.Rocks.SetActive(false); orig.Invoke(self); if (!NetworkServer.active) { return; } foreach (TeamComponent item in new List<TeamComponent>(TeamComponent.GetTeamMembers((TeamIndex)2))) { if (!Object.op_Implicit((Object)(object)item)) { continue; } HealthComponent component = ((Component)item).GetComponent<HealthComponent>(); if (Object.op_Implicit((Object)(object)component)) { switch (((Object)item.body).name) { case "LunarExploderBody(Clone)": component.Suicide((GameObject)null, (GameObject)null, (DamageType)0); break; case "LunarGolemBody(Clone)": component.Suicide((GameObject)null, (GameObject)null, (DamageType)0); break; case "LunarWispBody(Clone)": component.Suicide((GameObject)null, (GameObject)null, (DamageType)0); break; } } } } } }