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 LoaderTrials v1.0.1
LoaderTrials.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 HG; using Microsoft.CodeAnalysis; using On.RoR2; using On.RoR2.UI; using R2API; using R2API.Utils; using RoR2; using RoR2.ConVar; using RoR2.ExpansionManagement; using RoR2.Navigation; using RoR2.UI; using UnityEngine; using UnityEngine.AddressableAssets; using UnityEngine.Events; using UnityEngine.Networking; using UnityEngine.UI; [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("LoaderTrials")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("LoaderTrials")] [assembly: AssemblyTitle("LoaderTrials")] [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 LoaderTrials { public class GameMode { public class LoaderRunButton : MonoBehaviour { [Serializable] [CompilerGenerated] private sealed class <>c { public static readonly <>c <>9 = new <>c(); public static UnityAction <>9__1_0; internal void <Start>b__1_0() { Util.PlaySound("Play_UI_menuClick", ((Component)RoR2Application.instance).gameObject); Console.instance.SubmitCmd((NetworkUser)null, "transition_command \"gamemode xLoaderRun; host 0; \"", false); } } public HGButton hgButton; public void Start() { //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Expected O, but got Unknown //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_0040: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Expected O, but got Unknown hgButton = ((Component)this).GetComponent<HGButton>(); ((Button)hgButton).onClick = new ButtonClickedEvent(); ButtonClickedEvent onClick = ((Button)hgButton).onClick; object obj = <>c.<>9__1_0; if (obj == null) { UnityAction val = delegate { Util.PlaySound("Play_UI_menuClick", ((Component)RoR2Application.instance).gameObject); Console.instance.SubmitCmd((NetworkUser)null, "transition_command \"gamemode xLoaderRun; host 0; \"", false); }; <>c.<>9__1_0 = val; obj = (object)val; } ((UnityEvent)onClick).AddListener((UnityAction)obj); } } public class LoaderRunButtonAdder : MonoBehaviour { public void Start() { GameObject obj = Object.Instantiate<GameObject>(((Component)((Component)this).transform.Find("GenericMenuButton (Eclipse)")).gameObject, ((Component)this).transform); obj.AddComponent<LoaderRunButton>(); obj.GetComponent<LanguageTextMeshController>().token = "Loader Trials"; obj.GetComponent<HGButton>().hoverToken = "Play a gamemode that tests your abilities as The Loader."; } } public class LavaController : MonoBehaviour { private CharacterBody body; private float delay = 5f; private float stopwatch; private void Start() { body = ((Component)this).gameObject.GetComponent<CharacterBody>(); } private void FixedUpdate() { //IL_0040: Unknown result type (might be due to invalid IL or missing references) //IL_0045: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_005c: Expected O, but got Unknown stopwatch += Time.deltaTime; if (!((double)stopwatch < (double)delay) && body.characterMotor.isGrounded) { body.healthComponent.TakeDamage(new DamageInfo { damage = 5f, rejected = false }); } } } public class PortalCollision : MonoBehaviour { public GameObject effectPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/moon/MoonExitArenaOrbEffect.prefab").WaitForCompletion(); private void OnTriggerEnter(Collider other) { //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_0044: Expected O, but got Unknown CharacterBody component = ((Component)other).GetComponent<CharacterBody>(); if (!Object.op_Implicit((Object)(object)component) && ((Object)component).name != "LoaderBody(Clone)") { return; } EffectManager.SpawnEffect(effectPrefab, new EffectData { origin = ((Component)this).transform.position }, false); Object.Destroy((Object)(object)((Component)this).gameObject); LoaderRun component2 = ((Component)Run.instance).gameObject.GetComponent<LoaderRun>(); if (component2.portalsPassed == component2.portalsRequiredToPass - 1) { if (Run.instance.stageClearCount == 2) { Run.instance.BeginGameOver(loaderRunEnding); return; } Run.instance.PickNextStageSceneFromCurrentSceneDestinations(); Run.instance.AdvanceStage(Run.instance.nextStageScene); } } } public class LoaderRun : Run { public SpawnCard portalSpawnCard = ScriptableObject.CreateInstance<SpawnCard>(); public GameObject portalPrefab = loaderRunPortal; public string trial; private List<string> trialList = new List<string> { "portal", "punch", "lava" }; private bool activatedIndicators; public uint portalCount = 6u; public uint portalsRequiredToPass = 6u; private List<OnDestroyCallback> portalActiveList = new List<OnDestroyCallback>(); public int enemyCount; public uint portalsPassed => (uint)(portalCount - portalActiveList.Count); public override void Start() { SceneDirector.onPrePopulateSceneServer += onPrePopulateSceneServer; SceneDirector.onPostPopulateSceneServer += onPostPopulateSceneServer; Reflection.GetFieldValue<BoolConVar>(typeof(CombatDirector), "cvDirectorCombatDisable").SetBool(true); ((Run)this).Start(); CreateSpawnCard(); ObjectivePanelController.collectObjectiveSources += ReportObjective; } public override void FixedUpdate() { ((Run)this).FixedUpdate(); if (!activatedIndicators) { activatedIndicators = true; AddIndicators(); if (trial == "portal" || trial == "lava") { AddPortalIndicators(); } } } public override void OnDestroy() { ((Run)this).OnDestroy(); SceneDirector.onPrePopulateSceneServer -= onPrePopulateSceneServer; SceneDirector.onPostPopulateSceneServer -= onPostPopulateSceneServer; ObjectivePanelController.collectObjectiveSources -= ReportObjective; Reflection.GetFieldValue<BoolConVar>(typeof(CombatDirector), "cvDirectorCombatDisable").SetBool(false); } private void CreateSpawnCard() { //IL_0018: 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_0030: Unknown result type (might be due to invalid IL or missing references) //IL_003c: Unknown result type (might be due to invalid IL or missing references) portalSpawnCard.prefab = portalPrefab; portalSpawnCard.hullSize = (HullClassification)0; portalSpawnCard.nodeGraphType = (GraphType)1; portalSpawnCard.requiredFlags = (NodeFlags)0; portalSpawnCard.forbiddenFlags = (NodeFlags)4; } private void AddPortalIndicators() { List<GameObject> list = new List<GameObject>(); GameObject[] array = Resources.FindObjectsOfTypeAll(typeof(GameObject)) as GameObject[]; foreach (GameObject val in array) { if (((Object)val).name == "LoaderRunPortal(Clone)") { list.Add(val); } } foreach (GameObject item in list) { Object.Instantiate<GameObject>(positionIndicator, item.transform).GetComponent<PositionIndicator>().targetTransform = item.transform; } } private void AddIndicators() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0016: Unknown result type (might be due to invalid IL or missing references) TeamIndex val = (TeamIndex)2; TeamComponent[] array = Object.FindObjectsOfType<TeamComponent>(); foreach (TeamComponent val2 in array) { if (val2.teamIndex == val) { val2.RequestDefaultIndicator(positionIndicator); } } } public void onPrePopulateSceneServer(SceneDirector director) { //IL_00ec: Unknown result type (might be due to invalid IL or missing references) //IL_00f2: Expected O, but got Unknown //IL_00f4: Unknown result type (might be due to invalid IL or missing references) //IL_0116: Unknown result type (might be due to invalid IL or missing references) //IL_0120: Expected O, but got Unknown //IL_0069: Unknown result type (might be due to invalid IL or missing references) //IL_006f: Expected O, but got Unknown //IL_0071: Unknown result type (might be due to invalid IL or missing references) //IL_0092: Unknown result type (might be due to invalid IL or missing references) //IL_009c: Expected O, but got Unknown activatedIndicators = false; director.teleporterSpawnCard = null; director.interactableCredit = 0; trial = trialList.ElementAt(Run.instance.stageClearCount); switch (trial) { case "lava": { director.monsterCredit = 0; DirectorPlacementRule val2 = new DirectorPlacementRule(); val2.placementMode = (PlacementMode)4; for (int j = 0; j < portalCount; j++) { portalActiveList.Add(OnDestroyCallback.AddCallback(DirectorCore.instance.TrySpawnObject(new DirectorSpawnRequest(portalSpawnCard, val2, base.stageRng)), (Action<OnDestroyCallback>)delegate(OnDestroyCallback component) { portalActiveList.Remove(component); })); } break; } case "punch": Reflection.GetFieldValue<BoolConVar>(typeof(CombatDirector), "cvDirectorCombatDisable").SetBool(false); director.monsterCredit = 100; break; case "portal": { director.monsterCredit = 0; DirectorPlacementRule val = new DirectorPlacementRule(); val.placementMode = (PlacementMode)4; for (int i = 0; i < portalCount; i++) { portalActiveList.Add(OnDestroyCallback.AddCallback(DirectorCore.instance.TrySpawnObject(new DirectorSpawnRequest(portalSpawnCard, val, base.stageRng)), (Action<OnDestroyCallback>)delegate(OnDestroyCallback component) { portalActiveList.Remove(component); })); } break; } } } public void onPostPopulateSceneServer(SceneDirector director) { if (trial == "punch") { Reflection.GetFieldValue<BoolConVar>(typeof(CombatDirector), "cvDirectorCombatDisable").SetBool(true); enemyCount = GetLiveMonsters(); } } public void ReportObjective(CharacterMaster master, List<ObjectiveSourceDescriptor> output) { //IL_00b4: Unknown result type (might be due to invalid IL or missing references) //IL_00db: Unknown result type (might be due to invalid IL or missing references) //IL_0074: Unknown result type (might be due to invalid IL or missing references) //IL_009b: Unknown result type (might be due to invalid IL or missing references) //IL_0043: Unknown result type (might be due to invalid IL or missing references) //IL_006a: Unknown result type (might be due to invalid IL or missing references) switch (trial) { case "lava": if (portalsPassed != portalCount) { output.Add(new ObjectiveSourceDescriptor { source = (Object)(object)this, master = master, objectiveType = typeof(DestroyTimeCrystals) }); } break; case "punch": output.Add(new ObjectiveSourceDescriptor { source = (Object)(object)this, master = master, objectiveType = typeof(DestroyTimeCrystals) }); break; case "portal": if (portalsPassed != portalCount) { output.Add(new ObjectiveSourceDescriptor { source = (Object)(object)this, master = master, objectiveType = typeof(DestroyTimeCrystals) }); } break; } } } public static GameObject loaderRunPrefab; public static GameObject extraGameModeMenu; private static SurvivorDef loaderDef = Addressables.LoadAssetAsync<SurvivorDef>((object)"RoR2/Base/Loader/Loader.asset").WaitForCompletion(); public static GameEndingDef loaderRunEnding = Addressables.LoadAssetAsync<GameEndingDef>((object)"RoR2/Base/WeeklyRun/PrismaticTrialEnding.asset").WaitForCompletion(); public static GameObject loaderRunPortal = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/moon/MoonExitArenaOrb.prefab").WaitForCompletion(), "LoaderRunPortal", false); public static GameObject positionIndicator = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/VoidCamp/VoidCampPositionIndicator.prefab").WaitForCompletion(); public GameMode() { //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_004a: Expected O, but got Unknown //IL_0069: Unknown result type (might be due to invalid IL or missing references) //IL_006e: Unknown result type (might be due to invalid IL or missing references) //IL_00ef: Unknown result type (might be due to invalid IL or missing references) //IL_00f9: Expected O, but got Unknown //IL_0100: Unknown result type (might be due to invalid IL or missing references) //IL_010a: Expected O, but got Unknown //IL_0111: Unknown result type (might be due to invalid IL or missing references) //IL_011b: Expected O, but got Unknown //IL_0122: Unknown result type (might be due to invalid IL or missing references) //IL_012c: Expected O, but got Unknown //IL_0133: Unknown result type (might be due to invalid IL or missing references) //IL_013d: Expected O, but got Unknown //IL_0144: Unknown result type (might be due to invalid IL or missing references) //IL_014e: Expected O, but got Unknown //IL_0155: Unknown result type (might be due to invalid IL or missing references) //IL_015f: Expected O, but got Unknown //IL_0166: Unknown result type (might be due to invalid IL or missing references) //IL_0170: Expected O, but got Unknown loaderRunPortal.AddComponent<NetworkIdentity>(); PrefabAPI.RegisterNetworkPrefab(loaderRunPortal); Object.Destroy((Object)(object)loaderRunPortal.GetComponent<MapZone>()); loaderRunPortal.AddComponent<PortalCollision>(); loaderRunPrefab = PrefabAPI.InstantiateClone(new GameObject("xLoaderRun"), "xLoaderRun", false); loaderRunPrefab.AddComponent<NetworkIdentity>(); PrefabAPI.RegisterNetworkPrefab(loaderRunPrefab); Run component = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/ClassicRun/ClassicRun.prefab").WaitForCompletion().GetComponent<Run>(); LoaderRun loaderRun = loaderRunPrefab.AddComponent<LoaderRun>(); ((Run)loaderRun).nameToken = "Loader Trials"; ((Run)loaderRun).userPickable = true; ((Run)loaderRun).startingSceneGroup = component.startingSceneGroup; ((Run)loaderRun).gameOverPrefab = component.gameOverPrefab; ((Run)loaderRun).lobbyBackgroundPrefab = component.lobbyBackgroundPrefab; ((Run)loaderRun).uiPrefab = component.uiPrefab; loaderRunPrefab.AddComponent<TeamManager>(); loaderRunPrefab.AddComponent<RunCameraManager>(); ContentAddition.AddGameMode(loaderRunPrefab); LanguageTextMeshController.Start += new hook_Start(LanguageTextMeshController_Start); GameModeCatalog.SetGameModes += new hook_SetGameModes(GameModeCatalog_SetGameModes); Run.OverrideRuleChoices += new hook_OverrideRuleChoices(Run_OverrideRuleChoices); CharacterSelectBarController.ShouldDisplaySurvivor += new hook_ShouldDisplaySurvivor(CharacterSelectBarController_ShouldDisplaySurvivor); CharacterSelectBarController.GetLocalUserExistingSurvivorPreference += new hook_GetLocalUserExistingSurvivorPreference(CharacterSelectBarController_GetLocalUserExistingSurvivorPreference); DestroyTimeCrystals.GenerateString += new hook_GenerateString(DestroyTimeCrystals_GenerateString); CharacterMaster.OnBodyStart += new hook_OnBodyStart(CharacterMaster_OnBodyStart); CharacterMaster.OnBodyDeath += new hook_OnBodyDeath(CharacterMaster_OnBodyDeath); } private void GameModeCatalog_SetGameModes(orig_SetGameModes orig, Run[] newGameModePrefabComponents) { Array.Sort(newGameModePrefabComponents, (Run a, Run b) => string.CompareOrdinal(((Object)a).name, ((Object)b).name)); orig.Invoke(newGameModePrefabComponents); } private void Run_OverrideRuleChoices(orig_OverrideRuleChoices orig, Run self, RuleChoiceMask mustInclude, RuleChoiceMask mustExclude, ulong runSeed) { //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_0067: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_00ca: 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_0070: Unknown result type (might be due to invalid IL or missing references) //IL_00cf: Unknown result type (might be due to invalid IL or missing references) //IL_00d5: Unknown result type (might be due to invalid IL or missing references) //IL_0133: Unknown result type (might be due to invalid IL or missing references) //IL_0134: Unknown result type (might be due to invalid IL or missing references) //IL_00d9: Unknown result type (might be due to invalid IL or missing references) //IL_0138: Unknown result type (might be due to invalid IL or missing references) //IL_013d: Unknown result type (might be due to invalid IL or missing references) //IL_0141: Unknown result type (might be due to invalid IL or missing references) //IL_0146: Unknown result type (might be due to invalid IL or missing references) //IL_00c6: Unknown result type (might be due to invalid IL or missing references) //IL_00c8: Unknown result type (might be due to invalid IL or missing references) //IL_00c9: Unknown result type (might be due to invalid IL or missing references) //IL_012f: Unknown result type (might be due to invalid IL or missing references) //IL_0131: Unknown result type (might be due to invalid IL or missing references) //IL_0132: Unknown result type (might be due to invalid IL or missing references) orig.Invoke(self, mustInclude, mustExclude, runSeed); if (!Object.op_Implicit((Object)(object)PreGameController.instance) || PreGameController.instance.gameModeIndex != GameModeCatalog.FindGameModeIndex("xLoaderRun")) { return; } self.ForceChoice(mustInclude, mustExclude, "Difficulty.Hard"); RuleDef obj = RuleCatalog.FindRuleDef("Misc.StageOrder"); RuleChoiceDef val = ((obj != null) ? obj.FindChoice("Random") : null); if (val != null) { self.ForceChoice(mustInclude, mustExclude, val); } ItemIndex val2 = (ItemIndex)0; for (ItemIndex val3 = (ItemIndex)ItemCatalog.itemCount; val2 < val3; val2 = (ItemIndex)(val2 + 1)) { ItemDef itemDef = ItemCatalog.GetItemDef(val2); RuleDef obj2 = RuleCatalog.FindRuleDef("Items." + ((Object)itemDef).name); RuleChoiceDef val4 = ((obj2 != null) ? obj2.FindChoice(((Object)(object)itemDef.requiredExpansion == (Object)null) ? "On" : "Off") : null); if (val4 != null) { self.ForceChoice(mustInclude, mustExclude, val4); } } EquipmentIndex val5 = (EquipmentIndex)0; for (EquipmentIndex val6 = (EquipmentIndex)EquipmentCatalog.equipmentCount; val5 < val6; val5 = (EquipmentIndex)(val5 + 1)) { EquipmentDef equipmentDef = EquipmentCatalog.GetEquipmentDef(val5); RuleDef obj3 = RuleCatalog.FindRuleDef("Equipment." + ((Object)equipmentDef).name); RuleChoiceDef val7 = ((obj3 != null) ? obj3.FindChoice(((Object)(object)equipmentDef.requiredExpansion == (Object)null) ? "On" : "Off") : null); if (val7 != null) { self.ForceChoice(mustInclude, mustExclude, val7); } } Enumerator<ExpansionDef> enumerator = ExpansionCatalog.expansionDefs.GetEnumerator(); try { while (enumerator.MoveNext()) { Object current = (Object)(object)enumerator.Current; RuleDef obj4 = RuleCatalog.FindRuleDef("Expansions." + current.name); RuleChoiceDef val8 = ((obj4 != null) ? obj4.FindChoice("Off") : null); if (val8 != null) { self.ForceChoice(mustInclude, mustExclude, val8); } } } finally { ((IDisposable)enumerator).Dispose(); } ArtifactDef[] artifactDefs = ArtifactCatalog.artifactDefs; foreach (ArtifactDef val9 in artifactDefs) { RuleDef obj5 = RuleCatalog.FindRuleDef("Artifacts." + val9.cachedName); RuleChoiceDef val10 = ((obj5 != null) ? obj5.FindChoice("Off") : null); if (val10 != null) { self.ForceChoice(mustInclude, mustExclude, val10); } } } private bool CharacterSelectBarController_ShouldDisplaySurvivor(orig_ShouldDisplaySurvivor orig, CharacterSelectBarController self, SurvivorDef survivorDef) { if (!(((BaseConVar)GameModeConVar.instance).GetString() == "xLoaderRun")) { return orig.Invoke(self, survivorDef); } return survivorDef.cachedName == "Loader"; } private SurvivorDef CharacterSelectBarController_GetLocalUserExistingSurvivorPreference(orig_GetLocalUserExistingSurvivorPreference orig, CharacterSelectBarController self) { if (!(((BaseConVar)GameModeConVar.instance).GetString() == "xLoaderRun")) { return orig.Invoke(self); } return loaderDef; } private void LanguageTextMeshController_Start(orig_Start orig, LanguageTextMeshController self) { orig.Invoke(self); if (self.token == "TITLE_ECLIPSE" && Object.op_Implicit((Object)(object)((Component)self).GetComponent<HGButton>())) { ((Component)((Component)self).transform.parent).gameObject.AddComponent<LoaderRunButtonAdder>(); } } private string DestroyTimeCrystals_GenerateString(orig_GenerateString orig, ObjectiveTracker self) { //IL_0005: 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) if (Run.instance.gameModeIndex != GameModeCatalog.FindGameModeIndex("xLoaderRun")) { return orig.Invoke(self); } LoaderRun component = ((Component)Run.instance).gameObject.GetComponent<LoaderRun>(); string[] array = new string[3] { "Enter <color=#30e7ff>Time Portals</color> ({0}/{1})", "Kill <color=#30e7ff>{0}</color> Monsters", "Enter <color=#30e7ff>Time Portals</color> ({0}/{1}) <color=#30e7ff>WITHOUT TOUCHING THE GROUND</color>" }; string result = "something went wrong :("; switch (component.trial) { case "lava": result = string.Format(array[2], component.portalsPassed, component.portalsRequiredToPass); break; case "punch": result = string.Format(array[1], component.enemyCount); break; case "portal": result = string.Format(array[0], component.portalsPassed, component.portalsRequiredToPass); break; } return result; } private void CharacterMaster_OnBodyStart(orig_OnBodyStart orig, CharacterMaster self, CharacterBody body) { //IL_0014: 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_0040: Unknown result type (might be due to invalid IL or missing references) //IL_0045: Unknown result type (might be due to invalid IL or missing references) //IL_004c: 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) orig.Invoke(self, body); if (NetworkServer.active && Run.instance.gameModeIndex == GameModeCatalog.FindGameModeIndex("xLoaderRun")) { LoaderRun component = ((Component)Run.instance).gameObject.GetComponent<LoaderRun>(); ItemIndex val = ItemCatalog.itemNameToIndex["LunarDagger"]; int itemCount = body.inventory.GetItemCount(val); if (itemCount > 0) { body.inventory.RemoveItem(val, itemCount); } if (body.isPlayerControlled && component.trial == "punch") { body.inventory.GiveItemString("LunarDagger", 10); } if (body.isPlayerControlled && component.trial == "lava") { ((Component)body).gameObject.AddComponent<LavaController>(); body.inventory.GiveItemString("AlienHead", 20); body.inventory.GiveItemString("SecondarySkillMagazine", 5); } } } private void CharacterMaster_OnBodyDeath(orig_OnBodyDeath orig, CharacterMaster self, CharacterBody body) { //IL_0014: 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_0038: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Invalid comparison between Unknown and I4 orig.Invoke(self, body); if (!NetworkServer.active || Run.instance.gameModeIndex != GameModeCatalog.FindGameModeIndex("xLoaderRun") || !Object.op_Implicit((Object)(object)body.teamComponent) || (int)body.teamComponent.teamIndex != 2) { return; } LoaderRun component = ((Component)Run.instance).gameObject.GetComponent<LoaderRun>(); component.enemyCount = GetLiveMonsters(); if (component.enemyCount == 0) { if (Run.instance.stageClearCount == 2) { Run.instance.BeginGameOver(loaderRunEnding); return; } Run.instance.PickNextStageSceneFromCurrentSceneDestinations(); Run.instance.AdvanceStage(Run.instance.nextStageScene); } } public static int GetLiveMonsters() { //IL_0001: 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_001a: Unknown result type (might be due to invalid IL or missing references) TeamIndex val = (TeamIndex)2; int num = 0; CharacterMaster[] array = Object.FindObjectsOfType<CharacterMaster>(); foreach (CharacterMaster val2 in array) { if (val2.teamIndex == val) { CharacterBody body = val2.GetBody(); if (Object.op_Implicit((Object)(object)body) && Object.op_Implicit((Object)(object)body.healthComponent) && body.healthComponent.alive) { num++; } } } return num; } } [BepInPlugin("com.Nuxlar.LoaderTrials", "LoaderTrials", "1.0.1")] public class LoaderTrials : BaseUnityPlugin { public void Awake() { new GameMode(); } } }