private static void AddEnergyPatch(object self, float value) { GameEnergyCounter instance = (GameEnergyCounter)self; if (!(instance.energy + value <= 1E-05f) || BailOutModePlugin.BailedOut) { addEnergyRedirection.InvokeOriginal(self, value); return; } Console.WriteLine("[Bailout] Lethal energy reached, bailing out!"); BailOutModePlugin.BailedOut = true; try { typeof(GameEnergyCounter).GetField("_cannotFail", BindingFlags.NonPublic | BindingFlags.Instance).SetValue(instance, true); var sceneSetup = UnityEngine.Object.FindObjectOfType <MainGameSceneSetup>(); MainGameSceneSetupData setupData = typeof(MainGameSceneSetup).GetField("_mainGameSceneSetupData", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(sceneSetup) as MainGameSceneSetupData; setupData.gameplayOptions.noEnergy = true; UnityEngine.Object.FindObjectOfType <GameEnergyUIPanel>().EnableEnergyPanel(false); } catch (Exception e) { Console.WriteLine(e); throw; } value = 0; addEnergyRedirection.InvokeOriginal(self, value); }
public static void NoteDebrisSpawner_SpawnDebris(NoteDebrisSpawner t, NoteCutInfo noteCutInfo, NoteController noteController) { if (!Plugin.Instance.Enabled) { _noteDebrisSpawner_SpawnDebris.InvokeOriginal(t, new object[] { noteCutInfo, noteController }); } }
private static void AddEnergyPatch(object self, float value) { //If the Bailout Toggle is off, this will just run the original code and exit this function. if (!BailOutModePlugin.shouldIBail) { addEnergyRedirection.InvokeOriginal(self, value); return; } GameEnergyCounter instance = (GameEnergyCounter)self; if (!(instance.energy + value <= 1E-05f)) { addEnergyRedirection.InvokeOriginal(self, value); return; } //if (BailOutModePlugin.bailoutNotification) showBailoutNotification(); Console.WriteLine("[Bailout] Lethal energy reached, bailing out! [1/4]"); BailOutModePlugin.BailedOut = false; try { typeof(GameEnergyCounter).GetField("<noFail>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance).SetValue(instance, true); //typeof(GameEnergyCounter).GetField("noFail", BindingFlags.NonPublic | BindingFlags.Instance).SetValue(instance, true); //typeof(GameEnergyCounter).GetField("<isInitialized>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance).SetValue(instance, true); Console.WriteLine("[Bailout] Disabling score submission[2/4]"); //BS_Utils.Gameplay.ScoreSubmission.DisableSubmission("Bailed Out"); <-- disables score submission for scoresaber Console.WriteLine("[Bailout] Disabling Ingame Energy Bar [3/4]"); UnityEngine.Object.FindObjectOfType <GameEnergyUIPanel>().gameObject.SetActive(false); Console.WriteLine("[Bailout] Bailed out [4/4]"); } catch (Exception e) { Console.WriteLine(e); throw; } value = 100f; addEnergyRedirection.InvokeOriginal(self, value); }
private static void DidActivatePatch(object self) { didActivateRedirection.InvokeOriginal(self); if (BailOutModePlugin.BailedOut) { ((MainSettingsModel)typeof(MenuMasterViewController) .GetField("_mainSettingsModel", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(self)) .gameplayOptions.noEnergy = false; BailOutModePlugin.BailedOut = false; Console.WriteLine("Reset BailOut"); } }
private static void DidActivatePatch(object self, bool v1, bool v2, bool v3) { didActivateRedirection.InvokeOriginal(self, v1, v2, v2); try { if (BailOutModePlugin.BailedOut) { //((GameplayOptions)typeof(ResultsViewController).GetField("_gameplayOptions", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(self)).noEnergy = false; //BS_Utils.Plugin.LevelData.GameplayCoreSceneSetupData.gameplayModifiers.noFail = false; BailOutModePlugin.BailedOut = false; Console.WriteLine("[BailOut] Reset No Fail"); } } catch (Exception e) { Console.Write(e); } BailOutModePlugin.BailedOut = false; }
public static void RestartButtonPressedPatch(object self) { dualPatch(); didRestartButtonRedirection.InvokeOriginal(self); }