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 GodOfPharloom v1.0.1
BepInEx/plugins/GodsOfPharloom.dll
Decompiled 2 days ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using BepInEx; using BepInEx.Logging; using GlobalEnums; using GlobalSettings; using Gods_Of_Pharloom; using HarmonyLib; using HutongGames.PlayMaker; using HutongGames.PlayMaker.Actions; using InControl; using Newtonsoft.Json; using TMProOld; using TeamCherry.NestedFadeGroup; using UnityEngine; using UnityEngine.AddressableAssets; using UnityEngine.Events; using UnityEngine.InputSystem; using UnityEngine.InputSystem.Controls; using UnityEngine.ResourceManagement.AsyncOperations; using UnityEngine.ResourceManagement.ResourceProviders; using UnityEngine.SceneManagement; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")] [assembly: AssemblyCompany("GodsOfPharloom")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0+073048b694c6e2506a1392502eea824269c6bbc4")] [assembly: AssemblyProduct("GodsOfPharloom")] [assembly: AssemblyTitle("GodsOfPharloom")] [assembly: AssemblyVersion("1.0.0.0")] public class CustomScene { public List<TransitionPointInfo> TransitionGates = new List<TransitionPointInfo>(); public Action BeforeSceneLoaded; public Action<Scene> AfterSceneLoaded; public Action<Scene> AfterSceneActivated; public Action AfterHeroEnteredScene; public Vector2 tileMapVector = new Vector2(512f, 512f); public bool isSceneActive; public bool isPreloading; public bool isSkongScene = true; public bool isFastSuperJump; public static float customSuperJumpSpeed = 60f; public static float customWaitForSuperJump = 0.01f; public string sceneName { get; private set; } public CustomScene(string sceneName, bool isSkongScene = true, bool isFastSuperJump = false) { //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Unknown result type (might be due to invalid IL or missing references) this.sceneName = sceneName; this.isSkongScene = isSkongScene; this.isFastSuperJump = isFastSuperJump; } public void AddTransitionPoint(TransitionPointInfo TransitionPointInfo) { TransitionGates.Add(TransitionPointInfo); SceneTeleportMap.AddTransitionGate(sceneName, TransitionPointInfo.gateName); } public bool Remove(string entryPoint) { TransitionPointInfo item = TransitionGates.Find((TransitionPointInfo transitionPointInfo) => transitionPointInfo.entryPoint == entryPoint); if (TransitionGates.IndexOf(item) == -1) { return false; } TransitionGates.Remove(item); return true; } public IEnumerator PreloadScene() { isPreloading = true; yield return SceneManager.LoadSceneAsync(sceneName, (LoadSceneMode)1); Activate(GodsOfPharloomMod.lastLoadedScene.Value); } private void CreateGate(TransitionPointInfo item, Scene scene) { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Expected O, but got Unknown //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_005a: Unknown result type (might be due to invalid IL or missing references) //IL_0071: 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) GameObject val = new GameObject(item.gateName); BoxCollider2D val2 = val.AddComponent<BoxCollider2D>(); ((Collider2D)val2).isTrigger = true; val.transform.position = item.position; if (item.gateName.Contains("top") || item.gateName.Contains("bot")) { val2.size = new Vector2(4f, 1f); } else { val2.size = new Vector2(1f, 4f); } if (item.isOneTimeTransition) { ((Behaviour)val2).enabled = false; } CreateTransitionPoint(item, val, sceneName); SceneManager.MoveGameObjectToScene(val, scene); } public TransitionPoint CreateTransitionPoint(TransitionPointInfo item, GameObject go, string sceneName) { //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_003f: Expected O, but got Unknown //IL_004c: Unknown result type (might be due to invalid IL or missing references) //IL_0053: 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_00aa: Unknown result type (might be due to invalid IL or missing references) //IL_00b3: Expected O, but got Unknown //IL_0113: Unknown result type (might be due to invalid IL or missing references) //IL_011a: Expected O, but got Unknown //IL_0128: Unknown result type (might be due to invalid IL or missing references) //IL_012f: Expected O, but got Unknown //IL_019c: 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) //IL_01b1: Unknown result type (might be due to invalid IL or missing references) //IL_01ba: Expected O, but got Unknown //IL_02a5: Unknown result type (might be due to invalid IL or missing references) //IL_02c1: Unknown result type (might be due to invalid IL or missing references) //IL_02cb: Expected O, but got Unknown //IL_021d: Unknown result type (might be due to invalid IL or missing references) //IL_0227: Expected O, but got Unknown TransitionPoint val = go.AddComponent<TransitionPoint>(); PlayMakerFSM val2 = (val.customEntryFSM = go.AddComponent<PlayMakerFSM>()); ((Behaviour)val2).enabled = false; Fsm fsm = val2.Fsm; FsmState val3 = new FsmState(fsm); val3.Name = "Init"; FsmState val4 = new FsmState(fsm); val4.Name = "After Entry"; fsm.StartState = "Init"; PatchedFsm.CustomLogicFsm customLogicFsm = new PatchedFsm.CustomLogicFsm(fsm); customLogicFsm.action = delegate { //IL_002b: Unknown result type (might be due to invalid IL or missing references) if (item.forceMemoryZone) { GameManager.instance.ForceCurrentSceneIsMemory(true); } if (item.noInputOnStart) { HeroController.instance.hero_state = (ActorStates)7; } if (item.doSendEventAfterTransition) { PlayMakerFSM.BroadcastEvent(TransitionPointInfo.eventName); } item.afterTransition?.Invoke(); AfterHeroEnteredScene?.Invoke(); }; val3.Transitions = (FsmTransition[])(object)new FsmTransition[1] { new FsmTransition { FsmEvent = FsmEvent.GetFsmEvent("FINISH ENTRY"), ToFsmState = val4 } }; val4.Actions = (FsmStateAction[])(object)new FsmStateAction[1] { customLogicFsm }; fsm.States = (FsmState[])(object)new FsmState[2] { val3, val4 }; ((Behaviour)fsm.FsmComponent).enabled = true; PlayMakerFSM val5 = go.AddComponent<PlayMakerFSM>(); ((Behaviour)val5).enabled = false; Fsm fsm2 = val5.Fsm; fsm2.StartState = "Idle"; FsmState val6 = new FsmState(fsm2); val6.Name = "Idle"; FsmState val7 = new FsmState(fsm2); val7.Name = "After Death"; PatchedFsm.CustomLogicFsm customLogicFsm2 = new PatchedFsm.CustomLogicFsm(fsm2); customLogicFsm2.action = (Action<Fsm>)Delegate.Combine(customLogicFsm2.action, (Action<Fsm>)delegate { //IL_0014: 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) Color val8 = new Color(0f, 0f, 0f, 0f); Color val9 = default(Color); ((Color)(ref val9))..ctor(0f, 0f, 0f, 0f); ScreenFaderUtils.Fade(val8, val9, 0.01f); GameCameras.instance.HUDIn(); }); val7.Actions = (FsmStateAction[])(object)new FsmStateAction[1] { customLogicFsm2 }; val6.Transitions = (FsmTransition[])(object)new FsmTransition[1] { new FsmTransition { FsmEvent = FsmEvent.GetFsmEvent("HERO RESPAWNING HERE"), ToFsmState = val7 } }; fsm2.States = (FsmState[])(object)new FsmState[2] { val6, val7 }; ((Behaviour)val5).enabled = true; if (item.alwaysEnterRight) { val.alwaysEnterRight = true; val.alwaysEnterLeft = false; } else { val.alwaysEnterLeft = true; val.alwaysEnterRight = false; } if (item.doCreateRespawnMarker) { RespawnMarker obj = go.AddComponent<RespawnMarker>(); obj.overrideMapZone = new OverrideMapZone(); obj.customWakeUp = true; ((Component)val).gameObject.tag = "RespawnPoint"; AddRespawnMarkerToTeleportMap(sceneName, item.gateName); } val.respawnMarker = go.AddComponent<HazardRespawnMarker>(); val.targetScene = item.targetScene; val.dontWalkOutOfDoor = item.dontWalkOutOfDoor; val.hardLandOnExit = item.hardLandOnExit; val.entryPoint = item.entryPoint; ((InteractableBase)val).InteractLabel = item.InteractLabel; val.isADoor = item.isADoor; val.OnDoorEnter = new UnityEvent(); ((InteractableBase)val).Activate(); return val; } public static TransitionPoint CreateTransitionPoint(TransitionPointInfo item, string sceneName) { //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0013: Expected O, but got Unknown //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_0040: Expected O, but got Unknown //IL_004e: Unknown result type (might be due to invalid IL or missing references) //IL_0055: Expected O, but got Unknown //IL_0099: Unknown result type (might be due to invalid IL or missing references) //IL_009e: 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_00b7: Expected O, but got Unknown //IL_0119: Unknown result type (might be due to invalid IL or missing references) //IL_0120: Expected O, but got Unknown //IL_012e: Unknown result type (might be due to invalid IL or missing references) //IL_0135: Expected O, but got Unknown //IL_01a2: Unknown result type (might be due to invalid IL or missing references) //IL_01a7: Unknown result type (might be due to invalid IL or missing references) //IL_01b7: Unknown result type (might be due to invalid IL or missing references) //IL_01c0: Expected O, but got Unknown //IL_02ab: Unknown result type (might be due to invalid IL or missing references) //IL_02c7: Unknown result type (might be due to invalid IL or missing references) //IL_02d1: Expected O, but got Unknown //IL_0223: Unknown result type (might be due to invalid IL or missing references) //IL_022d: Expected O, but got Unknown GameObject val = new GameObject(); TransitionPoint val2 = val.AddComponent<TransitionPoint>(); PlayMakerFSM val3 = (val2.customEntryFSM = val.AddComponent<PlayMakerFSM>()); ((Behaviour)val3).enabled = false; Fsm fsm = val3.Fsm; FsmState val4 = new FsmState(fsm); val4.Name = "Init"; FsmState val5 = new FsmState(fsm); val5.Name = "After Entry"; fsm.StartState = "Init"; PatchedFsm.CustomLogicFsm customLogicFsm = new PatchedFsm.CustomLogicFsm(fsm); customLogicFsm.action = delegate { //IL_002b: Unknown result type (might be due to invalid IL or missing references) if (item.forceMemoryZone) { GameManager.instance.ForceCurrentSceneIsMemory(true); } if (item.noInputOnStart) { HeroController.instance.hero_state = (ActorStates)7; } if (item.doSendEventAfterTransition) { PlayMakerFSM.BroadcastEvent(TransitionPointInfo.eventName); } item.afterTransition?.Invoke(); }; val4.Transitions = (FsmTransition[])(object)new FsmTransition[1] { new FsmTransition { FsmEvent = FsmEvent.GetFsmEvent("FINISH ENTRY"), ToFsmState = val5 } }; val5.Actions = (FsmStateAction[])(object)new FsmStateAction[1] { customLogicFsm }; fsm.States = (FsmState[])(object)new FsmState[2] { val4, val5 }; ((Behaviour)fsm.FsmComponent).enabled = true; PlayMakerFSM val6 = val.AddComponent<PlayMakerFSM>(); ((Behaviour)val6).enabled = false; Fsm fsm2 = val6.Fsm; fsm2.StartState = "Idle"; FsmState val7 = new FsmState(fsm2); val7.Name = "Idle"; FsmState val8 = new FsmState(fsm2); val8.Name = "After Death"; PatchedFsm.CustomLogicFsm customLogicFsm2 = new PatchedFsm.CustomLogicFsm(fsm2); customLogicFsm2.action = (Action<Fsm>)Delegate.Combine(customLogicFsm2.action, (Action<Fsm>)delegate { //IL_0014: 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) Color val9 = new Color(0f, 0f, 0f, 0f); Color val10 = default(Color); ((Color)(ref val10))..ctor(0f, 0f, 0f, 0f); ScreenFaderUtils.Fade(val9, val10, 0.01f); GameCameras.instance.HUDIn(); }); val8.Actions = (FsmStateAction[])(object)new FsmStateAction[1] { customLogicFsm2 }; val7.Transitions = (FsmTransition[])(object)new FsmTransition[1] { new FsmTransition { FsmEvent = FsmEvent.GetFsmEvent("HERO RESPAWNING HERE"), ToFsmState = val8 } }; fsm2.States = (FsmState[])(object)new FsmState[2] { val7, val8 }; ((Behaviour)val6).enabled = true; if (item.alwaysEnterRight) { val2.alwaysEnterRight = true; val2.alwaysEnterLeft = false; } else { val2.alwaysEnterLeft = true; val2.alwaysEnterRight = false; } if (item.doCreateRespawnMarker) { RespawnMarker obj = val.AddComponent<RespawnMarker>(); obj.overrideMapZone = new OverrideMapZone(); obj.customWakeUp = true; ((Component)val2).gameObject.tag = "RespawnPoint"; AddRespawnMarkerToTeleportMap(sceneName, item.gateName); } val2.respawnMarker = val.AddComponent<HazardRespawnMarker>(); val2.targetScene = item.targetScene; val2.dontWalkOutOfDoor = item.dontWalkOutOfDoor; val2.hardLandOnExit = item.hardLandOnExit; val2.entryPoint = item.entryPoint; ((InteractableBase)val2).InteractLabel = item.InteractLabel; val2.isADoor = item.isADoor; val2.OnDoorEnter = new UnityEvent(); ((InteractableBase)val2).Activate(); return val2; } public static CameraLockArea CreateCameraLock(Scene scene) { //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Expected O, but got Unknown //IL_0011: 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) GameObject val = new GameObject("CameraLockArea"); SceneManager.MoveGameObjectToScene(val, scene); BoxCollider2D obj = val.AddComponent<BoxCollider2D>(); ((Collider2D)obj).isTrigger = true; obj.size = new Vector2(10f, 10f); return val.AddComponent<CameraLockArea>(); } public static void AddRespawnMarkerToTeleportMap(string sceneName, string respawnMarkerName) { //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Expected O, but got Unknown Dictionary<string, SceneInfo> teleportMap = SceneTeleportMap.GetTeleportMap(); if (!teleportMap.TryGetValue(sceneName, out var _)) { teleportMap.Add(sceneName, new SceneInfo()); } teleportMap.TryGetValue(sceneName, out var value2); value2.RespawnPoints.Add(respawnMarkerName); } public static void InitModRespawnMarkers() { AddRespawnMarkerToTeleportMap("GG_Pharloom_Atrium", "Death Respawn Marker"); AddRespawnMarkerToTeleportMap("GG_Pharloom_Atrium", "RestBench(Clone)"); AddRespawnMarkerToTeleportMap("GG_Pharloom_Hall_Of_Gods", "RestBench(Clone)"); AddRespawnMarkerToTeleportMap("Abyss_05", "Death Respawn Marker_Mod"); } public void Activate(Scene scene) { //IL_0054: 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_0085: 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_00b9: Unknown result type (might be due to invalid IL or missing references) //IL_00bf: Expected O, but got Unknown GameObject[] rootGameObjects = ((Scene)(ref scene)).GetRootGameObjects(); foreach (GameObject val in rootGameObjects) { if (((Object)val).name.StartsWith("CameraLock")) { val.AddComponent<CameraLockArea>(); val.GetComponent<BoxCollider2D>(); } } foreach (TransitionPointInfo transitionGate in TransitionGates) { CreateGate(transitionGate, scene); } if (!isSkongScene) { GameObject val2 = new GameObject("TileMap") { tag = "TileMap" }; tk2dTileMap obj = val2.AddComponent<tk2dTileMap>(); obj.width = (int)tileMapVector.x; obj.height = (int)tileMapVector.y; SceneManager.MoveGameObjectToScene(val2, scene); } isSceneActive = true; } } public class EnemyHp { public class PhaseHp { public Dictionary<string, int> hpDict = new Dictionary<string, int>(); public int hp => hpDict[BossSequence.currentDifficultMode]; public PhaseHp(int attuned, int ascended, int radiant) { hpDict["Attuned"] = attuned; hpDict["Ascended"] = ascended; hpDict["Radiant"] = radiant; } } public static Dictionary<string, EnemyHp> enemies = new Dictionary<string, EnemyHp> { { "Moss Mother", new EnemyHp(new PhaseHp[4] { new PhaseHp(100, 100, 100), new PhaseHp(100, 100, 100), new PhaseHp(150, 150, 150), new PhaseHp(100, 100, 100) }) }, { "Moss Mother Double 1", new EnemyHp(new PhaseHp[4] { new PhaseHp(100, 100, 100), new PhaseHp(150, 150, 150), new PhaseHp(200, 200, 200), new PhaseHp(100, 100, 100) }) }, { "Moss Mother Double 2", new EnemyHp(new PhaseHp[4] { new PhaseHp(100, 100, 100), new PhaseHp(150, 150, 150), new PhaseHp(200, 200, 200), new PhaseHp(100, 100, 100) }) }, { "Bell Beast", new EnemyHp(new PhaseHp[3] { new PhaseHp(200, 200, 200), new PhaseHp(250, 250, 250), new PhaseHp(150, 150, 150) }) }, { "Fourth Chorus", new EnemyHp(new PhaseHp[4] { new PhaseHp(250, 250, 250), new PhaseHp(250, 250, 250), new PhaseHp(250, 250, 250), new PhaseHp(250, 250, 250) }) }, { "Great Conchflies", new EnemyHp(new PhaseHp[2] { new PhaseHp(500, 500, 500), new PhaseHp(300, 300, 300) }) }, { "Lace in Deep Docks", new EnemyHp(new PhaseHp[2] { new PhaseHp(600, 600, 600), new PhaseHp(300, 300, 300) }) }, { "The Last Judge", new EnemyHp(new PhaseHp[3] { new PhaseHp(500, 500, 500), new PhaseHp(500, 500, 500), new PhaseHp(400, 400, 400) }) }, { "Phantom", new EnemyHp(new PhaseHp[3] { new PhaseHp(300, 300, 300), new PhaseHp(400, 400, 400), new PhaseHp(300, 300, 300) }) }, { "Moorwing", new EnemyHp(new PhaseHp[2] { new PhaseHp(500, 500, 500), new PhaseHp(300, 300, 300) }) }, { "Savage Beastfly in Chapel of The Beast", new EnemyHp(new PhaseHp[3] { new PhaseHp(500, 500, 500), new PhaseHp(350, 350, 350), new PhaseHp(250, 250, 250) }) }, { "Beastfly", new EnemyHp(new PhaseHp[1] { new PhaseHp(18, 18, 18) }) }, { "Kilik", new EnemyHp(new PhaseHp[1] { new PhaseHp(26, 26, 26) }) }, { "Vicious Caranid", new EnemyHp(new PhaseHp[1] { new PhaseHp(50, 50, 50) }) }, { "Sister Splinter", new EnemyHp(new PhaseHp[3] { new PhaseHp(200, 200, 200), new PhaseHp(400, 400, 400), new PhaseHp(200, 200, 200) }) }, { "Splinterbark", new EnemyHp(new PhaseHp[1] { new PhaseHp(18, 18, 18) }) }, { "Skull Tyrant", new EnemyHp(new PhaseHp[1] { new PhaseHp(800, 800, 800) }) }, { "Widow", new EnemyHp(new PhaseHp[3] { new PhaseHp(300, 300, 300), new PhaseHp(400, 400, 400), new PhaseHp(550, 550, 550) }) }, { "Cogwork Dancers", new EnemyHp(new PhaseHp[4] { new PhaseHp(450, 450, 450), new PhaseHp(450, 450, 450), new PhaseHp(450, 450, 450), new PhaseHp(150, 150, 150) }) }, { "Disgraced Chef Lugoli", new EnemyHp(new PhaseHp[2] { new PhaseHp(400, 400, 400), new PhaseHp(350, 350, 350) }) }, { "Father of the Flame", new EnemyHp(new PhaseHp[6] { new PhaseHp(100, 100, 100), new PhaseHp(100, 100, 100), new PhaseHp(100, 100, 100), new PhaseHp(100, 100, 100), new PhaseHp(200, 200, 200), new PhaseHp(250, 250, 250) }) }, { "First Sinner", new EnemyHp(new PhaseHp[3] { new PhaseHp(300, 300, 300), new PhaseHp(500, 500, 500), new PhaseHp(500, 500, 500) }) }, { "Forebrothers_Sigins", new EnemyHp(new PhaseHp[4] { new PhaseHp(100, 100, 100), new PhaseHp(300, 300, 300), new PhaseHp(300, 300, 300), new PhaseHp(300, 300, 300) }) }, { "Forebrothers_Gron", new EnemyHp(new PhaseHp[1] { new PhaseHp(650, 650, 650) }) }, { "Flintstone Flyer", new EnemyHp(new PhaseHp[1] { new PhaseHp(36, 36, 36) }) }, { "Smokerock Sifter", new EnemyHp(new PhaseHp[1] { new PhaseHp(47, 47, 47) }) }, { "Garmond & Zaza", new EnemyHp(new PhaseHp[1] { new PhaseHp(500, 500, 500) }) }, { "Voltvyrm", new EnemyHp(new PhaseHp[3] { new PhaseHp(300, 300, 300), new PhaseHp(200, 200, 200), new PhaseHp(200, 200, 200) }) }, { "Groal the Great", new EnemyHp(new PhaseHp[2] { new PhaseHp(450, 450, 450), new PhaseHp(350, 350, 350) }) }, { "Lace in the Cradle", new EnemyHp(new PhaseHp[3] { new PhaseHp(500, 500, 500), new PhaseHp(400, 400, 400), new PhaseHp(200, 200, 200) }) }, { "Raging Conchfly", new EnemyHp(new PhaseHp[2] { new PhaseHp(700, 700, 700), new PhaseHp(400, 400, 400) }) }, { "Savage Beastfly in Far Fields", new EnemyHp(new PhaseHp[3] { new PhaseHp(500, 500, 500), new PhaseHp(500, 500, 500), new PhaseHp(300, 300, 300) }) }, { "Tarmite", new EnemyHp(new PhaseHp[1] { new PhaseHp(34, 34, 34) }) }, { "Second Sentiel", new EnemyHp(new PhaseHp[2] { new PhaseHp(700, 700, 700), new PhaseHp(600, 600, 600) }) }, { "Shakra", new EnemyHp(new PhaseHp[1] { new PhaseHp(700, 700, 700) }) }, { "The Unravelled", new EnemyHp(new PhaseHp[3] { new PhaseHp(400, 400, 400), new PhaseHp(400, 400, 400), new PhaseHp(200, 200, 200) }) }, { "Trobbio", new EnemyHp(new PhaseHp[2] { new PhaseHp(700, 700, 700), new PhaseHp(500, 500, 500) }) }, { "Palestag", new EnemyHp(new PhaseHp[2] { new PhaseHp(250, 250, 250), new PhaseHp(250, 250, 250) }) }, { "Bell Eater", new EnemyHp(new PhaseHp[4] { new PhaseHp(400, 400, 400), new PhaseHp(400, 400, 400), new PhaseHp(300, 300, 300), new PhaseHp(200, 200, 200) }) }, { "Crawfather", new EnemyHp(new PhaseHp[2] { new PhaseHp(900, 900, 900), new PhaseHp(700, 700, 700) }) }, { "Pin Wielder Craw", new EnemyHp(new PhaseHp[1] { new PhaseHp(66, 66, 66) }) }, { "Dagger Craw", new EnemyHp(new PhaseHp[1] { new PhaseHp(66, 66, 66) }) }, { "Tinie Craw", new EnemyHp(new PhaseHp[1] { new PhaseHp(55, 55, 55) }) }, { "Crust King Khann", new EnemyHp(new PhaseHp[3] { new PhaseHp(600, 600, 600), new PhaseHp(600, 600, 600), new PhaseHp(450, 450, 450) }) }, { "Gurr the Outcast", new EnemyHp(new PhaseHp[3] { new PhaseHp(400, 400, 400), new PhaseHp(350, 350, 350), new PhaseHp(250, 250, 250) }) }, { "Lost Garmond", new EnemyHp(new PhaseHp[1] { new PhaseHp(900, 900, 900) }) }, { "Nyleth", new EnemyHp(new PhaseHp[2] { new PhaseHp(625, 625, 625), new PhaseHp(625, 625, 625) }) }, { "Watcher at the Edge", new EnemyHp(new PhaseHp[2] { new PhaseHp(450, 450, 450), new PhaseHp(450, 450, 450) }) }, { "Pinstress", new EnemyHp(new PhaseHp[2] { new PhaseHp(500, 500, 500), new PhaseHp(500, 500, 500) }) }, { "Plasmified Zango", new EnemyHp(new PhaseHp[5] { new PhaseHp(200, 200, 200), new PhaseHp(200, 200, 200), new PhaseHp(200, 200, 200), new PhaseHp(200, 200, 200), new PhaseHp(200, 200, 200) }) }, { "Shrine Guardian Seth", new EnemyHp(new PhaseHp[3] { new PhaseHp(200, 200, 200), new PhaseHp(550, 550, 550), new PhaseHp(500, 500, 500) }) }, { "Skarrsinger Karmelita", new EnemyHp(new PhaseHp[3] { new PhaseHp(600, 600, 600), new PhaseHp(600, 600, 600), new PhaseHp(400, 400, 400) }) }, { "Clover Dancers", new EnemyHp(new PhaseHp[2] { new PhaseHp(600, 600, 600), new PhaseHp(600, 600, 600) }) }, { "Tormented Trobbio", new EnemyHp(new PhaseHp[3] { new PhaseHp(150, 150, 150), new PhaseHp(800, 800, 800), new PhaseHp(550, 550, 550) }) }, { "Grand Mother Silk", new EnemyHp(new PhaseHp[6] { new PhaseHp(150, 150, 150), new PhaseHp(250, 250, 250), new PhaseHp(300, 300, 300), new PhaseHp(200, 200, 200), new PhaseHp(300, 300, 300), new PhaseHp(400, 400, 400) }) }, { "Lost Lace", new EnemyHp(new PhaseHp[4] { new PhaseHp(400, 400, 400), new PhaseHp(500, 500, 500), new PhaseHp(700, 700, 700), new PhaseHp(600, 600, 600) }) } }; public Dictionary<string, int> hpFullDict = new Dictionary<string, int> { { "Attuned", 0 }, { "Ascended", 0 }, { "Radiant", 0 } }; public PhaseHp[] phases; public EnemyHp(PhaseHp[] phases) { this.phases = phases; foreach (PhaseHp phaseHp in phases) { hpFullDict["Attuned"] += phaseHp.hpDict["Attuned"]; hpFullDict["Ascended"] += phaseHp.hpDict["Ascended"]; hpFullDict["Radiant"] += phaseHp.hpDict["Radiant"]; } } } public class TransitionPointInfo { public string gateName; public Vector3 position; public string targetScene; public string entryPoint; public PromptLabels InteractLabel; public bool isADoor; public bool isOneTimeTransition; public bool dontWalkOutOfDoor; public bool hardLandOnExit; public bool noInputOnStart; public bool alwaysEnterRight; public bool forceMemoryZone; public Action afterTransition; public bool doSendEventAfterTransition; public bool doCreateRespawnMarker; public static string eventName = "HORNET TRANSITION DONE MOD"; public TransitionPointInfo(string gateName, Vector3 position, string targetScene, string entryPoint, PromptLabels InteractLabel = (PromptLabels)3, bool isADoor = false, bool isOneTimeTransition = false, bool dontWalkOutOfDoor = false, bool hardLandOnExit = false, bool noInputOnStart = false, bool alwaysEnterRight = true, bool forceMemoryZone = true, Action afterTransition = null, bool doSendEventAfterTransition = true, bool doCreateRespawnMarker = true, bool doCreateHazardRespawnMarker = true) { //IL_000e: 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_0024: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Unknown result type (might be due to invalid IL or missing references) this.gateName = gateName; this.position = position; this.targetScene = targetScene; this.entryPoint = entryPoint; this.InteractLabel = InteractLabel; this.isADoor = isADoor; this.isOneTimeTransition = isOneTimeTransition; this.dontWalkOutOfDoor = dontWalkOutOfDoor; this.hardLandOnExit = hardLandOnExit; this.noInputOnStart = noInputOnStart; this.alwaysEnterRight = alwaysEnterRight; this.forceMemoryZone = forceMemoryZone; this.afterTransition = afterTransition; this.doSendEventAfterTransition = doSendEventAfterTransition; this.doCreateRespawnMarker = doCreateRespawnMarker; } } namespace Gods_Of_Pharloom; public class ActiveCameraLockOnEnter : MonoBehaviour { private void OnTriggerEnter2D(Collider2D collider) { BoxCollider2D component = ((Component)HeroController.instance).gameObject.GetComponent<BoxCollider2D>(); if ((Object)(object)collider == (Object)(object)component) { _ = GameCameras.instance.cameraController; ((Behaviour)((Component)this).GetComponent<CameraLockArea>()).enabled = true; } } private void OnTriggerStay2D(Collider2D collider) { BoxCollider2D component = ((Component)HeroController.instance).gameObject.GetComponent<BoxCollider2D>(); if ((Object)(object)collider == (Object)(object)component) { _ = GameCameras.instance.cameraController; ((Behaviour)((Component)this).GetComponent<CameraLockArea>()).enabled = true; } } private void OnTriggerExit2D(Collider2D collider) { BoxCollider2D component = ((Component)HeroController.instance).gameObject.GetComponent<BoxCollider2D>(); if ((Object)(object)collider == (Object)(object)component) { _ = GameCameras.instance.cameraController; ((Behaviour)((Component)this).GetComponent<CameraLockArea>()).enabled = false; } } } [BepInPlugin("bepinex.plugin.test", "GodsOfPharloom", "0.0.1.3")] public class GodsOfPharloomMod : BaseUnityPlugin { public static Action<Scene, Scene> afterSceneLoadedGetScenes; public static Action afterSceneLoaded; public static Action afterSceneActivated; public static string previousSceneName; public static Scene? lastLoadedScene = null; public static MethodInfo RecordBeginTime = AccessTools.Method(typeof(SceneLoad), "RecordBeginTime", (Type[])null, (Type[])null); public static MethodInfo RecordEndTime = AccessTools.Method(typeof(SceneLoad), "RecordEndTime", (Type[])null, (Type[])null); public static MethodInfo LocalTryClearMemory = AccessTools.Method(typeof(SceneLoad), "LocalTryClearMemory", (Type[])null, (Type[])null); public static GodsOfPharloomMod instance; public static string currentSceneName; public static Scene currentScene; private string pathToModData = Paths.ConfigPath + "/GodsOfPharloomData.dat"; public static object obj; private static string[] assetBundleNames = new string[4] { "gg_pharloom_atrium", "gg_pharloom_hall_of_gods", "gg_rest_scene", "gg_resources" }; public static List<AssetBundle> assetBundles = new List<AssetBundle>(); public static List<CustomScene> customScenes = new List<CustomScene>(); public static ManualLogSource Log; public static MethodInfo HeroController_SetState = AccessTools.Method(typeof(HeroController), "SetState", (Type[])null, (Type[])null); [HarmonyPrefix] [HarmonyPatch(typeof(SceneLoad), "Begin")] private static bool Prefix(SceneLoad __instance) { //IL_0023: Unknown result type (might be due to invalid IL or missing references) currentSceneName = __instance.TargetSceneName; ((MonoBehaviour)((object)__instance).GetType().GetField("runner", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic).GetValue(__instance)).StartCoroutine(BeginRoutine_Patched(__instance)); return false; } private static IEnumerator BeginRoutine_Patched(SceneLoad __instance) { Log.LogInfo((object)"PAAAAAAAAATTTTTCCCCHHHEEEDDD"); FieldInfo operationHandle = ((object)__instance).GetType().GetField("operationHandle", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); FieldInfo _tempOps = typeof(SceneLoad).GetField("_tempOps", BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic); FieldInfo runner = ((object)__instance).GetType().GetField("runner", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); Log.LogInfo((object)"PAAAAAAAAATTTTTCCCCHHHEEEDDD2"); Func<MethodInfo, object[], object> InvokeMethod = (MethodInfo method, object[] obj) => method.Invoke(__instance, obj); string address = "Scenes/" + __instance.SceneLoadInfo.SceneName; CustomScene scene = customScenes.Find((CustomScene item) => item.sceneName == __instance.TargetSceneName); int sceneTypeTo = ((scene != null) ? (scene.isSkongScene ? 1 : 2) : 0); scene?.BeforeSceneLoaded?.Invoke(); bool wasPreloaded = false; AsyncOperationHandle<SceneInstance>? preLoadOperation = null; SceneAdditiveLoadConditional.LoadInSequence = true; AsyncOperation op = null; lastLoadedScene = null; if (sceneTypeTo == 0 || sceneTypeTo == 1) { preLoadOperation = ScenePreloader.TakeSceneLoadOperation(address, (LoadSceneMode)1); wasPreloaded = preLoadOperation.HasValue; } else { op = SceneManager.LoadSceneAsync(scene.sceneName, (LoadSceneMode)1); op.allowSceneActivation = false; } InvokeMethod(RecordBeginTime, new object[1] { (object)(Phases)0 }); while (!__instance.IsFetchAllowed) { yield return null; } Log.LogInfo((object)"PAAAAAAAAATTTTTCCCCHHHEEEDDD3"); InvokeMethod(RecordEndTime, new object[1] { (object)(Phases)0 }); bool hasClearedMemory = false; if (SceneLoad.IsClearMemoryRequired()) { GameManager.IsCollectingGarbage = true; InvokeMethod(RecordBeginTime, new object[1] { (object)(Phases)1 }); yield return InvokeMethod(LocalTryClearMemory, new object[2] { true, false }); hasClearedMemory = true; InvokeMethod(RecordEndTime, new object[1] { (object)(Phases)1 }); } InvokeMethod(RecordBeginTime, new object[1] { (object)(Phases)2 }); int num = __instance.SceneLoadInfo.AsyncPriority; Scene activeScene = SceneManager.GetActiveScene(); previousSceneName = ((Scene)(ref activeScene)).name; if (sceneTypeTo == 0 || sceneTypeTo == 1) { if (CheatManager.OverrideSceneLoadPriority) { num = CheatManager.SceneLoadPriority; } if (wasPreloaded) { operationHandle.SetValue(__instance, preLoadOperation.Value); } else if (__instance.SceneLoadInfo.SceneResourceLocation != null) { operationHandle.SetValue(__instance, Addressables.LoadSceneAsync(__instance.SceneLoadInfo.SceneResourceLocation, (LoadSceneMode)1, false, num)); } else { operationHandle.SetValue(__instance, Addressables.LoadSceneAsync((object)address, (LoadSceneMode)1, false, num, (SceneReleaseMode)0)); } yield return (AsyncOperationHandle<SceneInstance>)operationHandle.GetValue(__instance); } if (__instance.TargetSceneName != "Opening_Sequence") { while (!Preload.isInitialized) { yield return null; } } SceneInstance result; if (sceneTypeTo == 1 || sceneTypeTo == 2) { if (sceneTypeTo == 2) { op.allowSceneActivation = true; yield return op; currentScene = SceneManager.GetSceneAt(SceneManager.sceneCount - 1); } else { result = ((AsyncOperationHandle<SceneInstance>)operationHandle.GetValue(__instance)).Result; currentScene = ((SceneInstance)(ref result)).Scene; } scene.Activate(currentScene); scene.AfterSceneLoaded?.Invoke(currentScene); while (!scene.isSceneActive) { yield return null; } scene.isSceneActive = false; scene.isPreloading = false; Log.LogInfo((object)"Activated2"); } afterSceneLoaded?.Invoke(); Log.LogInfo((object)"Activated3"); InvokeMethod(RecordEndTime, new object[1] { (object)(Phases)2 }); Log.LogInfo((object)"PAAAAAAAAATTTTTCCCCHHHEEEDD4"); FetchCompleteDelegate val = (FetchCompleteDelegate)AccessTools.Field(typeof(SceneLoad), "FetchComplete").GetValue(__instance); if (val != null) { try { val.Invoke(); } catch (Exception ex) { Debug.LogError((object)"Exception in responders to SceneLoad.FetchComplete. Attempting to continue load regardless."); CheatManager.LastErrorText = ex.ToString(); Debug.LogException(ex); } } Log.LogInfo((object)"PAAAAAAAAATTTTTCCCCHHHEEEDDD4.1"); InvokeMethod(RecordBeginTime, new object[1] { (object)(Phases)3 }); if (!wasPreloaded && ScenePreloader.HasPendingOperations) { yield return ((MonoBehaviour)runner.GetValue(__instance)).StartCoroutine(ScenePreloader.ForceEndPendingOperations()); } while (!__instance.IsActivationAllowed) { yield return null; } Log.LogInfo((object)"PAAAAAAAAATTTTTCCCCHHHEEEDDD4.1.1"); SceneAdditiveLoadConditional.Unload(SceneManager.GetActiveScene(), (List<AsyncOperationHandle<SceneInstance>>)_tempOps.GetValue(null)); Log.LogInfo((object)"PAAAAAAAAATTTTTCCCCHHHEEEDDD4.1.2"); InvokeMethod(RecordEndTime, new object[1] { (object)(Phases)3 }); InvokeMethod(RecordBeginTime, new object[1] { (object)(Phases)4 }); Log.LogInfo((object)"PAAAAAAAAATTTTTCCCCHHHEEEDDD4.2"); WillActivateDelegate val2 = (WillActivateDelegate)AccessTools.Field(typeof(SceneLoad), "WillActivate").GetValue(__instance); if (val2 != null) { try { val2.Invoke(); } catch (Exception ex2) { Debug.LogError((object)"Exception in responders to SceneLoad.WillActivate. Attempting to continue load regardless."); CheatManager.LastErrorText = ex2.ToString(); Debug.LogException(ex2); } } Log.LogInfo((object)"PAAAAAAAAATTTTTCCCCHHHEEEDDD5"); if (sceneTypeTo == 0 || sceneTypeTo == 1) { if (((AsyncOperationHandle<SceneInstance>)operationHandle.GetValue(__instance)).OperationException != null) { Debug.LogError((object)"Exception in scene load OperationHandle:"); CheatManager.LastErrorText = ((AsyncOperationHandle<SceneInstance>)operationHandle.GetValue(__instance)).OperationException.ToString(); Debug.LogException(((AsyncOperationHandle<SceneInstance>)operationHandle.GetValue(__instance)).OperationException); } result = ((AsyncOperationHandle<SceneInstance>)operationHandle.GetValue(__instance)).Result; yield return ((SceneInstance)(ref result)).ActivateAsync(); } if (sceneTypeTo == 1 || sceneTypeTo == 2) { scene.AfterSceneActivated?.Invoke(currentScene); } afterSceneActivated?.Invoke(); InvokeMethod(RecordEndTime, new object[1] { (object)(Phases)4 }); ActivationCompleteDelegate val3 = (ActivationCompleteDelegate)AccessTools.Field(typeof(SceneLoad), "ActivationComplete").GetValue(__instance); if (val3 != null) { try { val3.Invoke(); } catch (Exception ex3) { Debug.LogError((object)"Exception in responders to SceneLoad.ActivationComplete. Attempting to continue load regardless."); CheatManager.LastErrorText = ex3.ToString(); Debug.LogException(ex3); } } Log.LogInfo((object)"PAAAAAAAAATTTTTCCCCHHHEEEDDD6"); foreach (AsyncOperationHandle<SceneInstance> item in (List<AsyncOperationHandle<SceneInstance>>)_tempOps.GetValue(null)) { yield return item; } ((List<AsyncOperationHandle<SceneInstance>>)_tempOps.GetValue(null)).Clear(); List<AsyncOperation> _assetUnloadOps = (List<AsyncOperation>)((object)__instance).GetType().GetField("_assetUnloadOps", BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic).GetValue(__instance); Log.LogInfo((object)"PAAAAAAAAATTTTTCCCCHHHEEEDDD7"); while (_assetUnloadOps.Count > 0) { int index = _assetUnloadOps.Count - 1; AsyncOperation assetUnloadOp = _assetUnloadOps[index]; _assetUnloadOps.RemoveAt(index); if (assetUnloadOp != null && !assetUnloadOp.isDone) { float t = 5f; while (!assetUnloadOp.isDone && t > 0f) { t -= Time.deltaTime; yield return null; } if (!assetUnloadOp.isDone) { Debug.LogError((object)"Timed out while waiting for asset unload."); } } } Log.LogInfo((object)"PAAAAAAAAATTTTTCCCCHHHEEEDDD7.1"); if (__instance.IsUnloadAssetsRequired || SceneLoad.IsClearMemoryRequired()) { GameManager.IsCollectingGarbage = true; InvokeMethod(RecordBeginTime, new object[1] { (object)(Phases)5 }); yield return SceneLoad.TryClearMemory(!hasClearedMemory, true); InvokeMethod(RecordEndTime, new object[1] { (object)(Phases)5 }); } else if (__instance.IsGarbageCollectRequired) { GameManager.IsCollectingGarbage = true; InvokeMethod(RecordBeginTime, new object[1] { (object)(Phases)6 }); GCManager.Collect(); InvokeMethod(RecordEndTime, new object[1] { (object)(Phases)6 }); } GameManager.IsCollectingGarbage = false; CompleteDelegate val4 = (CompleteDelegate)AccessTools.Field(typeof(SceneLoad), "Complete").GetValue(__instance); if (val4 != null) { try { val4.Invoke(); } catch (Exception ex4) { Debug.LogError((object)"Exception in responders to SceneLoad.Complete. Attempting to continue load regardless."); CheatManager.LastErrorText = ex4.ToString(); Debug.LogException(ex4); } } Log.LogInfo((object)"PAAAAAAAAATTTTTCCCCHHHEEEDDD8"); InvokeMethod(RecordBeginTime, new object[1] { (object)(Phases)7 }); yield return null; InvokeMethod(RecordEndTime, new object[1] { (object)(Phases)7 }); StartCalledDelegate val5 = (StartCalledDelegate)AccessTools.Field(typeof(SceneLoad), "StartCalled").GetValue(__instance); if (val5 != null) { try { val5.Invoke(); } catch (Exception ex5) { Debug.LogError((object)"Exception in responders to SceneLoad.StartCalled. Attempting to continue load regardless."); CheatManager.LastErrorText = ex5.ToString(); Debug.LogException(ex5); } } if (SceneAdditiveLoadConditional.ShouldLoadBoss) { InvokeMethod(RecordBeginTime, new object[1] { (object)(Phases)8 }); yield return ((MonoBehaviour)runner.GetValue(__instance)).StartCoroutine(SceneAdditiveLoadConditional.LoadAll()); InvokeMethod(RecordEndTime, new object[1] { (object)(Phases)8 }); try { BossLoadCompleteDelegate val6 = (BossLoadCompleteDelegate)AccessTools.Field(typeof(SceneLoad), "BossLoaded").GetValue(__instance); if (val6 != null) { val6.Invoke(); } if (Object.op_Implicit((Object)(object)GameManager.instance)) { GameManager.instance.LoadedBoss(); } } catch (Exception ex6) { Debug.LogError((object)"Exception in responders to SceneLoad.BossLoaded. Attempting to continue load regardless."); CheatManager.LastErrorText = ex6.ToString(); Debug.LogException(ex6); } } Log.LogInfo((object)"PAAAAAAAAATTTTTCCCCHHHEEEDDD9"); try { ScenePreloader.Cleanup(); } catch (Exception ex7) { Debug.LogError((object)"Exception in responders to ScenePreloader.Cleanup. Attempting to continue load regardless."); CheatManager.LastErrorText = ex7.ToString(); Debug.LogException(ex7); } ((object)__instance).GetType().GetProperty("IsFinished", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic).SetValue(__instance, true); FinishDelegate val7 = (FinishDelegate)AccessTools.Field(typeof(SceneLoad), "Finish").GetValue(__instance); Log.LogInfo((object)"PAAAAAAAAATTTTTCCCCHHHEEEDDD10"); if (val7 != null) { try { val7.Invoke(); } catch (Exception ex8) { Debug.LogError((object)"Exception in responders to SceneLoad.Finish. Attempting to continue load regardless."); CheatManager.LastErrorText = ex8.ToString(); Debug.LogException(ex8); } } } [HarmonyPostfix] [HarmonyPatch(typeof(PlayMakerFSM), "Awake")] private static void PlayMakerPatch_Postfix(PlayMakerFSM __instance) { //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_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) GameObject gameObject = ((Component)__instance).gameObject; int hashCode = ((Object)gameObject.gameObject).name.GetHashCode(); int hashCode2 = __instance.FsmName.GetHashCode(); Scene scene = gameObject.scene; int hashCode3 = ((Scene)(ref scene)).name.GetHashCode(); ManualLogSource log = Log; string[] obj = new string[5] { ((Object)((Component)__instance).gameObject).name, " ", __instance.FsmName, " ", null }; scene = ((Component)__instance).gameObject.scene; obj[4] = ((Scene)(ref scene)).name; log.LogInfo((object)string.Concat(obj)); int i; for (i = 0; i < PatchedFsm.patchedFsms.Length && hashCode3 != PatchedFsm.patchedFsms[i].sceneNameHash; i++) { if (i == PatchedFsm.patchedFsms.Length - 1) { return; } } PatchedFsm.FsmPatch[] fsms = PatchedFsm.patchedFsms[i].fsms; foreach (PatchedFsm.FsmPatch fsmPatch in fsms) { if (hashCode == fsmPatch.objNameHash && hashCode2 == fsmPatch.fsmNameHash) { Log.LogInfo((object)(__instance.FsmName + "YAAAAAAAAAAAAAAAAAY")); fsmPatch.method(__instance.Fsm); break; } } } [HarmonyPrefix] [HarmonyPatch(typeof(SceneParticlesController), "OnPositionedAtHero")] private static bool Prefix(SceneParticlesController __instance) { if (customScenes.Find(delegate(CustomScene item) { //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) string sceneName = item.sceneName; Scene activeScene = SceneManager.GetActiveScene(); return sceneName == ((Scene)(ref activeScene)).name; }) == null) { return true; } Log.LogInfo((object)"cleared OnPositionedAtHero"); return false; } [HarmonyPrefix] [HarmonyPatch(typeof(GameManager), "PlayerDead")] public static bool PlayerDead_Prefix(ref float waitTime) { if (!BossSequence.isInSequence) { return true; } waitTime = 0f; return true; } [HarmonyPrefix] [HarmonyPatch(typeof(ScenePreloader), "SpawnPreloader")] public static bool ScenePreloader_Prefix(string sceneName, LoadSceneMode mode) { if (BossSequence.isInSequence) { return false; } return true; } [HarmonyPostfix] [HarmonyPatch(typeof(HeroController), "Awake")] public static void HeroControllerAwake_Postfix() { if (!Preload.isInitialized) { Preload.Init(); } } [HarmonyPrefix] [HarmonyPatch(typeof(HeroController), "ResetAllCrestState", new Type[] { })] public static bool HeroControllerResetAllCrestState_Prefix() { Log.LogInfo((object)"ResetAllCrestState"); if (BossSequence.isInSequence && !PlayerData.instance.atBench) { return false; } Log.LogInfo((object)"DoResetAllCrestState"); return true; } [HarmonyPrefix] [HarmonyPatch(typeof(HeroController), "ClearEffects")] public static bool HeroControllerClearEffects_Prefix() { Log.LogInfo((object)"ClearEffects"); if (BossSequence.isInSequence && !PlayerData.instance.atBench) { return false; } Log.LogInfo((object)"DoClearEffects"); return true; } [HarmonyPrefix] [HarmonyPatch(typeof(HeroController), "ClearEffectsInstant")] public static bool HeroControllerClearEffectsInstant_Prefix() { Log.LogInfo((object)"ClearEffectsInstant"); if (BossSequence.isInSequence && !PlayerData.instance.atBench) { return false; } Log.LogInfo((object)"DoClearEffectsInstant"); return true; } [HarmonyPrefix] [HarmonyPatch(typeof(HeroController), "ClearEffectsLite")] public static bool HeroControllerClearEffectsLite_Prefix() { Log.LogInfo((object)"ClearEffectsLite"); if (BossSequence.isInSequence && !PlayerData.instance.atBench) { return false; } Log.LogInfo((object)"DoClearEffectsLite"); return true; } [HarmonyPrefix] [HarmonyPatch(typeof(HeroController), "MaxHealth")] public static bool HeroControllerMaxHealth_Prefix() { Log.LogInfo((object)"MaxHealth"); if (BossSequence.isInSequence && !PlayerData.instance.atBench) { return false; } Log.LogInfo((object)"DoMaxHealth"); return true; } [HarmonyPrefix] [HarmonyPatch(typeof(HeroController), "RefillHealthToMax")] public static bool HeroControllerRefillHealthToMax_Prefix() { Log.LogInfo((object)"RefillHealthToMax"); if (BossSequence.isInSequence && !PlayerData.instance.atBench) { return false; } Log.LogInfo((object)"DoRefillHealthToMax"); return true; } [HarmonyPrefix] [HarmonyPatch(typeof(PlayerData), "MaxHealth")] public static bool PlayerDataMaxHealth_Prefix() { Log.LogInfo((object)"MaxHealth"); if (BossSequence.isInSequence && !PlayerData.instance.atBench) { return false; } Log.LogInfo((object)"DoMaxHealth"); return true; } [HarmonyPrefix] [HarmonyPatch(typeof(HealthManager), "ApplyDamageScaling")] public static bool HealthManagerApplyDamageScaling_Prefix(HealthManager __instance, HitInstance hitInstance, ref HitInstance __result) { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0009: Unknown result type (might be due to invalid IL or missing references) if (BossSequence.isInSequence) { __result = hitInstance; return false; } return true; } [HarmonyPostfix] [HarmonyPatch(typeof(PlayerData), "get_nailDamage")] public static void PlayerDataNailDamage_Postfix(ref int __result) { if (PlayerDataMod.instance.bindings["Needle Binding"]) { int num = __result; if (num > 13) { num = 13; __result = num; } else { num = ((num > 9 && num < 14) ? 10 : ((num > 5 && num < 10) ? 7 : ((num <= 3 || num >= 6) ? 1 : 4))); __result = num; } } } [HarmonyPrefix] [HarmonyPatch(typeof(PlayerData), "TakeHealth")] private static bool TakeDamagePatch_Prefix(PlayerData __instance, ref int amount, ref bool hasBlueHealth, ref bool allowFracturedMaskBreak) { //IL_0068: Unknown result type (might be due to invalid IL or missing references) if (!BossSequence.isInSequence) { return true; } BossSequence.hitCounter++; if (BossSequence.currentDifficultMode == "Ascended") { amount *= 2; return true; } if (BossSequence.currentDifficultMode == "Radiant") { amount = int.MaxValue; return true; } ToolItem fracturedMaskTool = Gameplay.FracturedMaskTool; if ((amount >= __instance.health + __instance.healthBlue && !((ToolBase)fracturedMaskTool).IsEquipped) || fracturedMaskTool.SavedData.AmountLeft < 1) { BossSequence.isHeroDead = true; Log.LogInfo((object)"HERO DEAD YOOOOO"); } return true; } [HarmonyPrefix] [HarmonyPatch(typeof(SceneAdditiveLoadConditional), "OnEnable")] private static bool SceneAdditiveLoadPatch_Prefix(SceneAdditiveLoadConditional __instance) { //IL_00d7: Unknown result type (might be due to invalid IL or missing references) //IL_00de: Expected O, but got Unknown //IL_01c4: Unknown result type (might be due to invalid IL or missing references) //IL_01cb: Expected O, but got Unknown //IL_02ef: Unknown result type (might be due to invalid IL or missing references) //IL_02f6: Expected O, but got Unknown //IL_0445: Unknown result type (might be due to invalid IL or missing references) //IL_044c: Expected O, but got Unknown //IL_05d9: Unknown result type (might be due to invalid IL or missing references) //IL_05e0: Expected O, but got Unknown //IL_0682: Unknown result type (might be due to invalid IL or missing references) //IL_0689: Expected O, but got Unknown //IL_0749: Unknown result type (might be due to invalid IL or missing references) //IL_0750: Expected O, but got Unknown //IL_07e5: Unknown result type (might be due to invalid IL or missing references) //IL_07ec: Expected O, but got Unknown if ((BossSequence.isInSequence && ((Object)((Component)__instance).gameObject).name.Contains("Bellway Additive Loader")) || ((Object)((Component)__instance).gameObject).name.Contains("Bell Centipede Loader")) { Object.Destroy((Object)(object)((Component)__instance).gameObject); return false; } if (BossSequence.isInSequence && ((Object)((Component)__instance).gameObject).name.Contains("Boss Loader")) { FieldInfo? field = ((object)__instance).GetType().GetField("questTests", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); FieldInfo field2 = ((object)__instance).GetType().GetField("tests", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); FieldInfo field3 = ((object)__instance).GetType().GetField("doorBlackList", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); FieldInfo field4 = ((object)__instance).GetType().GetField("otherLoaderBlacklist", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); FieldInfo field5 = ((object)__instance).GetType().GetField("loadAlt", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); ((object)__instance).GetType().GetField("_additiveSceneLoads", BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic); PlayerDataTest value = new PlayerDataTest(); field.SetValue(__instance, new QuestTest[0]); field2.SetValue(__instance, value); field3.SetValue(__instance, new string[0]); field4.SetValue(__instance, new SceneAdditiveLoadConditional[0]); field5.SetValue(__instance, false); return true; } if (BossSequence.currentSequenceScene == BossScene.bosses["Fourth Chorus"] && ((Object)((Component)__instance).gameObject).name.Contains("Boss Golem Loader")) { FieldInfo? field6 = ((object)__instance).GetType().GetField("questTests", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); FieldInfo field7 = ((object)__instance).GetType().GetField("tests", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); FieldInfo field8 = ((object)__instance).GetType().GetField("doorBlackList", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); FieldInfo field9 = ((object)__instance).GetType().GetField("otherLoaderBlacklist", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); FieldInfo field10 = ((object)__instance).GetType().GetField("loadAlt", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); ((object)__instance).GetType().GetField("_additiveSceneLoads", BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic); PlayerDataTest value2 = new PlayerDataTest(); field6.SetValue(__instance, new QuestTest[0]); field7.SetValue(__instance, value2); field8.SetValue(__instance, new string[0]); field9.SetValue(__instance, new SceneAdditiveLoadConditional[0]); field10.SetValue(__instance, false); return true; } if (BossSequence.currentSequenceScene == BossScene.bosses["Fourth Chorus"] && ((Object)((Component)__instance).gameObject).name.Contains("Boss Beastfly Loader")) { Object.Destroy((Object)(object)((Component)__instance).gameObject); return false; } if (BossSequence.currentSequenceScene == BossScene.bosses["Savage Beastfly in Far Fields"] && ((Object)((Component)__instance).gameObject).name.Contains("Boss Beastfly Loader")) { FieldInfo? field11 = ((object)__instance).GetType().GetField("questTests", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); FieldInfo field12 = ((object)__instance).GetType().GetField("tests", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); FieldInfo field13 = ((object)__instance).GetType().GetField("doorBlackList", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); FieldInfo field14 = ((object)__instance).GetType().GetField("otherLoaderBlacklist", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); FieldInfo field15 = ((object)__instance).GetType().GetField("loadAlt", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); ((object)__instance).GetType().GetField("_additiveSceneLoads", BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic); PlayerDataTest value3 = new PlayerDataTest(); field11.SetValue(__instance, new QuestTest[0]); field12.SetValue(__instance, value3); field13.SetValue(__instance, new string[0]); field14.SetValue(__instance, new SceneAdditiveLoadConditional[0]); field15.SetValue(__instance, false); return true; } if (BossSequence.currentSequenceScene == BossScene.bosses["Savage Beastfly in Far Fields"] && ((Object)((Component)__instance).gameObject).name.Contains("Boss Golem Loader")) { Object.Destroy((Object)(object)((Component)__instance).gameObject); return false; } if (BossSequence.isInSequence && ((Object)((Component)__instance).gameObject).name.Contains("Rest Golem Loader")) { Object.Destroy((Object)(object)((Component)__instance).gameObject); return false; } if (BossSequence.currentSequenceScene == BossScene.bosses["Shakra"] && ((Object)((Component)__instance).gameObject).name.Contains("Mapper Sparring")) { FieldInfo? field16 = ((object)__instance).GetType().GetField("questTests", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); FieldInfo field17 = ((object)__instance).GetType().GetField("tests", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); FieldInfo field18 = ((object)__instance).GetType().GetField("doorBlackList", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); FieldInfo field19 = ((object)__instance).GetType().GetField("otherLoaderBlacklist", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); FieldInfo field20 = ((object)__instance).GetType().GetField("loadAlt", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); ((object)__instance).GetType().GetField("_additiveSceneLoads", BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic); PlayerDataTest value4 = new PlayerDataTest(); field16.SetValue(__instance, new QuestTest[0]); field17.SetValue(__instance, value4); field18.SetValue(__instance, new string[0]); field19.SetValue(__instance, new SceneAdditiveLoadConditional[0]); field20.SetValue(__instance, false); return true; } if ((BossSequence.currentSequenceScene == BossScene.bosses["Shakra"] && ((Object)((Component)__instance).gameObject).name.Contains("Boss Scene Loader")) || ((Object)((Component)__instance).gameObject).name.Contains("Caravan Scene Loader")) { Object.Destroy((Object)(object)((Component)__instance).gameObject); return false; } if ((BossSequence.currentSequenceScene == BossScene.bosses["Moorwing"] && ((Object)((Component)__instance).gameObject).name.Contains("Mapper Sparring")) || ((Object)((Component)__instance).gameObject).name.Contains("Caravan Scene Loader")) { Object.Destroy((Object)(object)((Component)__instance).gameObject); return false; } if (BossSequence.currentSequenceScene == BossScene.bosses["Moorwing"] && ((Object)((Component)__instance).gameObject).name.Contains("Boss Scene Loader")) { FieldInfo? field21 = ((object)__instance).GetType().GetField("questTests", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); FieldInfo field22 = ((object)__instance).GetType().GetField("tests", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); FieldInfo field23 = ((object)__instance).GetType().GetField("doorBlackList", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); FieldInfo field24 = ((object)__instance).GetType().GetField("otherLoaderBlacklist", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); FieldInfo field25 = ((object)__instance).GetType().GetField("loadAlt", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); FieldInfo field26 = ((object)__instance).GetType().GetField("_additiveSceneLoads", BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic); PlayerDataTest value5 = new PlayerDataTest(); field21.SetValue(__instance, new QuestTest[0]); field22.SetValue(__instance, value5); field23.SetValue(__instance, new string[0]); field24.SetValue(__instance, new SceneAdditiveLoadConditional[0]); field25.SetValue(__instance, false); field26.SetValue(__instance, new List<SceneAdditiveLoadConditional>()); return true; } if (BossSequence.currentSequenceScene == BossScene.bosses["The Unravelled"] && ((Object)((Component)__instance).gameObject).name.Contains("Boss Loader")) { FieldInfo? field27 = ((object)__instance).GetType().GetField("questTests", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); FieldInfo field28 = ((object)__instance).GetType().GetField("tests", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); PlayerDataTest value6 = new PlayerDataTest(); field27.SetValue(__instance, new QuestTest[0]); field28.SetValue(__instance, value6); return true; } if (BossSequence.currentSequenceScene == BossScene.bosses["Bell Beast"] && ((Object)((Component)__instance).gameObject).name.Contains("Boss Additive Loader")) { FieldInfo? field29 = ((object)__instance).GetType().GetField("questTests", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); FieldInfo field30 = ((object)__instance).GetType().GetField("tests", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); FieldInfo field31 = ((object)__instance).GetType().GetField("doorBlackList", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); FieldInfo field32 = ((object)__instance).GetType().GetField("otherLoaderBlacklist", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); FieldInfo field33 = ((object)__instance).GetType().GetField("loadAlt", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); ((object)__instance).GetType().GetField("_additiveSceneLoads", BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic); PlayerDataTest value7 = new PlayerDataTest(); field29.SetValue(__instance, new QuestTest[0]); field30.SetValue(__instance, value7); field31.SetValue(__instance, new string[0]); field32.SetValue(__instance, new SceneAdditiveLoadConditional[0]); field33.SetValue(__instance, false); return true; } if (BossSequence.currentSequenceScene == BossScene.bosses["Cogwork Dancers"] && ((Object)((Component)__instance).gameObject).name.Contains("Boss Loader")) { FieldInfo? field34 = ((object)__instance).GetType().GetField("questTests", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); FieldInfo field35 = ((object)__instance).GetType().GetField("tests", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); PlayerDataTest value8 = new PlayerDataTest(); field34.SetValue(__instance, new QuestTest[0]); field35.SetValue(__instance, value8); return true; } return true; } [HarmonyPrefix] [HarmonyPatch(typeof(TestGameObjectActivator), "OnEnable")] private static bool TestGameObjectActivatorPatch_Prefix(TestGameObjectActivator __instance) { //IL_0052: Unknown result type (might be due to invalid IL or missing references) //IL_0058: Expected O, but got Unknown if (BossSequence.currentSequenceScene == BossScene.bosses["Lost Garmond"] && ((Object)((Component)__instance).gameObject).name == "Garmond Black Threaded Scene") { FieldInfo? field = ((object)__instance).GetType().GetField("questTests", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); FieldInfo field2 = ((object)__instance).GetType().GetField("playerDataTest", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); PlayerDataTest value = new PlayerDataTest(); field.SetValue(__instance, new QuestTest[0]); field2.SetValue(__instance, value); return true; } if (BossSequence.currentSequenceScene == BossScene.bosses["Lost Garmond"] && ((Object)((Component)__instance).gameObject).name == "Pre Garmond") { ((Component)__instance).gameObject.SetActive(false); return true; } if (BossSequence.isInSequence && ((Object)((Component)__instance).gameObject).name == "Gnat Corpse Ground") { Object.Destroy((Object)(object)((Component)__instance).gameObject); return true; } if (BossSequence.currentSequenceScene == BossScene.bosses["Broodmother"] && ((Object)((Component)__instance).gameObject).name == "Broodmother Scene Control") { Transform transform = ((Component)__instance).gameObject.transform; ((Component)transform.GetChild(0)).gameObject.SetActive(false); ((Component)transform.GetChild(1)).gameObject.SetActive(true); Object.Destroy((Object)(object)__instance); return false; } if (BossSequence.currentSequenceScene == BossScene.bosses["Savage Beastfly in Far Fields"] && ((Object)((Component)__instance).gameObject).name == "Beastfly States") { Transform transform2 = ((Component)__instance).gameObject.transform; ((Component)transform2.GetChild(0)).gameObject.SetActive(true); ((Component)transform2.GetChild(1)).gameObject.SetActive(false); Object.Destroy((Object)(object)__instance); return false; } if (BossSequence.currentSequenceScene == BossScene.bosses["Gurr the Outcast"] && ((Object)((Component)__instance).gameObject).name == "Boss Scene") { Object.Destroy((Object)(object)__instance); return false; } if (BossSequence.currentSequenceScene == BossScene.bosses["Plasmified Zango"] && ((Object)((Component)__instance).gameObject).name == "Area_States") { Transform transform3 = ((Component)__instance).gameObject.transform; ((Component)transform3.GetChild(0)).gameObject.SetActive(false); ((Component)transform3.GetChild(1)).gameObject.SetActive(true); Object.Destroy((Object)(object)__instance); return false; } return true; } [HarmonyPrefix] [HarmonyPatch(typeof(PersistentBoolItem), "Awake")] private static bool PersistentBoolItemPatch_Prefix(PersistentBoolItem __instance) { if ((BossSequence.currentSequenceScene == BossScene.bosses["Moss Mother"] && ((Object)((Component)__instance).gameObject).name == "Battle Scene") || ((Object)((Component)__instance).gameObject).name == "Boss Scene") { Object.Destroy((Object)(object)__instance); return false; } if ((BossSequence.currentSequenceScene == BossScene.bosses["Great Conchflies"] && ((Object)((Component)__instance).gameObject).name == "Driller A") || ((Object)((Component)__instance).gameObject).name == "Driller B") { Object.Destroy((Object)(object)__instance); return false; } if (BossSequence.currentSequenceScene == BossScene.bosses["The Last Judge"] && ((Object)((Component)__instance).gameObject).name == "Last Judge") { Object.Destroy((Object)(object)__instance); return false; } if (BossSequence.currentSequenceScene == BossScene.bosses["Plasmified Zango"] && ((Object)((Component)__instance).gameObject).name == "Blue Assistant") { Object.Destroy((Object)(object)__instance); return false; } if (BossSequence.currentSequenceScene == BossScene.bosses["Clover Dancers"] && ((Object)((Component)__instance).gameObject).name == "Dancer A") { Object.Destroy((Object)(object)__instance); return false; } if ((BossSequence.currentSequenceScene == BossScene.bosses["Forum Battle"] && ((Object)((Component)__instance).gameObject).name == "Battle Scene") || ((Object)((Component)__instance).gameObject).name == "Start Range" || ((Object)((Component)__instance).gameObject).name.Contains("Song Handmaiden") || ((Object)((Component)__instance).gameObject).name.Contains("City Merchant Scavenge Generic")) { Object.Destroy((Object)(object)__instance); return false; } return true; } [HarmonyPrefix] [HarmonyPatch(typeof(DeactivateIfPlayerdataTrue), "OnEnable")] private static bool DeactivateIfPlayerdataTrue_Prefix(DeactivateIfPlayerdataTrue __instance) { if (BossSequence.currentSequenceScene == BossScene.bosses["Moss Mother"] && ((Object)((Component)__instance).gameObject).name == "Battle Scene") { Object.Destroy((Object)(object)__instance); return false; } if (BossSequence.currentSequenceScene == BossScene.bosses["Bell Beast"] && ((Object)((Component)__instance).gameObject).name == "Boss Scene") { Object.Destroy((Object)(object)__instance); return false; } if (BossSequence.currentSequenceScene == BossScene.bosses["Fourth Chorus"] && ((Object)((Component)__instance).gameObject).name == "Lava Rocks") { Object.Destroy((Object)(object)__instance); return false; } if (BossSequence.isInSequence && ((Object)((Component)__instance).gameObject).name == "Churchkeeper Basement") { Object.Destroy((Object)(object)((Component)__instance).gameObject); return false; } if (BossSequence.currentSequenceScene == BossScene.bosses["Lace in Deep Docks"] && ((Object)((Component)__instance).gameObject).name == "Boss Scene") { Object.Destroy((Object)(object)__instance); return false; } if (BossSequence.currentSequenceScene == BossScene.bosses["Skull Tyrant"] && ((Object)((Component)__instance).gameObject).name == "Skull King") { Object.Destroy((Object)(object)__instance); return false; } if (BossSequence.currentSequenceScene == BossScene.bosses["First Sinner"] && ((Object)((Component)__instance).gameObject).name == "Boss Scene") { Object.Destroy((Object)(object)__instance); return false; } if (BossSequence.currentSequenceScene == BossScene.bosses["Lace in the Cradle"] && ((Object)((Component)__instance).gameObject).name == "Lace Return Corpse") { Object.Destroy((Object)(object)__instance); return false; } if (BossSequence.currentSequenceScene == BossScene.bosses["Second Sentiel"] && ((Object)((Component)__instance).gameObject).name == "Boss Scene - To Additive Load") { Object.Destroy((Object)(object)__instance); return false; } if (BossSequence.currentSequenceScene == BossScene.bosses["The Unravelled"] && ((Object)((Component)__instance).gameObject).name == "Boss Scene") { Object.Destroy((Object)(object)__instance); return false; } if (BossSequence.currentSequenceScene == BossScene.bosses["Voltvyrm"] && ((Object)((Component)__instance).gameObject).name == "boss_eggshell") { Object.Destroy((Object)(object)__instance); return false; } if (BossSequence.currentSequenceScene == BossScene.bosses["Voltvyrm"] && ((Object)((Component)__instance).gameObject).name == "Zap Core Enemy") { Object.Destroy((Object)(object)__instance); return false; } if (BossSequence.currentSequenceScene == BossScene.bosses["Voltvyrm"] && ((Object)((Component)__instance).gameObject).name == "Hunter Fan Outside") { Object.Destroy((Object)(object)((Component)__instance).gameObject); return false; } if (BossSequence.currentSequenceScene == BossScene.bosses["Palestag"] && ((Object)((Component)__instance).gameObject).name == "Cloverstag White Boss") { Object.Destroy((Object)(object)__instance); return false; } if ((BossSequence.currentSequenceScene == BossScene.bosses["Shrine Guardian Seth"] && ((Object)((Component)__instance).gameObject).name == "Seth") || ((Object)((Component)__instance).gameObject).name == "Flower Gate") { Object.Destroy((Object)(object)__instance); return false; } if (BossSequence.currentSequenceScene == BossScene.bosses["Lace in the Cradle"] && ((Object)((Component)__instance).gameObject).name == "Lace Boss2 New") { Object.Destroy((Object)(object)__instance); return false; } return true; } [HarmonyPrefix] [HarmonyPatch(typeof(DeactivateIfPlayerdataFalse), "OnEnable")] private static bool DeactivateIfPlayerdataFalse_Prefix(DeactivateIfPlayerdataFalse __instance) { if (BossSequence.currentSequenceScene == BossScene.bosses["Great Conchflies"] && ((Object)((Component)__instance).gameObject).name == "Coral Driller Return Corpse") { ((Component)__instance).gameObject.SetActive(false); return false; } if ((BossSequence.currentSequenceScene == BossScene.bosses["Skull Tyrant"] && ((Object)((Component)__instance).gameObject).name == "Corpse") || ((Object)((Component)__instance).gameObject).name == "Hunter Fan Outside Rummage (1)") { ((Component)__instance).gameObject.SetActive(false); return false; } if (BossSequence.currentSequenceScene == BossScene.bosses["Raging Conchfly"] && ((Object)((Component)__instance).gameObject).name == "Boss Corpse Scene") { ((Component)__instance).gameObject.SetActive(false); return false; } if (BossSequence.currentSequenceScene == BossScene.bosses["Watcher at the Edge"] && ((Object)((Component)__instance).gameObject).name == "Collectable Item Pickup") { Object.Destroy((Object)(object)((Component)__instance).gameObject); return false; } if (BossSequence.currentSequenceScene == BossScene.bosses["Disgraced Chef Lugoli"] && ((Object)((Component)__instance).gameObject).name == "Chef Corpse Prepare Scene") { Object.Destroy((Object)(object)((Component)__instance).gameObject); return false; } if (BossSequence.currentSequenceScene == BossScene.bosses["Voltvyrm"] && ((Object)((Component)__instance).gameObject).name == "Return Aftermath") { Object.Destroy((Object)(object)((Component)__instance).gameObject); return false; } if (BossSequence.currentSequenceScene == BossScene.bosses["Phantom"] && ((Object)((Component)__instance).gameObject).name == "Return Mask") { Object.Destroy((Object)(object)((Component)__instance).gameObject); return false; } return true; } [HarmonyPrefix] [HarmonyPatch(typeof(ActivateIfPlayerdataFalse), "Start")] private static bool ActivateIfPlayerdataFalse_Prefix(ActivateIfPlayerdataFalse __instance) { if (BossSequence.currentSequenceScene == BossScene.bosses["Savage Beastfly in Chapel of The Beast"] && ((Object)((Component)__instance).gameObject).name == "Boss Control") { __instance.objectToActivate.SetActive(true); Object.Destroy((Object)(object)__instance); return false; } if (BossSequence.currentSequenceScene == BossScene.bosses["Disgraced Chef Lugoli"] && ((Object)((Component)__instance).gameObject).name == "Battle Scene") { __instance.objectToActivate.SetActive(true); Object.Destroy((Object)(object)__instance); return false; } return true; } [HarmonyPrefix] [HarmonyPatch(typeof(ActivateIfPlayerdataTrue), "OnEnable")] private static bool ActivateIfPlayerdataTrue_Prefix(ActivateIfPlayerdataTrue __instance) { if (BossSequence.currentSequenceScene == BossScene.bosses["Savage Beastfly in Chapel of The Beast"] && ((Object)((Component)__instance).gameObject).name == "Boss Control") { __instance.objectToActivate.SetActive(false); Object.Destroy((Object)(object)__instance); return false; } if (BossSequence.currentSequenceScene == BossScene.bosses["Father of the Flame"] && ((Object)((Component)__instance).gameObject).name == "Boss Scene") { __instance.objectToActivate.SetActive(false); Object.Destroy((Object)(object)__instance); return false; } return true; } [HarmonyPrefix] [HarmonyPatch(typeof(PlayerDataTestResponse), "OnEnable")] private static bool PlayerDataTestResponse_Prefix(PlayerDataTestResponse __instance) { if (BossSequence.currentSequenceScene == BossScene.bosses["Sister Splinter"] && ((Object)((Component)__instance).gameObject).name == "Boss Scene Parent") { Object.Destroy((Object)(object)__instance); return false; } if (BossSequence.currentSequenceScene == BossScene.bosses["Garmond & Zaza"] && ((Object)((Component)__instance).gameObject).name == "Scene Control") { Object.Destroy((Object)(object)__instance); return false; } if (BossSequence.currentSequenceScene == BossScene.bosses["Lace in the Cradle"] && ((Object)((Component)__instance).gameObject).name == "Boss Scene") { Object.Destroy((Object)(object)__instance); return false; } if (BossSequence.currentSequenceScene == BossScene.bosses["Lost Garmond"] && ((Object)((Component)__instance).gameObject).name == "Garmond Defeated Scene") { Object.Destroy((Object)(object)((Component)__instance).gameObject); return false; } if (BossSequence.currentSequenceScene == BossScene.bosses["Crawfather"] && ((Object)((Component)__instance).gameObject).name == "grey_lever_gate") { ((Component)__instance).gameObject.GetComponent<Gate>().ForceClose(); Object.Destroy((Object)(object)__instance); return false; } return true; } [HarmonyPrefix] [HarmonyPatch(typeof(StateChangeSequence), "CheckCompleteBool")] private static bool StateChangeSequenceCheckCompleteBool_Prefix(PlayerDataTestResponse __instance, ref bool __result) { if (BossSequence.currentSequenceScene == BossScene.bosses["Widow"] && ((Object)((Component)__instance).gameObject).name == "Bellshrine Sequence Bellhart") { __result = true; return false; } return true; } [HarmonyPostfix] [HarmonyPatch(typeof(BattleScene), "Awake")] private static void BattleSceneAwake_Postfix(BattleScene __instance) { if (BossSequence.currentSequenceScene == BossScene.bosses["Broodmother"] && ((Object)((Component)__instance).gameObject).name == "Battle Scene Broodmother") { __instance.setPDBoolOnEnd = null; } if (BossSequence.currentSequenceScene == BossScene.bosses["Disgraced Chef Lugoli"] && ((Object)((Component)__instance).gameObject).name == "Battle Scene") { __instance.setPDBoolOnEnd = null; } if (BossSequence.currentSequenceScene == BossScene.bosses["Groal the Great"] && ((Object)((Component)__instance).gameObject).name == "Battle Scene") { __instance.setPDBoolOnEnd = null; } if (BossSequence.currentSequenceScene == BossScene.bosses["Raging Conchfly"] && ((Object)((Component)__instance).gameObject).name == "Battle Scene") { __instance.setPDBoolOnEnd = null; } if (BossSequence.currentSequenceScene == BossScene.bosses["Crawfather"] && ((Object)((Component)__instance).gameObject).name == "Battle Scene") { __instance.setPDBoolOnEnd = null; __instance.activeAfterBattle = null; } } [HarmonyPrefix] [HarmonyPatch(typeof(HarpoonRingSlider), "Awake")] private static void HarpoonRingSliderAwake_Prefix(HarpoonRingSlider __instance) { if (BossSequence.currentSequenceScene == BossScene.bosses["Cogwork Dancers"]) { Object.Destroy((Object)(object)((Component)__instance).gameObject); } } [HarmonyPrefix] [HarmonyPatch(typeof(CustomSceneManager), "Awake")] private static bool SceneManagerAwake_Prefix(CustomSceneManager __instance) { CustomScene customScene = customScenes.Find((CustomScene item) => item.sceneName == currentSceneName); if (customScene != null && !customScene.isSkongScene) { __instance.scenePools = (SceneObjectPool[])(object)new SceneObjectPool[0]; } return true; } [HarmonyPrefix] [HarmonyPatch(typeof(CustomSceneManager), "DrawBlackBorders")] private static bool SceneManagerDrawBlackBorders_Prefix(CustomSceneManager __instance) { CustomScene customScene = customScenes.Find((CustomScene item) => item.sceneName == currentSceneName); if (customScene != null && !customScene.isSkongScene) { return false; } return true; } [HarmonyPrefix] [HarmonyPatch(typeof(InventoryItemCollectable), "Submit")] private static bool InventoryItemCollectableSubmit_Prefix(InventoryItemCollectable __instance) { if (!((Component)__instance).transform.IsChildOf(BindingsMenu.menuBindings.transform)) { return true; } if (BindingsMenu.TryShowSequenceMsg()) { return false; } if (BindingsMenu.submitActions.TryGetValue(((Object)((Component)__instance).gameObject).name, out var value)) { value?.Invoke(obj: false); return false; } return true; } [HarmonyPrefix] [HarmonyPatch(typeof(InventoryItemSelectable), "Submit")] private static bool InventoryItemSelectableSubmit_Prefix(InventoryItemSelectable __instance) { if (!((Component)__instance).transform.IsChildOf(BindingsMenu.menuBindings.transform)) { return true; } if (BindingsMenu.TryShowSequenceMsg()) { return false; } if (BindingsMenu.submitActions.TryGetValue(((Object)((Component)__instance).gameObject).name, out var value)) { value?.Invoke(obj: false); return false; } return true; } [HarmonyPrefix] [HarmonyPatch(typeof(InventoryItemTool), "Submit")] private static bool InventoryItemToolSubmit_Prefix(InventoryItemTool __instance) { if (!PlayerDataMod.instance.bindings["Tools Binding"]) { return true; } if (((Object)__instance).name != "Silk Spear" && ((Object)__instance).name != "Thread Sphere" && ((Object)__instance).name != "Parry" && ((Object)__instance).name != "Silk Charge" && ((Object)__instance).name != "Silk Bomb" && ((Object)__instance).name != "Silk Boss Needle" && BindingsMenu.submitActions.TryGetValue("Tools Buttons Msg", out var value)) { value?.Invoke(obj: false); return false; } return true; } public AssetBundle LoadBundle(string bundleName) { Assembly executingAssembly = Assembly.GetExecutingAssembly(); string[] manifestResourceNames = executingAssembly.GetManifestResourceNames(); foreach (string text in manifestResourceNames) { string text2 = Path.GetExtension(text).Substring(1); ((BaseUnityPlugin)this).Logger.LogInfo((object)text2); if (text2 != bundleName) { continue; } using Stream stream = executingAssembly.GetManifestResourceStream(text); if (stream == null) { continue; } byte[] array = new byte[stream.Length]; stream.Read(array, 0, array.Length); stream.Dispose(); ((BaseUnityPlugin)this).Logger.LogInfo((object)("Loading bundle " + bundleName)); return AssetBundle.LoadFromMemory(array); } return null; } public void LoadModData() { if (File.Exists(pathToModData)) { PlayerDataMod.instance = JsonConvert.DeserializeObject<PlayerDataMod>(File.ReadAllText(pathToModData)); return; } PlayerDataMod.instance = new PlayerDataMod(); SaveModData(); } public void SaveModData() { string contents = JsonConvert.SerializeObject((object)PlayerDataMod.instance, (Formatting)1); File.WriteAllText(pathToModData, contents); } private void Awake() { //IL_0016: Unknown result type (might be due to invalid IL or missing references) instance = this; Log = ((BaseUnityPlugin)this).Logger; new Harmony("com.godsofpharloom"); Harmony.CreateAndPatchAll(typeof(GodsOfPharloomMod), (string)null); try { BossScene.InitBossesInfo(); BossStatueInfo.InitBossesStatue(); LoadModData(); BossStatueInfo.GetBadges(); } catch (Exception ex) { ((BaseUnityPlugin)this).Logger.LogInfo((object)ex.Message); } SceneManager.sceneLoaded += delegate(Scene scene, LoadSceneMode mode) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) lastLoadedScene = scene; }; BossSequence.CreateSequenceController(); CustomScene.InitModRespawnMarkers(); afterSceneLoaded = (Action)Delegate.Combine(afterSceneLoaded, new Action(CustomMenu.Reset)); InitCustomScenes(); string[] array = assetBundleNames; foreach (string text in array) { AssetBundle val = LoadBundle(text); assetBundles.Add(val); if (text == "gg_resources") { Object[] array2 = val.LoadAllAssets(); foreach (Object val2 in array2) { Preload.bundleResources[val2.name] = val2; } } } TransitionSequence.Init(); afterSceneLoaded = (Action)Delegate.Combine(afterSceneLoaded, (Action)delegate { BossSequence.isHeroDead = false; }); ((BaseUnityPlugin)this).Logger.LogInfo((object)"Plugin is loaded!"); } private void Update() { //IL_007a: Unknown result type (might be due to invalid IL or missing references) //IL_007f: Unknown result type (might be due to invalid IL or missing references) //IL_008a: 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_009c: Unknown result type (might be due to invalid IL or missing references) //IL_009e: Unknown result type (might be due to invalid IL or missing references) //IL_00a4: Expected O, but got Unknown if (((ButtonControl)Keyboard.current.bKey).wasPressedThisFrame) { if (BindingsMenu.menuBindingsFsm != null && BindingsMenu.menuBindingsFsm.ActiveStateName == "Opened") { BindingsMenu.menuBindingsFsm.FsmComponent.SendEvent("CLOSE"); } else if (BindingsMenu.menuBindingsFsm.ActiveStateName == "Closed") { BindingsMenu.menuBindingsFsm.SetState("Can Open Inventory?"); } } if (((ButtonControl)Keyboard.current.f6Key).wasPressedThisFrame) { SceneLoadInfo val = new SceneLoadInfo { SceneName = "GG_Pharloom_Atrium", EntryGateName = "door_wakeInMemory_AntQueen(Clone)", EntrySkip = true, Visualization = (SceneLoadVisualizations)0 }; GameManager.instance.BeginSceneTransition(val); } } public static void SetHeroState(ActorStates state) { //IL_002c: Unknown result type (might be due to invalid IL or missing references) ((Func<MethodInfo, object[], object>)((MethodInfo method, object[] obj) => method.Invoke(HeroController.instance, obj)))(HeroController_SetState, new object[1] { state }); } private void InitCustomScenes() { //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_00fb: Unknown result type (might be due to invalid IL or missing references) //IL_01bd: 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_0307: Unknown result type (might be due to invalid IL or missing references) //IL_039b: Unknown result type (might be due to invalid IL or missing references) //IL_042f: Unknown result type (might be due to invalid IL or missing references) //IL_04fd: Unknown result type (might be due to invalid IL or missing references) //IL_05af: Unknown result type (might be due to invalid IL or missing references) //IL_0643: Unknown result type (might be due to invalid IL or missing references) //IL_06d7: Unknown result type (might be due to invalid IL or missing references) //IL_076b: Unknown result type (might be due to invalid IL or missing references) //IL_07ff: Unknown result type (might be due to invalid IL or missing references) //IL_0893: Unknown result type (might be due to invalid IL or missing references) //IL_0927: Unknown result type (might be due to invalid IL or missing references) //IL_09bb: Unknown result type (might be due to invalid IL or missing references) //IL_0a4f: Unknown result type (might be due to invalid IL or missing references) //IL_0ae3: Unknown result type (might be due to invalid IL or missing references) //IL_0b77: Unknown result type (might be due to invalid IL or missing references) //IL_0c0b: Unknown result type (might be due to invalid IL or missing references) //IL_0c9f: Unknown result type (might be due to invalid IL or missing references) //IL_0d33: Unknown result type (might be due to invalid IL or missing references) //IL_0dc7: Unknown result type (might be due to invalid IL or missing references) //IL_0e5b: Unknown result type (might be due to invalid IL or missing references) //IL_0eef: Unknown result type (might be due to invalid IL or missing references) //IL_0fa1: Unknown result type (might be due to invalid IL or missing references) //IL_1035: Unknown result type (might be due to invalid IL or missing references) //IL_10c9: Unknown result type (might be due to invalid IL or missing references) //IL_115d: Unknown result type (might be due to invalid IL or missing references) //IL_11f1: Unknown result type (might be due to invalid IL or missing references) //IL_1285: Unknown result type (might be due to invalid IL or missing references) //IL_1319: Unknown result type (might be due to invalid IL or missing references) //IL_13ad: Unknown result type (might be due to invalid IL or missing references) //IL_1441: Unknown result type (might be due to invalid IL or missing references) //IL_14d5: Unknown result type (might be due to invalid IL or missing references) //IL_1569: Unknown result type (might be due to invalid IL or missing references) //IL_15c6: Unknown result type (might be due to invalid IL or missing references) //IL_1678: Unknown result type (might be due to invalid IL or missing references) //IL_170c: Unknown result type (might be due to invalid IL or missing references) //IL_17a0: Unknown result type (might be due to invalid IL or missing references) //IL_1834: Unknown result type (might be due to invalid IL or missing references) //IL_18c8: Unknown result type (might be due to invalid IL or missing references) //IL_195c: Unknown result type (might be due to invalid IL or missing references) //IL_19f0: Unknown result type (might be due to invalid IL or missing references) //IL_1a84: Unknown result type (might be due to invalid IL or missing references) //IL_1b18: Unknown result type (might be due to invalid IL or missing references) //IL_1bac: Unknown result type (might be due to invalid IL or missing references) //IL_1c40: Unknown result type (might be due to invalid IL or missing references) CustomScene GG_Pharloom_Atrium = new CustomScene("GG_Pharloom_Atrium", isSkongScene: false, isFastSuperJump: true); GG_Pharloom_Atrium.AddTransitionPoint(new TransitionPointInfo("door2", new Vector3(156.4901f, 36.18f, 0f), BossStatueInfo.hog_sceneName, "door1", (PromptLabels)3, isADoor: true)); CustomScene customScene = GG_Pharloom_Atrium; customScene.AfterSceneLoaded = (Action<Scene>)Delegate.Combine(customScene.AfterSceneLoaded, (Action<Scene>)delegate(Scene scene) { //IL_0069: Unknown result type (might be due to invalid IL or missing references) //IL_007e: Unknown result type (might be due to invalid IL or missing references) //IL_007f: Unknown result type (might be due to invalid IL or missing references) //IL_0084: Unknown result type (might be due to invalid IL or missing references) //IL_0097: Unknown result type (might be due to invalid IL or missing references) //IL_00bc: Unknown result type (might be due to invalid IL or missing references) //IL_00c1: Unknown result type (might be due to invalid IL or missing references) //IL_00cc: Unknown result type (might be due to invalid IL or missing references) //IL_00d7: Unknown result type (might be due to invalid IL or missing references) //IL_00dd: Unknown result type (might be due to invalid IL or missing references) //IL_00f9: Unknown result type (might be due to invalid IL or missing references) //IL_00fe: Unknown result type (might be due to invalid IL or missing references) //IL_0105: Unknown result type (might be due to invalid IL or missing references) //IL_0111: Unknown result type (might be due to invalid IL or missing references) //IL_011b: Unknown result type (might be due to invalid IL or missing references) //IL_0142: Unknown result type (might be due to invalid IL or missing references) //IL_0195: Unknown result type (might be due to invalid IL or missing references) //IL_01b1: Unknown result type (might be due to invalid IL or missing references) //IL_01b7: Unknown result type (might be due to invalid IL or missing references) //IL_01d6: Unknown result type (might be due to invalid IL or missing references) //IL_01ea: Unknown result type (might be due to invalid IL or missing references) //IL_01f6: 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_021a: Unknown result type (might be due to invalid IL or missing references) //IL_0224: Unknown result type (might be due to invalid IL or missing references) //IL_0248: Unknown result type (might be due to invalid IL or missing references) //IL_0296: Unknown result type (might be due to invalid IL or missing references) //IL_02ae: Unknown result type (might be due to invalid IL or missing references) //IL_02d2: Unknown result type (might be due to invalid IL or missing references) //IL_0319: Unknown result type (might be due to invalid IL or missing references) //IL_0331: Unknown result type (might be due to invalid IL or missing references) //IL_0355: Unknown result type (might be due to invalid IL or missing references) //IL_03b5: Unknown result type (might be due to invalid IL or missing references) //IL_03dc: Unknown result type (might be due to invalid IL or missing references) //IL_03e2: Unknown result type (might be due to invalid IL or missing references) //IL_03e7: Unknown result type (might be due to invalid IL or missing references) //IL_03fc: Unknown result type (might be due to invalid IL or missing references) //IL_04d4: Unknown result type (might be due to invalid IL or missing references) //IL_04da: Unknown result type (might be due to invalid IL or missing references) //IL_04df: 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_04fe: Unknown result type (might be due to invalid IL or missing references) //IL_0544: Unknown result type (might be due to invalid IL or missing references) //IL_054a: Expected O, but got Unknown //IL_054a: Unknown result type (might be due to invalid IL or missing references) //IL_054f: Unknown result type (might be due to invalid IL or missing references) //IL_0564: Unknown result type (might be due to invalid IL or missing references) //IL_056e: Unknown result type (might be due to invalid IL or missing references) //IL_0583: Unknown result type (might be due to invalid IL or missing references) //IL_05a1: Unknown result type (might be due to invalid IL or missing references) //IL_0cdf: Unknown result type (might be due to invalid IL or missing references) //IL_0ce5: Unknown result type (might be due to invalid IL or missing references) //IL_0cec: Expected O, but got Unknown AudioManager audioManager = GameManager.instance.AudioManager; audioManager.StopAndClearAtmos(); audioManager.StopAndClearMusic(); GameObject[] rootGameObjects = ((Scene)(ref scene)).GetRootGameObjects(); GameObject val = null; GameObject[] array = rootGameObjects; foreach (GameObject val2 in array) { if (((Object)val2).name == "GG_Bench") { val = val2; } } GameObject obj = Object.Instantiate<GameObject>(Preload.preloads["RestBench"], new InstantiateParameters { parent = val.transform, scene = scene }); obj.transform.position = val.transform.position; Fsm fsm = FSMUtility.LocateMyFSM(obj, "Bench Control").Fsm; Vector3 value = fsm.GetFsmVector3("Adjust Vector").Value; fsm.GetFsmVector3("Adjust Vector").Value = new Vector3(value.x, 0.7f, value.z); ((Renderer)obj.GetComponent<SpriteRenderer>()).enabled = false; Vector2 size = obj.GetComponent<BoxCollider2D>().size; obj.GetComponent<BoxCollider2D>().size = new Vector2(size.x, 1f); CameraLockArea val3 = CustomScene.CreateCameraLock(scene); GameObject gameObject = ((Component)val3).gameObject; gameObject.transform.position = new Vector3(105.2262f, 60.9892f, 0f); val3.cameraYMin = 50f; val3.cameraYMax = 65f; val3.cameraXMin = 0f; val3.cameraXMax = 1000f; val3.preventLookDown = true; gameObject.GetComponent<BoxCollider2D>().size = new Vector2(300f, 18f); gameObject.AddComponent<ActiveCameraLockOnEnter>(); ((Behaviour)val3).enabled = false; BoxCollider2D component = ((GameObject)Object.Instantiate((Object)(object)gameObject, scene)).GetComponent<BoxCollider2D>(); ((Component)component).transform.position = new Vector3(58.8772f, 42.7895f, 0f); component.size = new Vector2(80f, 18f); ((Component)((GameObject)Object.Instantiate((Object)(object)gameObject, scene)).GetComponent<BoxCollider2D>()).transform.position = new Vector3(379.4977f, 42.5895f, 0f); CameraLockArea obj2 = CustomScene.CreateCameraLock(scene); GameObject gameObject2 = ((Component)obj2).gameObject; gameObject2.transform.position = new Vector3(156.5713f, 40.4745f, 0f); obj2.cameraYMin = 40f; obj2.cameraYMax = 50f; obj2.cameraXMin = 157f; obj2.cameraXMax = 157f; obj2.preventLookDown = true; gameObject2.GetComponent<BoxCollider2D>().size = new Vector2(12f, 20f); gameObject2.AddComponent<ActiveCameraLockOnEnter>(); ((Behaviour)obj2).enabled = false; CameraLockArea obj3 = CustomScene.CreateCameraLock(scene); GameObject gameObject3 = ((Component)obj3).gameObject; gameObject3.transform.position = new Vector3(156.7058f, 76.6994f, 0f); obj3.cameraYMin = 79f; obj3.cameraYMax = 500f; obj3.cameraXMin = 0f; obj3.cameraXMax = 1000f; gameObject3.GetComponent<BoxCollider2D>().size = new Vector2(300f, 8f); gameObject3.AddComponent<ActiveCameraLockOnEnter>(); ((Behaviour)obj3).enabled = false; CameraLockArea obj4 = CustomScene.CreateCameraLock(scene); GameObject gameObject4 = ((Component)obj4).gameObject; gameObject4.transform.position = new Vector3(156.7058f, 86.9f, 0f); obj4.cameraYMin = 88f; obj4.cameraYMax = 500f; obj4.cameraXMin = 156.4254f; obj4.cameraXMax = 156.4254f; obj4.preventLookDown = true; obj4.preventLookUp = true; obj4.lookYMax = 0f; gameObject4.GetComponent<BoxCollider2D>().size = new Vector2(11f, 12f); gameObject4.AddComponent<ActiveCameraLockOnEnter>(); ((Behaviour)obj4).enabled = false; GameObject val4 = (GameObject)Object.Instantiate((Object)(object)Preload.preloads["door_wakeInMemory_AntQueen"], scene); val4.transform.position = new Vector3(14f, 54f, 0f); Fsm fsm2 = val4.GetComponent<PlayMakerFSM>().Fsm; FsmState state = fsm2.GetState("Pause"); fsm2.GetState("Set Respawn?"); FsmState state2 = fsm2.GetState("Blank Screen"); fsm2.GetState("Save?"); fsm2.GetFsmBool("Save Game").Value = true; PatchedFsm.CustomLogicFsm customLogicFsm = new PatchedFsm.CustomLogicFsm(fsm2); customLogicFsm.action = (Action<Fsm>)Delegate.Combine(customLogicFsm.action, (Action<Fsm>)delegate { PlayerData.instance.respawnMarkerName = "Death Respawn Marker"; PlayerData.instance.respawnScene = "GG_Pharloom_Atrium"; }); state2.Actions = PatchedFsm.InsertInArray(state2.Actions, (FsmStateAction)(object)customLogicFsm, 0); state.Transitions = (FsmTransition[])(object)new FsmTransition[1] { state.Transitions[1] }; GameObject val5 = (GameObject)Object.Instantiate((Object)(object)Preload.preloads["Exit Edge Trigger_AntQueen"], scene); val5.transform.position = new Vector3(0f, 54f, 0f); SceneTransitionZone component2 = val5.GetComponent<SceneTransitionZone>(); ((object)component2).GetType().GetField("targetGate", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic).SetValue(component2, "door_wakeOnGround_FlowerQueen(Clone)"); ((object)component2).GetType().GetField("targetScene", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic).SetValue(component2, "Abyss_05"); GameObject val6 = (GameObject)Object.Instantiate((Object)val5, scene); val6.transform.position = new Vector3(62f, 28f, 0f); val6.transform.Rotate(new Vector3(0f, 0f, 90f)); val6.transform.localScale = new Vector3(1f, 7f, 1f); Preload.FindObjectByPath(rootGameObjects, "PantheonMenuCanvasHandler").AddComponent<PantheonMenu>(); Pantheon.pantheonsCount = 0; Dictionary<string, BossScene> bosses = BossScene.bosses; Pantheon pantheon = Preload.FindObjectByPath(rootGameObjects, "Half1/Pantheon1").AddComponent<Pantheon>(); pantheon.pantheonName = "Pantheon 1"; pantheon.pantheonDisplayName = "Pantheon of the Devoted"; pantheon.sequence = new BossScene[11] { bosses["Moss Mother"], bosses["Skull Tyrant"], bosses["Bell Beast"], bosses["Savage Beastfly in Chapel of The Beast"], bosses["Lace in Deep Docks"], bosses["RestScene"], bosses["Fourth Chorus"], bosses["Moorwing"], bosses["Great Conchflies"], bosses["Sister Splinter"], bosses["Widow"] }; pantheon.Init(); pantheon = Preload.FindObjectByPath(rootGameObjects, "Half1/Pantheon2").AddComponent<Pantheon>(); pantheon.pantheonName = "Pantheon 2"; pantheon.pantheonDisplayName = "Pantheon of the Shaman"; pantheon.sequence = new BossScene[11] { bosses["The Last Judge"], bosses["Broodmother"], bosses["Nyleth"], bosses["Voltvyrm"], bosses["Trobbio"], bosses["RestScene"], bosses["Garmond & Zaza"], bosses["Cogwork Dancers"], bosses["Disgraced Chef Lugoli"], bosses["Raging Conchfly"], bosses["Groal the Great"] }; pantheon.Init(); pantheon = Preload.FindObjectByPath(rootGameObjects, "Half2/Pantheon3").AddComponent<Pantheon>(); pantheon.pantheonName = "Pantheon 3"; pantheon.pantheonDisplayName = "Pantheon of the First Sinner"; pantheon.sequence = new BossScene[11] { bosses["Crust King Khann"], bosses["Phantom"], bosses["Crawfather"], bosses["Forebrothers Signis & Gron"], bosses["Second Sentiel"], bosses["RestScene"], bosses["Lace in the Cradle"], bosses["Plasmified Zango"], bosses["Watcher at the Edge"], bosses["The Unravelled"], bosses["First Sinner"] }; pantheon.Init(); pantheon = Preload.FindObjectByPath(rootGameObjects, "Half2/Pantheon4").AddComponent<Pantheon>(); pantheon.pantheonName = "Pantheon 4"; pantheon.pantheonDisplayName = "Pantheon of the Singer"; pantheon.sequence = new BossScene[11] { bosses["Bell Eater"], bosses["Father of the Flame"], bosses["Clover Dancers"], bosses["Gurr the Outcast"], bosses["Tormented Trobbio"], bosses["RestScene"], bosses["Shrine Guardian Seth"], bosses["Savage Beastfly in Far Fields"], bosses["Shakra"], bosses["Pinstress"], bosses["Skarrsinger Karmelita"] }; pantheon.Init(); pantheon = Preload.FindObjectByPath(rootGameObjects, "Pantheon5").AddComponent<Pantheon>(); pantheon.pantheonName = "Pantheon 5"; pantheon.pantheonDisplayName = "Pantheon of Pharloom"; pantheon.sequence = new BossScene[50] { bosses["Moss Mother"].ascendedVersion, bosses["Skull Tyrant"], bosses["Bell Beast"], bosses["Savage Beastfly in Chapel of The Beast"], bosses["Lace in Deep Docks"], bosses["RestScene"], bo