예제 #1
0
    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 });
     }
 }
예제 #3
0
    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");
     }
 }
예제 #5
0
 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;
 }
예제 #6
0
 public static void RestartButtonPressedPatch(object self)
 {
     dualPatch();
     didRestartButtonRedirection.InvokeOriginal(self);
 }