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 HalcyonSeedBuff v1.1.3
plugins/HalcyonSeedBuff.dll
Decompiled a year 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.Permissions; using BepInEx; using BepInEx.Logging; using EntityStates; using EntityStates.BrotherMonster; using EntityStates.MeridianEvent; using EntityStates.Missions.BrotherEncounter; using HalcyonSeedBuff.Changes; using IL.RoR2; using Mono.Cecil.Cil; using MonoMod.Cil; using On.EntityStates.BrotherMonster; using On.EntityStates.MeridianEvent; using On.EntityStates.Missions.BrotherEncounter; using On.RoR2; using RoR2; using UnityEngine; using UnityEngine.AddressableAssets; using UnityEngine.Networking; [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.1", FrameworkDisplayName = "")] [assembly: AssemblyCompany("HalcyonSeedBuff")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("HalcyonSeedBuff")] [assembly: AssemblyTitle("HalcyonSeedBuff")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] namespace HalcyonSeedBuff { [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInPlugin("com.kking117.HalcyonSeedBuff", "HalcyonSeedBuff", "1.1.3")] public class MainPlugin : BaseUnityPlugin { public const string MODUID = "com.kking117.HalcyonSeedBuff"; public const string MODNAME = "HalcyonSeedBuff"; public const string MODTOKEN = "KKING117_HALCYONSEEDBUFF_"; public const string MODVERSION = "1.1.3"; internal static ManualLogSource ModLogger; public static int Halcyon_ItemMult = 2; public static bool Halcyon_CanBeStolen = true; public static bool Halcyon_ChannelTeamFix = false; public static int ChannelOn_MoonPhase = 2; public static int ChannelOn_MeridianPhase = 3; public static bool ChannelOn_Focus = true; public static bool ChannelOn_VoidRaid = true; public static bool FalseSon_PlayerLoyal = true; public static bool FalseSon_BossLoyal = true; public static string FalseSon_BodyList = "FalseSonBody, FalseSonBossBody, FalseSonBossBodyLunarShard, FalseSonBossBodyBrokenLunarShard"; public void Awake() { ModLogger = ((BaseUnityPlugin)this).Logger; ReadConfig(); HalcyonSeed.EnableChanges(); } public void ReadConfig() { Halcyon_ItemMult = ((BaseUnityPlugin)this).Config.Bind<int>("Halcyon Seed", "Effect Multiplier", 2, "Multiplies the Halcyon Seed count by this much when calculating Aurelionite's health and damage.").Value; Halcyon_CanBeStolen = ((BaseUnityPlugin)this).Config.Bind<bool>("Halcyon Seed", "Can Be Stolen", true, "Allows Mithrix to steal and channel Halcyon Seeds. (Set Spawn Against Mithrix to 0-3 for this to work.)").Value; ChannelOn_Focus = ((BaseUnityPlugin)this).Config.Bind<bool>("Channel", "Spawn On Focus", true, "Attempt to channel Aurelionite when activating the Focus.").Value; ChannelOn_VoidRaid = ((BaseUnityPlugin)this).Config.Bind<bool>("Channel", "Spawn On Void Raid", true, "Attempt to channel Aurelionite at the start of each Voidling phase.").Value; ChannelOn_MoonPhase = ((BaseUnityPlugin)this).Config.Bind<int>("Channel", "Spawn Against Mithrix", 2, "Attempt to channel Aurelionite on this phase during the Mithrix fight. (0-4) (0 = Don't spawn, 4 = Vanilla)").Value; ChannelOn_MeridianPhase = ((BaseUnityPlugin)this).Config.Bind<int>("Channel", "Spawn Against False Son", 3, "Attempt to channel Aurelionite on this phase during the False Son fight. (0-3) (0 = Don't spawn, 3 = Vanilla)").Value; FalseSon_PlayerLoyal = ((BaseUnityPlugin)this).Config.Bind<bool>("False Son", "Loyal to Playable False Son", true, "If Aurelionite is channeled and a False Son Player exists then Aurelionite will be forced onto their team instead. (Has priority over 'Loyal to NPC False Son'.)").Value; FalseSon_BossLoyal = ((BaseUnityPlugin)this).Config.Bind<bool>("False Son", "Loyal to NPC False Son", true, "If Aurelionite is channeled and a False Son NPC exists then Aurelionite will be forced onto their team instead.").Value; FalseSon_BodyList = ((BaseUnityPlugin)this).Config.Bind<string>("False Son", "Body List", "FalseSonBody, FalseSonBossBody, FalseSonBossBodyLunarShard, FalseSonBossBodyBrokenLunarShard", "List of bodies that count as False Son.").Value; } } } namespace HalcyonSeedBuff.Changes { public class HalcyonSeed { private static float SummonTimer = -1f; private static float DisbandTimer = -1f; private static float BodyRadiusMult = 8f; private static Vector3 BodyOffset = new Vector3(1f, 0f, 0f); private static Vector3 MoonPosition = new Vector3(-87.4f, 491.95f, -2.54f); private static Vector3 MeridianPosition = new Vector3(92.7f, 152.4f, -143.5f); private static Vector3 SpawnLocation; private static List<MasterIndex> VoidlingIndices = new List<MasterIndex>(); private static MasterIndex MithrixIndex = MasterIndex.none; private static List<BodyIndex> FalseSonBodies = new List<BodyIndex>(); private static List<MasterIndex> FalseSonIndices = new List<MasterIndex>(); public static void EnableChanges() { ClampConfig(); Hooks(); } private static void ClampConfig() { MainPlugin.Halcyon_ItemMult = Math.Max(1, MainPlugin.Halcyon_ItemMult); MainPlugin.ChannelOn_MeridianPhase = Math.Clamp(MainPlugin.ChannelOn_MeridianPhase, 0, 3); } private static void EditTags() { //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_0034: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Invalid comparison between Unknown and I4 ItemDef val = Addressables.LoadAssetAsync<ItemDef>((object)"RoR2/Base/TitanGoldDuringTP/TitanGoldDuringTP.asset").WaitForCompletion(); if (!Object.op_Implicit((Object)(object)val)) { return; } List<ItemTag> list = val.tags.ToList(); for (int i = 0; i < list.Count; i++) { if ((int)list[i] == 12) { list.RemoveAt(i); i--; } } val.tags = list.ToArray(); } private static void Hooks() { //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Expected O, but got Unknown //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Expected O, but got Unknown //IL_0046: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Expected O, but got Unknown //IL_0058: Unknown result type (might be due to invalid IL or missing references) //IL_0062: Expected O, but got Unknown //IL_006a: Unknown result type (might be due to invalid IL or missing references) //IL_0074: Expected O, but got Unknown //IL_00ab: Unknown result type (might be due to invalid IL or missing references) //IL_00b5: Expected O, but got Unknown //IL_00bf: Unknown result type (might be due to invalid IL or missing references) //IL_00c9: Expected O, but got Unknown //IL_00d3: Unknown result type (might be due to invalid IL or missing references) //IL_00dd: Expected O, but got Unknown //IL_017a: Unknown result type (might be due to invalid IL or missing references) //IL_0184: Expected O, but got Unknown //IL_018c: Unknown result type (might be due to invalid IL or missing references) //IL_0196: Expected O, but got Unknown //IL_0119: Unknown result type (might be due to invalid IL or missing references) //IL_0123: Expected O, but got Unknown //IL_012d: Unknown result type (might be due to invalid IL or missing references) //IL_0137: Expected O, but got Unknown //IL_0141: Unknown result type (might be due to invalid IL or missing references) //IL_014b: Expected O, but got Unknown //IL_01b1: Unknown result type (might be due to invalid IL or missing references) //IL_01bb: Expected O, but got Unknown //IL_01c5: Unknown result type (might be due to invalid IL or missing references) //IL_01cf: Expected O, but got Unknown //IL_01d7: Unknown result type (might be due to invalid IL or missing references) //IL_01e1: Expected O, but got Unknown //IL_01e9: Unknown result type (might be due to invalid IL or missing references) //IL_01f3: Expected O, but got Unknown //IL_01fb: Unknown result type (might be due to invalid IL or missing references) //IL_0205: Expected O, but got Unknown //IL_020d: Unknown result type (might be due to invalid IL or missing references) //IL_0217: Expected O, but got Unknown //IL_021f: Unknown result type (might be due to invalid IL or missing references) //IL_0229: Expected O, but got Unknown //IL_0155: Unknown result type (might be due to invalid IL or missing references) //IL_015f: Expected O, but got Unknown MainPlugin.ModLogger.LogInfo((object)"Applying IL modifications"); GoldTitanManager.TryStartChannelingTitansServer += new Manipulator(IL_TrySpawnTitan); GoldTitanManager.OnBossGroupStartServer += new hook_OnBossGroupStartServer(GoldTitanManager_OnBossGroupStartServer); if (MainPlugin.ChannelOn_Focus) { InfiniteTowerRun.OnSafeWardActivated += new hook_OnSafeWardActivated(InfiniteTowerRun_OnSafeWardActivated); InfiniteTowerRun.MoveSafeWard += new hook_MoveSafeWard(InfiniteTowerRun_MoveSafeWard); InfiniteTowerRun.OnWaveAllEnemiesDefeatedServer += new hook_OnWaveAllEnemiesDefeatedServer(InfiniteTowerRun_OnWaveFinish); } if (MainPlugin.ChannelOn_MoonPhase != 4) { switch (MainPlugin.ChannelOn_MoonPhase) { case 1: Phase1.OnEnter += new hook_OnEnter(Moon_Phase1); break; case 2: Phase2.OnEnter += new hook_OnEnter(Moon_Phase2); break; case 3: Phase3.OnEnter += new hook_OnEnter(Moon_Phase3); break; } } if (MainPlugin.ChannelOn_MeridianPhase != 0) { switch (MainPlugin.ChannelOn_MeridianPhase) { case 1: Phase1.OnEnter += new hook_OnEnter(Meridian_Phase1); break; case 2: Phase2.OnEnter += new hook_OnEnter(Meridian_Phase2); break; case 3: Phase3.OnEnter += new hook_OnEnter(Meridian_Phase3); break; } Phase3.OnExit += new hook_OnExit(Meridian_Finish); } if (MainPlugin.Halcyon_CanBeStolen) { EditTags(); SpellChannelEnterState.OnEnter += new hook_OnEnter(OnItemSteal_Enter); SpellChannelExitState.OnExit += new hook_OnExit(OnItemSteal_End); } else if (MainPlugin.ChannelOn_MoonPhase == 4) { Phase4.OnEnter += new hook_OnEnter(Moon_Phase4); } EncounterFinished.OnEnter += new hook_OnEnter(OnEncounterFinish); Run.FixedUpdate += new hook_FixedUpdate(Run_FixedUpdate); Run.BeginStage += new hook_BeginStage(Run_BeginStage); MasterCatalog.Init += new hook_Init(MasterCatalog_Init); GoldTitanManager.CalcTitanPowerAndBestTeam += new hook_CalcTitanPowerAndBestTeam(CalcTitanPowerAndTeam); FSBFEncounterBaseState.KillAllMonsters += new hook_KillAllMonsters(KillAllMonsters); } private static void KillAllMonsters(orig_KillAllMonsters orig, FSBFEncounterBaseState self) { //IL_00e1: 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) if (!Object.op_Implicit((Object)(object)MeridianEventTriggerInteraction.instance) || (!MeridianEventTriggerInteraction.instance.isFirstPhase && !MeridianEventTriggerInteraction.instance.isFinalPhase)) { 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)) { continue; } bool flag = true; if (Object.op_Implicit((Object)(object)component.body)) { CharacterMaster master = component.body.master; if (Object.op_Implicit((Object)(object)master) && GoldTitanManager.currentTitans.Contains(master)) { flag = false; } } if (flag) { component.Suicide((GameObject)null, (GameObject)null, default(DamageTypeCombo)); } } } private static void MasterCatalog_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_0021: 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_004b: 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_0075: 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_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_00b6: Unknown result type (might be due to invalid IL or missing references) //IL_00b8: Invalid comparison between Unknown and I4 //IL_00c4: Unknown result type (might be due to invalid IL or missing references) orig.Invoke(); MithrixIndex = MasterCatalog.FindMasterIndex("BrotherHurtMaster"); VoidlingIndices.Add(MasterCatalog.FindMasterIndex("MiniVoidRaidCrabMasterPhase1")); VoidlingIndices.Add(MasterCatalog.FindMasterIndex("MiniVoidRaidCrabMasterPhase2")); VoidlingIndices.Add(MasterCatalog.FindMasterIndex("MiniVoidRaidCrabMasterPhase3")); FalseSonIndices.Add(MasterCatalog.FindMasterIndex("FalseSonBossMaster")); FalseSonIndices.Add(MasterCatalog.FindMasterIndex("FalseSonBossLunarShardMaster")); FalseSonIndices.Add(MasterCatalog.FindMasterIndex("FalseSonBossLunarShardBrokenMaster")); string[] array = MainPlugin.FalseSon_BodyList.Split(','); for (int i = 0; i < array.Length; i++) { BodyIndex val = BodyCatalog.FindBodyIndex(array[i].Trim()); if ((int)val > -1) { FalseSonBodies.Add(val); } else { Debug.LogWarning((object)("HalcyonSeedBuff: Could not find body '" + array[i] + "'")); } } } private static void Run_BeginStage(orig_BeginStage orig, Run self) { orig.Invoke(self); SummonTimer = -1f; DisbandTimer = -1f; } private static void Run_FixedUpdate(orig_FixedUpdate orig, Run self) { //IL_00a4: Unknown result type (might be due to invalid IL or missing references) orig.Invoke(self); if (!NetworkServer.active) { return; } if (DisbandTimer > 0f) { DisbandTimer -= Time.fixedDeltaTime; if (DisbandTimer <= 0f) { GoldTitanManager.KillTitansInList(GoldTitanManager.currentTitans); } } if (SummonTimer > 0f) { SummonTimer -= Time.fixedDeltaTime; if (SummonTimer <= 0f && GoldTitanManager.currentTitans.Count > -1) { GoldTitanManager.TryStartChannelingTitansServer((object)self, SpawnLocation, (Vector3?)null, (Action)null); } } } private static void CalcTitanPowerAndTeam(orig_CalcTitanPowerAndBestTeam orig, out int returnItemCount, out TeamIndex returnTeamIndex) { //IL_0025: 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_0032: Unknown result type (might be due to invalid IL or missing references) //IL_01ad: Unknown result type (might be due to invalid IL or missing references) //IL_01b0: Invalid comparison between Unknown and I4 //IL_003a: 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_004a: Unknown result type (might be due to invalid IL or missing references) //IL_004c: Invalid comparison between Unknown and I4 //IL_007e: Unknown result type (might be due to invalid IL or missing references) //IL_0080: 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_0069: Unknown result type (might be due to invalid IL or missing references) //IL_01d3: Unknown result type (might be due to invalid IL or missing references) //IL_01d5: Unknown result type (might be due to invalid IL or missing references) //IL_022d: Unknown result type (might be due to invalid IL or missing references) //IL_022f: Expected I4, but got Unknown //IL_020b: Unknown result type (might be due to invalid IL or missing references) //IL_020d: Invalid comparison between Unknown and I4 //IL_01a6: Unknown result type (might be due to invalid IL or missing references) //IL_01a9: Unknown result type (might be due to invalid IL or missing references) //IL_01ab: 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_01fc: Unknown result type (might be due to invalid IL or missing references) //IL_01fd: Unknown result type (might be due to invalid IL or missing references) //IL_0146: Unknown result type (might be due to invalid IL or missing references) //IL_0149: Invalid comparison between Unknown and I4 //IL_00f4: Unknown result type (might be due to invalid IL or missing references) //IL_018a: 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_019f: Unknown result type (might be due to invalid IL or missing references) //IL_01a1: Unknown result type (might be due to invalid IL or missing references) GoldTitanManager.isFalseSonBossLunarShardBrokenMaster = false; bool flag = false; if (MainPlugin.FalseSon_PlayerLoyal || MainPlugin.FalseSon_BossLoyal) { flag = true; } int num = 0; TeamIndex val = (TeamIndex)1; TeamIndex val2 = (TeamIndex)0; TeamIndex val3 = (TeamIndex)0; int num2 = 0; int num3 = 0; TeamIndex val4 = (TeamIndex)0; while ((int)val4 < 5) { int itemCountForTeam = Util.GetItemCountForTeam(val4, GoldTitanManager.goldTitanItemIndex, true, true); if ((int)val == 1) { if (itemCountForTeam >= num) { num = itemCountForTeam; val = val4; } } else if (itemCountForTeam > num) { num = itemCountForTeam; val = val4; } if (flag) { int num4 = 0; int num5 = 0; foreach (TeamComponent teamMember in TeamComponent.GetTeamMembers(val4)) { CharacterBody body = teamMember.body; if (!Object.op_Implicit((Object)(object)body)) { continue; } CharacterMaster master = body.master; if (Object.op_Implicit((Object)(object)master) && FalseSonBodies.Count > 0 && FalseSonBodies.Contains(body.bodyIndex)) { if (body.isPlayerControlled) { num4++; } else { num5++; } } } if ((int)val4 == 1) { if (num4 > 0) { num4++; } if (num5 > 0) { num5++; } } if (num4 > num2) { num2 = num4; val2 = val4; } if (num5 > num3) { num3 = num5; val3 = val4; } } val4 = (TeamIndex)(sbyte)(val4 + 1); } if (MainPlugin.FalseSon_BossLoyal && num3 > 0) { val = val3; } if (MainPlugin.FalseSon_PlayerLoyal && num2 > 0 && num2 >= num3) { val = val2; } if (num > 0) { num = (((int)val != 1) ? 1 : (num * MainPlugin.Halcyon_ItemMult)); } returnItemCount = num; returnTeamIndex = (TeamIndex)(int)val; } private static void GoldTitanManager_OnBossGroupStartServer(orig_OnBossGroupStartServer orig, BossGroup self) { //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_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_00b7: Unknown result type (might be due to invalid IL or missing references) //IL_00eb: 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) bool flag = false; bool flag2 = false; CombatSquad combatSquad = self.combatSquad; foreach (CharacterMaster readOnlyMembers in combatSquad.readOnlyMembersList) { if (readOnlyMembers.masterIndex == GoldTitanManager.brotherHurtMasterIndex) { flag = true; break; } if (readOnlyMembers.masterIndex == GoldTitanManager.falseSonBossLunarShardBrokenMasterIndex) { if (Object.op_Implicit((Object)(object)MeridianEventTriggerInteraction.instance)) { MeridianEventTriggerInteraction.instance.isGoldTitanSpawned = true; } flag2 = true; break; } if (MainPlugin.ChannelOn_VoidRaid) { VoidRaidGauntletController instance = VoidRaidGauntletController.instance; if (Object.op_Implicit((Object)(object)instance) && VoidlingIndices.Count > 0 && VoidlingIndices.Contains(readOnlyMembers.masterIndex)) { DisbandTimer = 1f; SummonTimer = 10f; SpawnLocation = instance.currentDonut.crabPosition.position; } } } if (!flag && !flag2) { orig.Invoke(self); } } private static void Moon_Phase1(orig_OnEnter orig, Phase1 self) { //IL_001d: 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) orig.Invoke(self); if (NetworkServer.active) { SummonTimer = 5.5f; SpawnLocation = MoonPosition; } } private static void Moon_Phase2(orig_OnEnter orig, Phase2 self) { //IL_001d: 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) orig.Invoke(self); if (NetworkServer.active) { SummonTimer = 3f; SpawnLocation = MoonPosition; } } private static void Moon_Phase3(orig_OnEnter orig, Phase3 self) { //IL_001d: 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) orig.Invoke(self); if (NetworkServer.active) { SummonTimer = 6f; SpawnLocation = MoonPosition; } } private static void Moon_Phase4(orig_OnEnter orig, Phase4 self) { //IL_001d: 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) orig.Invoke(self); if (NetworkServer.active) { SummonTimer = 10f; SpawnLocation = MoonPosition; } } private static void OnItemSteal_Enter(orig_OnEnter orig, SpellChannelEnterState self) { orig.Invoke(self); if (NetworkServer.active) { GoldTitanManager.KillTitansInList(GoldTitanManager.currentTitans); DisbandTimer = -1f; SummonTimer = -1f; } } private static void OnItemSteal_End(orig_OnExit orig, SpellChannelExitState self) { //IL_0023: 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_003e: 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) orig.Invoke(self); if (NetworkServer.active) { SummonTimer = 1f; SpawnLocation = ((EntityState)self).characterBody.footPosition + (((EntityState)self).characterBody.radius + BodyRadiusMult) * BodyOffset; } } private static void OnEncounterFinish(orig_OnEnter orig, EncounterFinished self) { orig.Invoke(self); if (NetworkServer.active) { DisbandTimer = 3f; SummonTimer = -1f; } } private static void Meridian_Phase1(orig_OnEnter orig, Phase1 self) { //IL_001d: 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) orig.Invoke(self); if (NetworkServer.active) { SummonTimer = 9f; SpawnLocation = MeridianPosition; } } private static void Meridian_Phase2(orig_OnEnter orig, Phase2 self) { //IL_001d: 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) orig.Invoke(self); if (NetworkServer.active) { SummonTimer = 3f; SpawnLocation = MeridianPosition; } } private static void Meridian_Phase3(orig_OnEnter orig, Phase3 self) { //IL_001d: 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) orig.Invoke(self); if (NetworkServer.active) { SummonTimer = 6f; SpawnLocation = MeridianPosition; } } private static void Meridian_Finish(orig_OnExit orig, Phase3 self) { orig.Invoke(self); if (NetworkServer.active) { DisbandTimer = 0.1f; SummonTimer = -1f; } } private static void InfiniteTowerRun_OnSafeWardActivated(orig_OnSafeWardActivated orig, InfiniteTowerRun self, InfiniteTowerSafeWardController safeWard) { //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Unknown result type (might be due to invalid IL or missing references) orig.Invoke(self, safeWard); if (NetworkServer.active && Object.op_Implicit((Object)(object)safeWard)) { SummonTimer = 3f; SpawnLocation = ((Component)safeWard).transform.position; } } private static void InfiniteTowerRun_OnWaveFinish(orig_OnWaveAllEnemiesDefeatedServer orig, InfiniteTowerRun self, InfiniteTowerWaveController wc) { orig.Invoke(self, wc); if (NetworkServer.active && self.IsStageTransitionWave()) { DisbandTimer = 3f; } } private static void InfiniteTowerRun_MoveSafeWard(orig_MoveSafeWard orig, InfiniteTowerRun self) { orig.Invoke(self); if (NetworkServer.active) { DisbandTimer = 3f; SummonTimer = -1f; } } private static void IL_TrySpawnTitan(ILContext il) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Expected O, but got Unknown //IL_00b8: Unknown result type (might be due to invalid IL or missing references) ILCursor val = new ILCursor(il); if (val.TryGotoNext(new Func<Instruction, bool>[4] { (Instruction x) => ILPatternMatchingExt.MatchLdcI4(x, 1), (Instruction x) => ILPatternMatchingExt.MatchStfld(x, typeof(DirectorSpawnRequest), "ignoreTeamMemberLimit"), (Instruction x) => ILPatternMatchingExt.MatchLdloc(x, 4), (Instruction x) => ILPatternMatchingExt.MatchLdcI4(x, 1) })) { val.Index += 3; val.Remove(); val.Emit(OpCodes.Ldloc, 2); } else { Debug.LogError((object)"HalcyonSeedBuff: Enforce Team - IL Hook failed"); } } } }