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 EntropyStages v0.9.9
EntropyStages.dll
Decompiled 2 years agousing System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Configuration; using Microsoft.CodeAnalysis; using On.RoR2; using On.RoR2.UI; using R2API; using RoR2; using RoR2.Navigation; using RoR2.Skills; using RoR2.UI; using UnityEngine; using UnityEngine.AddressableAssets; using UnityEngine.Networking; using UnityEngine.SceneManagement; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: TargetFramework(".NETStandard,Version=v2.0", FrameworkDisplayName = ".NET Standard 2.0")] [assembly: AssemblyCompany("EntropyStages")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("EntropyStages")] [assembly: AssemblyTitle("EntropyStages")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace EntropyStages { public class CrystalController : MonoBehaviour { public SpawnCard crystalSpawnCard = Addressables.LoadAssetAsync<SpawnCard>((object)"RoR2/Base/WeeklyRun/bscTimeCrystal.asset").WaitForCompletion(); public uint crystalCount = 3u; public uint crystalsRequiredToKill = 3u; private List<OnDestroyCallback> crystalActiveList = new List<OnDestroyCallback>(); public uint crystalsKilled => (uint)(crystalCount - crystalActiveList.Count); public static event Action<CrystalController> onBossGroupStartServer; public void OnStart() { if (NetworkServer.active) { CrystalController.onBossGroupStartServer?.Invoke(this); } } private void OnEnable() { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Expected O, but got Unknown //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_0037: Expected O, but got Unknown DirectorPlacementRule val = new DirectorPlacementRule(); val.placementMode = (PlacementMode)4; for (int i = 0; i < crystalCount; i++) { crystalActiveList.Add(OnDestroyCallback.AddCallback(DirectorCore.instance.TrySpawnObject(new DirectorSpawnRequest(crystalSpawnCard, val, Run.instance.stageRng)), (Action<OnDestroyCallback>)delegate(OnDestroyCallback component) { crystalActiveList.Remove(component); })); } InstanceTracker.Add<CrystalController>(this); ObjectivePanelController.collectObjectiveSources += ReportObjective; } private void OnDisable() { ObjectivePanelController.collectObjectiveSources -= ReportObjective; InstanceTracker.Remove<CrystalController>(this); } public void ReportObjective(CharacterMaster master, List<ObjectiveSourceDescriptor> output) { //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Unknown result type (might be due to invalid IL or missing references) if (crystalsKilled != crystalCount) { output.Add(new ObjectiveSourceDescriptor { source = (Object)(object)this, master = master, objectiveType = typeof(DestroyTimeCrystals) }); } } public void FixedUpdate() { //IL_0087: Unknown result type (might be due to invalid IL or missing references) //IL_008c: Unknown result type (might be due to invalid IL or missing references) //IL_0093: Unknown result type (might be due to invalid IL or missing references) //IL_00a3: Expected O, but got Unknown if (!Object.op_Implicit((Object)(object)TeleporterInteraction.instance)) { return; } bool flag = crystalsRequiredToKill > crystalsKilled; if (flag == TeleporterInteraction.instance.locked) { return; } if (flag) { if (NetworkServer.active) { TeleporterInteraction.instance.locked = true; } return; } if (NetworkServer.active) { TeleporterInteraction.instance.locked = false; } ChildLocator component = ((Component)((Component)TeleporterInteraction.instance).GetComponent<ModelLocator>().modelTransform).GetComponent<ChildLocator>(); if (Object.op_Implicit((Object)(object)component)) { Transform val = component.FindChild("TimeCrystalBeaconBlocker"); EffectManager.SpawnEffect(LegacyResourcesAPI.Load<GameObject>("Prefabs/Effects/TimeCrystalDeath"), new EffectData { origin = ((Component)val).transform.position }, false); ((Component)val).gameObject.SetActive(false); ((Behaviour)this).enabled = false; } } } [BepInPlugin("com.Nuxlar.EntropyStages", "EntropyStages", "0.9.9")] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] public class EntropyStages : BaseUnityPlugin { private SpawnCard teleporterSpawnCard = Addressables.LoadAssetAsync<SpawnCard>((object)"RoR2/Base/Teleporters/iscTeleporter.asset").WaitForCompletion(); private GameObject tearPortal = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/PortalArena/PortalArena.prefab").WaitForCompletion(), "NuxVoidTear"); private InteractableSpawnCard deepVoidSpawnCard = Addressables.LoadAssetAsync<InteractableSpawnCard>((object)"RoR2/DLC1/DeepVoidPortal/iscDeepVoidPortal.asset").WaitForCompletion(); private GameObject tear = PrefabAPI.InstantiateClone(((Component)Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/gauntlets/GauntletEntranceOrb.prefab").WaitForCompletion().transform.GetChild(0)).gameObject, "NuxTearVFX"); private EliteDef voidElite = Addressables.LoadAssetAsync<EliteDef>((object)"RoR2/DLC1/EliteVoid/edVoid.asset").WaitForCompletion(); private SceneDef voidPlains = Addressables.LoadAssetAsync<SceneDef>((object)"RoR2/DLC1/itgolemplains/itgolemplains.asset").WaitForCompletion(); private SceneDef voidAphelian = Addressables.LoadAssetAsync<SceneDef>((object)"RoR2/DLC1/itancientloft/itancientloft.asset").WaitForCompletion(); private SceneDef voidAqueduct = Addressables.LoadAssetAsync<SceneDef>((object)"RoR2/DLC1/itgoolake/itgoolake.asset").WaitForCompletion(); private SceneDef voidRallypoint = Addressables.LoadAssetAsync<SceneDef>((object)"RoR2/DLC1/itfrozenwall/itfrozenwall.asset").WaitForCompletion(); private SceneDef voidAbyssal = Addressables.LoadAssetAsync<SceneDef>((object)"RoR2/DLC1/itdampcave/itdampcave.asset").WaitForCompletion(); private SceneDef voidMeadow = Addressables.LoadAssetAsync<SceneDef>((object)"RoR2/DLC1/itskymeadow/itskymeadow.asset").WaitForCompletion(); private SceneCollection sc1 = Addressables.LoadAssetAsync<SceneCollection>((object)"RoR2/Base/SceneGroups/sgStage1.asset").WaitForCompletion(); private SceneCollection sc2 = Addressables.LoadAssetAsync<SceneCollection>((object)"RoR2/Base/SceneGroups/sgStage2.asset").WaitForCompletion(); private SceneCollection sc3 = Addressables.LoadAssetAsync<SceneCollection>((object)"RoR2/Base/SceneGroups/sgStage3.asset").WaitForCompletion(); private SceneCollection sc4 = Addressables.LoadAssetAsync<SceneCollection>((object)"RoR2/Base/SceneGroups/sgStage4.asset").WaitForCompletion(); private SceneCollection sc5 = Addressables.LoadAssetAsync<SceneCollection>((object)"RoR2/Base/SceneGroups/sgStage5.asset").WaitForCompletion(); private InteractableSpawnCard iscVoidTear = ScriptableObject.CreateInstance<InteractableSpawnCard>(); private static DirectorCardCategorySelection[] dccsInteractables = (DirectorCardCategorySelection[])(object)new DirectorCardCategorySelection[1] { Addressables.LoadAssetAsync<DirectorCardCategorySelection>((object)"RoR2/DLC1/GameModes/InfiniteTowerRun/InfiniteTowerAssets/dccsInfiniteTowerInteractables.asset").WaitForCompletion() }; private GameObject voidSeed = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/VoidCamp/VoidCamp.prefab").WaitForCompletion(), "RescueMissionNux"); private static Material shieldMat = Addressables.LoadAssetAsync<Material>((object)"RoR2/Base/Engi/matDefenseMatrix.mat").WaitForCompletion(); private static Material shieldMat2 = Addressables.LoadAssetAsync<Material>((object)"RoR2/Base/Engi/matDefenseMatrixCenter.mat").WaitForCompletion(); private GameObject survivorPod = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/SurvivorPod/SurvivorPod.prefab").WaitForCompletion(), "EmergencyPodNux"); private InteractableSpawnCard interactableSpawnCard = ScriptableObject.CreateInstance<InteractableSpawnCard>(); private static string[] voidStageNames = new string[6] { "itgolemplains", "itgoolake", "itancientloft", "itfrozenwall", "itdampcave", "itskymeadow" }; public static ConfigEntry<float> riftChance; public static ConfigEntry<bool> balanceToggle; private static ConfigFile ESConfig { get; set; } public void Awake() { //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Expected O, but got Unknown //IL_0081: Unknown result type (might be due to invalid IL or missing references) //IL_008b: Expected O, but got Unknown //IL_0092: Unknown result type (might be due to invalid IL or missing references) //IL_009c: Expected O, but got Unknown //IL_00a3: Unknown result type (might be due to invalid IL or missing references) //IL_00ad: Expected O, but got Unknown //IL_00b4: Unknown result type (might be due to invalid IL or missing references) //IL_00be: Expected O, but got Unknown //IL_00c5: Unknown result type (might be due to invalid IL or missing references) //IL_00cf: Expected O, but got Unknown //IL_00d6: Unknown result type (might be due to invalid IL or missing references) //IL_00e0: Expected O, but got Unknown //IL_00e7: Unknown result type (might be due to invalid IL or missing references) //IL_00f1: Expected O, but got Unknown ESConfig = new ConfigFile(Paths.ConfigPath + "\\com.Nuxlar.EntropyStages.cfg", true); riftChance = ESConfig.Bind<float>("General", "Rift Spawn Chance", 0.25f, "How likely is it for a void rift to appear?"); balanceToggle = ESConfig.Bind<bool>("General", "Toggle Stage Balancer", true, "Enable/Disable vanilla stage balancing tweaks."); if (balanceToggle.Value) { new StageBalancer(); } SetupVoidTear(); AddVoidStagesToPool(); Stage.Start += new hook_Start(Stage_Start); CombatDirector.Init += new hook_Init(CombatDirector_Init); ClassicStageInfo.Start += new hook_Start(ClassicStageInfo_Start); VoidSuppressorBehavior.Start += new hook_Start(VoidSuppressorBehavior_Start); EliteTierDef.GetRandomAvailableEliteDef += new hook_GetRandomAvailableEliteDef(EliteTierDef_GetRandomAvailableEliteDef); DestroyTimeCrystals.GenerateString += new hook_GenerateString(DestroyTimeCrystals_GenerateString); TeleporterInteraction.AttemptToSpawnAllEligiblePortals += new hook_AttemptToSpawnAllEligiblePortals(TeleporterInteraction_AttemptToSpawnAllEligiblePortals); } private void SetupVoidTear() { //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_0061: Expected O, but got Unknown //IL_00cf: Unknown result type (might be due to invalid IL or missing references) //IL_00e9: Unknown result type (might be due to invalid IL or missing references) //IL_00f4: Unknown result type (might be due to invalid IL or missing references) //IL_010d: Unknown result type (might be due to invalid IL or missing references) //IL_015a: Unknown result type (might be due to invalid IL or missing references) //IL_015f: Unknown result type (might be due to invalid IL or missing references) //IL_0170: Unknown result type (might be due to invalid IL or missing references) //IL_0175: Unknown result type (might be due to invalid IL or missing references) //IL_0186: Unknown result type (might be due to invalid IL or missing references) //IL_018b: Unknown result type (might be due to invalid IL or missing references) //IL_019c: Unknown result type (might be due to invalid IL or missing references) //IL_01a1: Unknown result type (might be due to invalid IL or missing references) tearPortal.GetComponent<GenericInteraction>().contextToken = "Enter ???"; tearPortal.GetComponent<SceneExitController>().destinationScene = voidPlains; tearPortal.GetComponent<SceneExitController>().useRunNextStageScene = false; foreach (Transform item in tearPortal.transform.GetChild(0)) { Transform val = item; if (((Object)val).name != "Collider") { Object.Destroy((Object)(object)((Component)val).gameObject); } } Transform transform = Object.Instantiate<GameObject>(tear, tearPortal.transform).transform; Object.Destroy((Object)(object)((Component)transform).GetComponent<ObjectScaleCurve>()); transform.localScale = new Vector3(0.75f, 0.75f, 0.75f); transform.localPosition = new Vector3(0f, 5f, 0f); transform.localRotation = Quaternion.identity; transform.Rotate(new Vector3(0f, 0f, 45f)); ((Object)iscVoidTear).name = "iscVoidTearNux"; ((SpawnCard)iscVoidTear).prefab = tearPortal; ((SpawnCard)iscVoidTear).sendOverNetwork = ((SpawnCard)deepVoidSpawnCard).sendOverNetwork; ((SpawnCard)iscVoidTear).hullSize = ((SpawnCard)deepVoidSpawnCard).hullSize; ((SpawnCard)iscVoidTear).nodeGraphType = ((SpawnCard)deepVoidSpawnCard).nodeGraphType; ((SpawnCard)iscVoidTear).requiredFlags = ((SpawnCard)deepVoidSpawnCard).requiredFlags; ((SpawnCard)iscVoidTear).forbiddenFlags = ((SpawnCard)deepVoidSpawnCard).forbiddenFlags; PrefabAPI.RegisterNetworkPrefab(tearPortal); } private void VoidSuppressorBehavior_Start(orig_Start orig, VoidSuppressorBehavior self) { orig.Invoke(self); self.numItemsToReveal = 3; self.itemsSuppressedPerPurchase = 3; } private void AddVoidStagesToPool() { List<SceneDef> obj = new List<SceneDef> { voidPlains }; List<SceneDef> list = new List<SceneDef> { voidAphelian, voidAqueduct }; List<SceneDef> list2 = new List<SceneDef> { voidRallypoint, voidMeadow }; List<SceneDef> list3 = new List<SceneDef> { voidAbyssal }; foreach (SceneDef item in obj) { item.destinationsGroup = sc2; } foreach (SceneDef item2 in list) { item2.destinationsGroup = sc3; } foreach (SceneDef item3 in list2) { item3.destinationsGroup = sc4; } foreach (SceneDef item4 in list3) { item4.destinationsGroup = sc5; } } private string DestroyTimeCrystals_GenerateString(orig_GenerateString orig, ObjectiveTracker self) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) Scene activeScene = SceneManager.GetActiveScene(); string name = ((Scene)(ref activeScene)).name; if (!voidStageNames.Contains(name)) { return orig.Invoke(self); } CrystalController crystalController = (CrystalController)(object)InstanceTracker.FindInstancesEnumerable(typeof(CrystalController)).First(); return string.Format(Language.GetString(self.baseToken), crystalController.crystalsKilled, crystalController.crystalsRequiredToKill); } private void CombatDirector_Init(orig_Init orig) { orig.Invoke(); if (EliteAPI.VanillaEliteTiers.Length > 2) { EliteTierDef obj = EliteAPI.VanillaEliteTiers[2]; List<EliteDef> list = obj.eliteTypes.ToList(); list.Add(voidElite); obj.eliteTypes = list.ToArray(); } if (EliteAPI.VanillaEliteTiers.Length > 1) { EliteTierDef obj2 = EliteAPI.VanillaEliteTiers[1]; List<EliteDef> list2 = obj2.eliteTypes.ToList(); list2.Add(voidElite); obj2.eliteTypes = list2.ToArray(); } } private EliteDef EliteTierDef_GetRandomAvailableEliteDef(orig_GetRandomAvailableEliteDef orig, EliteTierDef self, Xoroshiro128Plus rng) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) Scene activeScene = SceneManager.GetActiveScene(); string name = ((Scene)(ref activeScene)).name; EliteDef val = orig.Invoke(self, rng); if (!voidStageNames.Contains(name) && (Object)(object)val == (Object)(object)voidElite) { do { val = orig.Invoke(self, rng); } while (!((Object)(object)val != (Object)(object)voidElite)); return val; } return val; } private GameObject SpawnTear(TeleporterInteraction tpInteraction) { //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Unknown result type (might be due to invalid IL or missing references) //IL_0055: Expected O, but got Unknown //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_005a: Expected O, but got Unknown return DirectorCore.instance.TrySpawnObject(new DirectorSpawnRequest((SpawnCard)(object)iscVoidTear, new DirectorPlacementRule { minDistance = 10f, maxDistance = 40f, placementMode = (PlacementMode)1, position = ((Component)tpInteraction).transform.position, spawnOnTarget = ((Component)tpInteraction).transform }, tpInteraction.rng)); } private void TeleporterInteraction_AttemptToSpawnAllEligiblePortals(orig_AttemptToSpawnAllEligiblePortals orig, TeleporterInteraction self) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) Scene activeScene = SceneManager.GetActiveScene(); string name = ((Scene)(ref activeScene)).name; if (Random.value < riftChance.Value) { switch (name) { case "golemplains": { GameObject val = SpawnTear(self); if (Object.op_Implicit((Object)(object)val)) { val.GetComponent<SceneExitController>().destinationScene = voidPlains; } break; } case "goolake": { GameObject val = SpawnTear(self); if (Object.op_Implicit((Object)(object)val)) { val.GetComponent<SceneExitController>().destinationScene = voidAqueduct; } break; } case "ancientloft": { GameObject val = SpawnTear(self); if (Object.op_Implicit((Object)(object)val)) { val.GetComponent<SceneExitController>().destinationScene = voidAphelian; } break; } case "frozenwall": { GameObject val = SpawnTear(self); if (Object.op_Implicit((Object)(object)val)) { val.GetComponent<SceneExitController>().destinationScene = voidRallypoint; } break; } case "dampcave": { GameObject val = SpawnTear(self); if (Object.op_Implicit((Object)(object)val)) { val.GetComponent<SceneExitController>().destinationScene = voidAbyssal; } break; } case "skymeadow": { GameObject val = SpawnTear(self); if (Object.op_Implicit((Object)(object)val)) { val.GetComponent<SceneExitController>().destinationScene = voidMeadow; } break; } } } orig.Invoke(self); } private void ClassicStageInfo_Start(orig_Start orig, ClassicStageInfo self) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) Scene activeScene = SceneManager.GetActiveScene(); switch (((Scene)(ref activeScene)).name) { case "itgolemplains": self.sceneDirectorInteractibleCredits /= 4; self.sceneDirectorMonsterCredits = 100; break; case "itgoolake": self.sceneDirectorInteractibleCredits /= 4; self.sceneDirectorMonsterCredits = 150; break; case "itancientloft": self.sceneDirectorInteractibleCredits /= 4; self.sceneDirectorMonsterCredits = 150; break; case "itfrozenwall": self.sceneDirectorInteractibleCredits /= 4; self.sceneDirectorMonsterCredits = 175; break; case "itdampcave": self.sceneDirectorInteractibleCredits /= 4; self.sceneDirectorMonsterCredits = 200; break; case "itskymeadow": self.sceneDirectorInteractibleCredits /= 4; self.sceneDirectorMonsterCredits = 250; break; } orig.Invoke(self); } private void Stage_Start(orig_Start orig, Stage self) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_00bc: Unknown result type (might be due to invalid IL or missing references) //IL_00c6: Expected O, but got Unknown //IL_00d2: Unknown result type (might be due to invalid IL or missing references) //IL_00f0: Unknown result type (might be due to invalid IL or missing references) //IL_00f2: Unknown result type (might be due to invalid IL or missing references) //IL_012e: Unknown result type (might be due to invalid IL or missing references) //IL_0138: Expected O, but got Unknown //IL_0144: Unknown result type (might be due to invalid IL or missing references) //IL_0162: Unknown result type (might be due to invalid IL or missing references) //IL_0164: Unknown result type (might be due to invalid IL or missing references) //IL_01be: Unknown result type (might be due to invalid IL or missing references) //IL_01c3: Unknown result type (might be due to invalid IL or missing references) //IL_01d4: Unknown result type (might be due to invalid IL or missing references) //IL_01f4: Unknown result type (might be due to invalid IL or missing references) //IL_01f9: Unknown result type (might be due to invalid IL or missing references) //IL_01fd: Unknown result type (might be due to invalid IL or missing references) //IL_0208: Unknown result type (might be due to invalid IL or missing references) //IL_020a: Unknown result type (might be due to invalid IL or missing references) //IL_020c: Unknown result type (might be due to invalid IL or missing references) //IL_0211: Unknown result type (might be due to invalid IL or missing references) //IL_0234: Unknown result type (might be due to invalid IL or missing references) //IL_023b: Expected O, but got Unknown //IL_023e: Unknown result type (might be due to invalid IL or missing references) //IL_024d: Unknown result type (might be due to invalid IL or missing references) //IL_0252: Unknown result type (might be due to invalid IL or missing references) //IL_0267: Unknown result type (might be due to invalid IL or missing references) //IL_0271: Expected O, but got Unknown Scene activeScene = SceneManager.GetActiveScene(); string name = ((Scene)(ref activeScene)).name; if (voidStageNames.Contains(name)) { GameObject val = GameObject.Find("InfiniteTowerSceneDirector"); if (Object.op_Implicit((Object)(object)val)) { if (!Object.op_Implicit((Object)(object)val.GetComponent<DirectorCore>())) { val.AddComponent<DirectorCore>(); } if (((NetworkBehaviour)self).isServer) { val.AddComponent<CrystalController>(); SceneDirector component = val.GetComponent<SceneDirector>(); if (Object.op_Implicit((Object)(object)component)) { if (val.GetComponents<CombatDirector>().Length == 0) { CombatDirector val2 = val.AddComponent<CombatDirector>(); CombatDirector val3 = val.AddComponent<CombatDirector>(); val2.customName = "Director"; val2.minRerollSpawnInterval = 4.5f; val2.maxRerollSpawnInterval = 9f; val2.creditMultiplier = 1.075f; val2.onSpawnedServer = new OnSpawnedServer(); val2.moneyWaveIntervals = (RangeFloat[])(object)new RangeFloat[1] { new RangeFloat { min = 1f, max = 1f } }; val3.customName = "Director"; val3.minRerollSpawnInterval = 22.5f; val3.maxRerollSpawnInterval = 30f; val3.creditMultiplier = 1.075f; val3.onSpawnedServer = new OnSpawnedServer(); val3.moneyWaveIntervals = (RangeFloat[])(object)new RangeFloat[1] { new RangeFloat { min = 1f, max = 1f } }; val2.Awake(); val3.Awake(); ((Behaviour)val2).enabled = true; ((Behaviour)val3).enabled = true; component.PopulateScene(); component.teleporterSpawnCard = teleporterSpawnCard; component.PlaceTeleporter(); } if (!Object.op_Implicit((Object)(object)TeleporterInteraction.instance)) { return; } Vector3 position = ((Component)TeleporterInteraction.instance).transform.position; NodeGraph nodeGraph = SceneInfo.instance.GetNodeGraph((GraphType)0); Vector3 val4 = default(Vector3); foreach (NodeIndex item in nodeGraph.FindNodesInRangeWithFlagConditions(position, 0f, 50f, (HullMask)1, (NodeFlags)0, (NodeFlags)4, false)) { if (nodeGraph.GetNodePosition(item, ref val4)) { SpawnPoint.AddSpawnPoint(val4, Quaternion.LookRotation(position, Vector3.up)); } } DirectorPlacementRule val5 = new DirectorPlacementRule(); val5.placementMode = (PlacementMode)4; DirectorCore.instance.TrySpawnObject(new DirectorSpawnRequest(Addressables.LoadAssetAsync<SpawnCard>((object)"RoR2/DLC1/VoidSuppressor/iscVoidSuppressor.asset").WaitForCompletion(), val5, Run.instance.stageRng)); } } if (!Object.op_Implicit((Object)(object)TeleporterInteraction.instance)) { return; } ChildLocator component2 = ((Component)((Component)TeleporterInteraction.instance).GetComponent<ModelLocator>().modelTransform).GetComponent<ChildLocator>(); if (!Object.op_Implicit((Object)(object)component2)) { return; } ((Component)component2.FindChild("TimeCrystalProps")).gameObject.SetActive(true); ((Component)component2.FindChild("TimeCrystalBeaconBlocker")).gameObject.SetActive(true); } } orig.Invoke(self); } } [RequireComponent(typeof(MeshFilter))] public class ReverseNormals : MonoBehaviour { private void Start() { //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Unknown result type (might be due to invalid IL or missing references) Component component = ((Component)this).GetComponent(typeof(MeshFilter)); MeshFilter val = (MeshFilter)(object)((component is MeshFilter) ? component : null); if ((Object)(object)val != (Object)null) { Mesh mesh = val.mesh; Vector3[] normals = mesh.normals; for (int i = 0; i < normals.Length; i++) { normals[i] = -normals[i]; } mesh.normals = normals; for (int j = 0; j < mesh.subMeshCount; j++) { int[] triangles = mesh.GetTriangles(j); for (int k = 0; k < triangles.Length; k += 3) { int num = triangles[k]; triangles[k] = triangles[k + 1]; triangles[k + 1] = num; } mesh.SetTriangles(triangles, j); } } ((Component)this).GetComponent<MeshCollider>().sharedMesh = val.mesh; } } public class StageBalancer : MonoBehaviour { private SkillDef AWUUlt = Addressables.LoadAssetAsync<SkillDef>((object)"RoR2/Base/RoboBallBoss/SuperFireDelayKnockup.asset").WaitForCompletion(); private SpawnCard categoryChest2Healing = Addressables.LoadAssetAsync<SpawnCard>((object)"RoR2/DLC1/CategoryChest2/iscCategoryChest2Healing.asset").WaitForCompletion(); private SpawnCard categoryChest2Damage = Addressables.LoadAssetAsync<SpawnCard>((object)"RoR2/DLC1/CategoryChest2/iscCategoryChest2Damage.asset").WaitForCompletion(); private SpawnCard larva = Addressables.LoadAssetAsync<SpawnCard>((object)"RoR2/DLC1/AcidLarva/cscAcidLarva.asset").WaitForCompletion(); private SpawnCard vulture = Addressables.LoadAssetAsync<SpawnCard>((object)"RoR2/Base/Vulture/cscVulture.asset").WaitForCompletion(); private SpawnCard probe = Addressables.LoadAssetAsync<SpawnCard>((object)"RoR2/Base/RoboBallBoss/cscRoboBallMini.asset").WaitForCompletion(); private SpawnCard alphaConstruct = Addressables.LoadAssetAsync<SpawnCard>((object)"RoR2/DLC1/MajorAndMinorConstruct/cscMinorConstruct.asset").WaitForCompletion(); private SpawnCard apothecary = Addressables.LoadAssetAsync<SpawnCard>((object)"RoR2/DLC1/ClayGrenadier/cscClayGrenadier.asset").WaitForCompletion(); private SpawnCard templar = Addressables.LoadAssetAsync<SpawnCard>((object)"RoR2/Base/ClayBruiser/cscClayBruiser.asset").WaitForCompletion(); private SpawnCard lemurian = Addressables.LoadAssetAsync<SpawnCard>((object)"RoR2/Base/Lemurian/cscLemurian.asset").WaitForCompletion(); private SpawnCard vermin = Addressables.LoadAssetAsync<SpawnCard>((object)"RoR2/DLC1/Vermin/cscVermin.asset").WaitForCompletion(); private SpawnCard hermitCrab = Addressables.LoadAssetAsync<SpawnCard>((object)"RoR2/Base/HermitCrab/cscHermitCrab.asset").WaitForCompletion(); private SpawnCard grovetender = Addressables.LoadAssetAsync<SpawnCard>((object)"RoR2/Base/Gravekeeper/cscGravekeeper.asset").WaitForCompletion(); private SpawnCard xiConstruct = Addressables.LoadAssetAsync<SpawnCard>((object)"RoR2/DLC1/MajorAndMinorConstruct/cscMegaConstruct.asset").WaitForCompletion(); private SpawnCard magmaWorm = Addressables.LoadAssetAsync<SpawnCard>((object)"RoR2/Base/MagmaWorm/cscMagmaWorm.asset").WaitForCompletion(); private DirectorCardCategorySelection aqueductMonsters = Addressables.LoadAssetAsync<DirectorCardCategorySelection>((object)"RoR2/Base/goolake/dccsGooLakeMonstersDLC1.asset").WaitForCompletion(); private DirectorCardCategorySelection rpdMonsters = Addressables.LoadAssetAsync<DirectorCardCategorySelection>((object)"RoR2/Base/frozenwall/dccsFrozenWallMonstersDLC1.asset").WaitForCompletion(); private DirectorCardCategorySelection poolsMonsters = Addressables.LoadAssetAsync<DirectorCardCategorySelection>((object)"RoR2/DLC1/sulfurpools/dccsSulfurPoolsMonstersDLC1.asset").WaitForCompletion(); private DirectorCardCategorySelection acresMonsters = Addressables.LoadAssetAsync<DirectorCardCategorySelection>((object)"RoR2/Base/wispgraveyard/dccsWispGraveyardMonstersDLC1.asset").WaitForCompletion(); private DirectorCardCategorySelection sirensMonsters = Addressables.LoadAssetAsync<DirectorCardCategorySelection>((object)"RoR2/Base/shipgraveyard/dccsShipgraveyardMonstersDLC1.asset").WaitForCompletion(); private DirectorCardCategorySelection abyssalMonsters = Addressables.LoadAssetAsync<DirectorCardCategorySelection>((object)"RoR2/Base/dampcave/dccsDampCaveMonstersDLC1.asset").WaitForCompletion(); private DirectorCardCategorySelection groveMonsters = Addressables.LoadAssetAsync<DirectorCardCategorySelection>((object)"RoR2/Base/rootjungle/dccsRootJungleMonstersDLC1.asset").WaitForCompletion(); private DirectorCardCategorySelection meadowMonsters = Addressables.LoadAssetAsync<DirectorCardCategorySelection>((object)"RoR2/Base/skymeadow/dccsSkyMeadowMonstersDLC1.asset").WaitForCompletion(); private DirectorCardCategorySelection forestInteractables = Addressables.LoadAssetAsync<DirectorCardCategorySelection>((object)"RoR2/DLC1/snowyforest/dccsSnowyForestInteractablesDLC1.asset").WaitForCompletion(); private DirectorCardCategorySelection plainsInteractables = Addressables.LoadAssetAsync<DirectorCardCategorySelection>((object)"RoR2/Base/golemplains/dccsGolemplainsInteractablesDLC1.asset").WaitForCompletion(); private DirectorCardCategorySelection bbInteractables = Addressables.LoadAssetAsync<DirectorCardCategorySelection>((object)"RoR2/Base/blackbeach/dccsBlackBeachInteractablesDLC1.asset").WaitForCompletion(); private DirectorCardCategorySelection aphelianInteractables = Addressables.LoadAssetAsync<DirectorCardCategorySelection>((object)"RoR2/DLC1/ancientloft/dccsAncientLoftInteractablesDLC1.asset").WaitForCompletion(); private DirectorCardCategorySelection aqueductInteractables = Addressables.LoadAssetAsync<DirectorCardCategorySelection>((object)"RoR2/Base/goolake/dccsGooLakeInteractablesDLC1.asset").WaitForCompletion(); private DirectorCardCategorySelection wetlandInteractables = Addressables.LoadAssetAsync<DirectorCardCategorySelection>((object)"RoR2/Base/foggyswamp/dccsFoggySwampInteractablesDLC1.asset").WaitForCompletion(); private DirectorCardCategorySelection acresInteractables = Addressables.LoadAssetAsync<DirectorCardCategorySelection>((object)"RoR2/Base/wispgraveyard/dccsWispGraveyardInteractablesDLC1.asset").WaitForCompletion(); private DirectorCardCategorySelection poolsInteractables = Addressables.LoadAssetAsync<DirectorCardCategorySelection>((object)"RoR2/DLC1/sulfurpools/dccsSulfurPoolsInteractablesDLC1.asset").WaitForCompletion(); private DirectorCardCategorySelection rpdInteractables = Addressables.LoadAssetAsync<DirectorCardCategorySelection>((object)"RoR2/Base/frozenwall/dccsFrozenWallInteractablesDLC1.asset").WaitForCompletion(); private DirectorCardCategorySelection sirensInteractables = Addressables.LoadAssetAsync<DirectorCardCategorySelection>((object)"RoR2/Base/shipgraveyard/dccsShipgraveyardInteractablesDLC1.asset").WaitForCompletion(); private DirectorCardCategorySelection groveInteractables = Addressables.LoadAssetAsync<DirectorCardCategorySelection>((object)"RoR2/Base/rootjungle/dccsRootJungleInteractablesDLC1.asset").WaitForCompletion(); private DirectorCardCategorySelection abyssalInteractables = Addressables.LoadAssetAsync<DirectorCardCategorySelection>((object)"RoR2/Base/dampcave/dccsDampCaveInteractablesDLC1.asset").WaitForCompletion(); public StageBalancer() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_004e: Unknown result type (might be due to invalid IL or missing references) //IL_0053: Unknown result type (might be due to invalid IL or missing references) //IL_0066: Unknown result type (might be due to invalid IL or missing references) //IL_006b: Unknown result type (might be due to invalid IL or missing references) //IL_007e: Unknown result type (might be due to invalid IL or missing references) //IL_0083: Unknown result type (might be due to invalid IL or missing references) //IL_0096: Unknown result type (might be due to invalid IL or missing references) //IL_009b: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: Unknown result type (might be due to invalid IL or missing references) //IL_00b3: Unknown result type (might be due to invalid IL or missing references) //IL_00c6: Unknown result type (might be due to invalid IL or missing references) //IL_00cb: Unknown result type (might be due to invalid IL or missing references) //IL_00de: Unknown result type (might be due to invalid IL or missing references) //IL_00e3: Unknown result type (might be due to invalid IL or missing references) //IL_00f6: Unknown result type (might be due to invalid IL or missing references) //IL_00fb: Unknown result type (might be due to invalid IL or missing references) //IL_010e: Unknown result type (might be due to invalid IL or missing references) //IL_0113: Unknown result type (might be due to invalid IL or missing references) //IL_0126: Unknown result type (might be due to invalid IL or missing references) //IL_012b: Unknown result type (might be due to invalid IL or missing references) //IL_013e: Unknown result type (might be due to invalid IL or missing references) //IL_0143: Unknown result type (might be due to invalid IL or missing references) //IL_0156: Unknown result type (might be due to invalid IL or missing references) //IL_015b: Unknown result type (might be due to invalid IL or missing references) //IL_016e: Unknown result type (might be due to invalid IL or missing references) //IL_0173: Unknown result type (might be due to invalid IL or missing references) //IL_0186: Unknown result type (might be due to invalid IL or missing references) //IL_018b: Unknown result type (might be due to invalid IL or missing references) //IL_019e: Unknown result type (might be due to invalid IL or missing references) //IL_01a3: Unknown result type (might be due to invalid IL or missing references) //IL_01b6: Unknown result type (might be due to invalid IL or missing references) //IL_01bb: Unknown result type (might be due to invalid IL or missing references) //IL_01ce: Unknown result type (might be due to invalid IL or missing references) //IL_01d3: Unknown result type (might be due to invalid IL or missing references) //IL_01e6: Unknown result type (might be due to invalid IL or missing references) //IL_01eb: Unknown result type (might be due to invalid IL or missing references) //IL_01fe: Unknown result type (might be due to invalid IL or missing references) //IL_0203: Unknown result type (might be due to invalid IL or missing references) //IL_0216: Unknown result type (might be due to invalid IL or missing references) //IL_021b: Unknown result type (might be due to invalid IL or missing references) //IL_022e: Unknown result type (might be due to invalid IL or missing references) //IL_0233: Unknown result type (might be due to invalid IL or missing references) //IL_0246: Unknown result type (might be due to invalid IL or missing references) //IL_024b: Unknown result type (might be due to invalid IL or missing references) //IL_025e: Unknown result type (might be due to invalid IL or missing references) //IL_0263: Unknown result type (might be due to invalid IL or missing references) //IL_0276: Unknown result type (might be due to invalid IL or missing references) //IL_027b: Unknown result type (might be due to invalid IL or missing references) //IL_028e: Unknown result type (might be due to invalid IL or missing references) //IL_0293: Unknown result type (might be due to invalid IL or missing references) //IL_02a6: Unknown result type (might be due to invalid IL or missing references) //IL_02ab: Unknown result type (might be due to invalid IL or missing references) //IL_02be: Unknown result type (might be due to invalid IL or missing references) //IL_02c3: Unknown result type (might be due to invalid IL or missing references) //IL_02d6: Unknown result type (might be due to invalid IL or missing references) //IL_02db: Unknown result type (might be due to invalid IL or missing references) //IL_02ee: Unknown result type (might be due to invalid IL or missing references) //IL_02f3: Unknown result type (might be due to invalid IL or missing references) //IL_0306: Unknown result type (might be due to invalid IL or missing references) //IL_030b: Unknown result type (might be due to invalid IL or missing references) //IL_031e: Unknown result type (might be due to invalid IL or missing references) //IL_0323: Unknown result type (might be due to invalid IL or missing references) //IL_0336: Unknown result type (might be due to invalid IL or missing references) //IL_033b: Unknown result type (might be due to invalid IL or missing references) //IL_0361: Unknown result type (might be due to invalid IL or missing references) //IL_036b: Expected O, but got Unknown //IL_0372: Unknown result type (might be due to invalid IL or missing references) //IL_037c: Expected O, but got Unknown //IL_0383: Unknown result type (might be due to invalid IL or missing references) //IL_038d: Expected O, but got Unknown //IL_0394: Unknown result type (might be due to invalid IL or missing references) //IL_039e: Expected O, but got Unknown //IL_03a5: Unknown result type (might be due to invalid IL or missing references) //IL_03af: Expected O, but got Unknown //IL_03b6: Unknown result type (might be due to invalid IL or missing references) //IL_03c0: Expected O, but got Unknown AWUUlt.beginSkillCooldownOnSkillEnd = true; Stage.Start += new hook_Start(Stage_Start); ClassicStageInfo.Start += new hook_Start(ClassicStageInfo_Start); TimedChestController.OnEnable += new hook_OnEnable(TimedChestController_OnEnable); GoldshoresMissionController.Start += new hook_Start(GoldshoresMissionController_Start); MoonBatteryMissionController.Awake += new hook_Awake(MoonBatteryMissionController_Awake); VoidStageMissionController.Start += new hook_Start(VoidStageMissionController_Start); ChangeCatChest(forestInteractables, categoryChest2Healing, "iscCategoryChest2Damage"); ChangeCatChest(plainsInteractables, categoryChest2Damage, "iscCategoryChest2Healing"); AddMiniboss(aqueductMonsters, templar); ChangeCatChest(aqueductInteractables, categoryChest2Healing, "iscCategoryChest2Damage"); ChangeCatChest(wetlandInteractables, categoryChest2Damage, "iscCategoryChest2Healing"); RemoveAphelianChest(); ChangeEnemy(rpdMonsters, alphaConstruct, "cscVerminSnowy"); ChangeEnemy(poolsMonsters, hermitCrab, "cscMinorConstruct"); ChangeEnemy(acresMonsters, lemurian, "cscBeetle"); ChangeMiniboss(acresMonsters, apothecary, "cscBeetleGuard"); ChangeBoss(poolsMonsters, magmaWorm, "cscMegaConstruct"); ChangeBoss(rpdMonsters, xiConstruct, "cscClayBoss"); ChangeCatChest(acresInteractables, categoryChest2Healing, "iscCategoryChest2Damage"); ChangeCatChest(poolsInteractables, categoryChest2Damage, "iscCategoryChest2Healing"); AcresBarrelIncrease(); PoolsBarrelDecrease(); ChangeEnemy(sirensMonsters, lemurian, "cscAcidLarva"); ChangeEnemy(groveMonsters, alphaConstruct, "cscAcidLarva"); ChangeEnemy(abyssalMonsters, larva, "cscHermitCrab"); ChangeBoss(groveMonsters, grovetender, "cscClayBoss"); ChangeBoss(groveMonsters, xiConstruct, "cscVagrant"); ChangeCatChest(abyssalInteractables, categoryChest2Healing, "iscCategoryChest2Damage"); ChangeCatChest(sirensInteractables, categoryChest2Damage, "iscCategoryChest2Healing"); BalanceSirenGrove(); SirensDroneShrineDecrease(); ChangeEnemy(meadowMonsters, vulture, "cscMinorConstruct"); ChangeBoss(meadowMonsters, magmaWorm, "cscMegaConstruct"); } private void InspectMonsters(DirectorCardCategorySelection dccs) { //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) for (int i = 0; i < dccs.categories.Length; i++) { Category val = dccs.categories[i]; Debug.LogWarning((object)val.name); Debug.LogWarning((object)"--------------------------------------"); DirectorCard[] cards = val.cards; for (int j = 0; j < cards.Length; j++) { Debug.LogWarning((object)((Object)cards[j].spawnCard).name); } } } private void GoldshoresMissionController_Start(orig_Start orig, GoldshoresMissionController self) { self.beaconsToSpawnOnMap = 4; orig.Invoke(self); } private void VoidStageMissionController_Start(orig_Start orig, VoidStageMissionController self) { self.batteryCount = 2; orig.Invoke(self); } private void MoonBatteryMissionController_Awake(orig_Awake orig, MoonBatteryMissionController self) { orig.Invoke(self); self._numRequiredBatteries = 2; } private void Stage_Start(orig_Start orig, Stage self) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) Scene activeScene = SceneManager.GetActiveScene(); if (((Scene)(ref activeScene)).name == "blackbeach") { GameObject val = GameObject.Find("HOLDER: Preplaced Objects"); if (Object.op_Implicit((Object)(object)val) && !((Component)val.transform.GetChild(0)).gameObject.activeSelf && !((Component)val.transform.GetChild(1)).gameObject.activeSelf && !((Component)val.transform.GetChild(2)).gameObject.activeSelf) { Debug.Log((object)"StageBalancer: Manually activating random newt altar"); ((Component)val.transform.GetChild(Random.Range(0, 2))).gameObject.SetActive(true); } } orig.Invoke(self); } private void ClassicStageInfo_Start(orig_Start orig, ClassicStageInfo self) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) Scene activeScene = SceneManager.GetActiveScene(); string name = ((Scene)(ref activeScene)).name; switch (name) { case "golemplains": case "golemplains2": case "blackbeach": case "blackbeach2": self.sceneDirectorInteractibleCredits = 230; break; } if (name == "snowyforest") { self.sceneDirectorInteractibleCredits = 290; } if (name == "foggyswamp") { self.sceneDirectorInteractibleCredits = 320; } if (name == "shipgraveyard" || name == "rootjungle") { self.sceneDirectorInteractibleCredits = 430; } if (name == "dampcavesimple" && self.bonusInteractibleCreditObjects != null) { Debug.Log((object)"StageBalancer: Adjusting extra abyssal credits"); for (int i = 0; i < self.bonusInteractibleCreditObjects.Length; i++) { self.bonusInteractibleCreditObjects[i].points /= 2; } } orig.Invoke(self); } private void TimedChestController_OnEnable(orig_OnEnable orig, TimedChestController self) { self.lockTime = 720f; orig.Invoke(self); } private void ChangeCatChest(DirectorCardCategorySelection dccs, SpawnCard newChest, string chestName) { //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_0045: Expected O, but got Unknown //IL_0045: Unknown result type (might be due to invalid IL or missing references) for (int i = 0; i < dccs.categories.Length; i++) { Category val = dccs.categories[i]; if (!(val.name == "Chests")) { continue; } List<DirectorCard> list = new List<DirectorCard>(); list.Add(new DirectorCard { spawnCard = newChest, selectionWeight = 3 }); DirectorCard[] cards = val.cards; foreach (DirectorCard val2 in cards) { if (((Object)val2.spawnCard).name != chestName) { list.Add(val2); } } dccs.categories[i].cards = list.ToArray(); } } private void ChangeEnemy(DirectorCardCategorySelection dccs, SpawnCard newEnemy, string enemyName) { //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_005d: Unknown result type (might be due to invalid IL or missing references) //IL_0062: Unknown result type (might be due to invalid IL or missing references) //IL_0069: Unknown result type (might be due to invalid IL or missing references) //IL_007b: Expected O, but got Unknown for (int i = 0; i < dccs.categories.Length; i++) { Category val = dccs.categories[i]; if (!(val.name == "Basic Monsters")) { continue; } List<DirectorCard> list = new List<DirectorCard>(); DirectorCard[] cards = val.cards; foreach (DirectorCard val2 in cards) { if (((Object)val2.spawnCard).name != enemyName) { list.Add(val2); continue; } list.Add(new DirectorCard { spawnCard = newEnemy, selectionWeight = val2.selectionWeight }); } dccs.categories[i].cards = list.ToArray(); } } private void AddMiniboss(DirectorCardCategorySelection dccs, SpawnCard newEnemy) { //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_0045: Expected O, but got Unknown //IL_0045: Unknown result type (might be due to invalid IL or missing references) for (int i = 0; i < dccs.categories.Length; i++) { Category val = dccs.categories[i]; if (val.name == "Minibosses") { List<DirectorCard> list = new List<DirectorCard>(); list.Add(new DirectorCard { spawnCard = newEnemy, selectionWeight = 1 }); DirectorCard[] cards = val.cards; foreach (DirectorCard item in cards) { list.Add(item); } dccs.categories[i].cards = list.ToArray(); } } } private void ChangeMiniboss(DirectorCardCategorySelection dccs, SpawnCard newEnemy, string enemyName) { //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_005d: Unknown result type (might be due to invalid IL or missing references) //IL_0062: Unknown result type (might be due to invalid IL or missing references) //IL_0069: Unknown result type (might be due to invalid IL or missing references) //IL_007b: Expected O, but got Unknown for (int i = 0; i < dccs.categories.Length; i++) { Category val = dccs.categories[i]; if (!(val.name == "Minibosses")) { continue; } List<DirectorCard> list = new List<DirectorCard>(); DirectorCard[] cards = val.cards; foreach (DirectorCard val2 in cards) { if (((Object)val2.spawnCard).name != enemyName) { list.Add(val2); continue; } list.Add(new DirectorCard { spawnCard = newEnemy, selectionWeight = val2.selectionWeight }); } dccs.categories[i].cards = list.ToArray(); } } private void ChangeBoss(DirectorCardCategorySelection dccs, SpawnCard newBoss, string bossName) { //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_005d: Unknown result type (might be due to invalid IL or missing references) //IL_0062: Unknown result type (might be due to invalid IL or missing references) //IL_0069: Unknown result type (might be due to invalid IL or missing references) //IL_007b: Expected O, but got Unknown for (int i = 0; i < dccs.categories.Length; i++) { Category val = dccs.categories[i]; if (!(val.name == "Champions")) { continue; } List<DirectorCard> list = new List<DirectorCard>(); DirectorCard[] cards = val.cards; foreach (DirectorCard val2 in cards) { if (((Object)val2.spawnCard).name != bossName) { list.Add(val2); continue; } list.Add(new DirectorCard { spawnCard = newBoss, selectionWeight = val2.selectionWeight }); } dccs.categories[i].cards = list.ToArray(); } } private void RemoveAphelianChest() { //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Unknown result type (might be due to invalid IL or missing references) for (int i = 0; i < aphelianInteractables.categories.Length; i++) { Category val = aphelianInteractables.categories[i]; if (!(val.name == "Chests")) { continue; } List<DirectorCard> list = new List<DirectorCard>(); DirectorCard[] cards = val.cards; foreach (DirectorCard val2 in cards) { if (((Object)val2.spawnCard).name != "iscLunarChest") { list.Add(val2); } } aphelianInteractables.categories[i].cards = list.ToArray(); } } private void AcresBarrelIncrease() { //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_0016: Unknown result type (might be due to invalid IL or missing references) for (int i = 0; i < acresInteractables.categories.Length; i++) { Category val = acresInteractables.categories[i]; if (val.name == "Barrels") { val.selectionWeight *= 1.2f; } } } private void PoolsBarrelDecrease() { //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_0016: Unknown result type (might be due to invalid IL or missing references) for (int i = 0; i < poolsInteractables.categories.Length; i++) { Category val = poolsInteractables.categories[i]; if (val.name == "Barrels") { val.selectionWeight *= 0.6f; } } } private void RPDDroneDecrease() { //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_0016: Unknown result type (might be due to invalid IL or missing references) for (int i = 0; i < rpdInteractables.categories.Length; i++) { Category val = rpdInteractables.categories[i]; if (val.name == "Drones") { val.selectionWeight /= 2f; } } } private void SirensDroneShrineDecrease() { //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_0016: 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) for (int i = 0; i < sirensInteractables.categories.Length; i++) { Category val = sirensInteractables.categories[i]; if (val.name == "Drones" || val.name == "Shrines") { val.selectionWeight /= 2f; } } } private void BalanceSirenGrove() { //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Unknown result type (might be due to invalid IL or missing references) //IL_010e: Unknown result type (might be due to invalid IL or missing references) //IL_0113: Unknown result type (might be due to invalid IL or missing references) //IL_0115: Unknown result type (might be due to invalid IL or missing references) //IL_012b: Unknown result type (might be due to invalid IL or missing references) for (int i = 0; i < sirensInteractables.categories.Length; i++) { Category val = sirensInteractables.categories[i]; if (!(val.name == "Chests")) { continue; } DirectorCard[] cards = val.cards; foreach (DirectorCard val2 in cards) { if (((Object)val2.spawnCard).name == "iscChest1" || ((Object)val2.spawnCard).name == "iscChest2") { val2.selectionWeight -= (int)Math.Round((double)val2.selectionWeight * 0.1); } if (((Object)val2.spawnCard).name == "iscTripleShopLarge") { val2.selectionWeight += (int)Math.Round((double)val2.selectionWeight * 0.2); } } } for (int k = 0; k < groveInteractables.categories.Length; k++) { Category val3 = groveInteractables.categories[k]; if (!(val3.name == "Chests")) { continue; } DirectorCard[] cards = val3.cards; foreach (DirectorCard val4 in cards) { if (((Object)val4.spawnCard).name == "iscChest1" || ((Object)val4.spawnCard).name == "iscChest2") { val4.selectionWeight -= (int)Math.Round((double)val4.selectionWeight * 0.1); } if (((Object)val4.spawnCard).name == "iscCasinoChest") { val4.selectionWeight += (int)Math.Round((double)val4.selectionWeight * 0.3); } } } } } }