From 64e3c5daa12d8948e949ef0015db9f2971ceaf27 Mon Sep 17 00:00:00 2001 From: Paloys Date: Wed, 14 Sep 2022 20:03:40 +0200 Subject: [PATCH] Fixed a minor bug in 7A-3k with checkpoints 28 and 20 due to the fact that there is both a transition and a checkpoint trigger, might be still a bit janky #patch --- GoldenTrainer/GoldenTrainer.cs | 23 ++++++++++++++++------- README.md | 3 --- everest.yaml | 2 +- 3 files changed, 17 insertions(+), 11 deletions(-) diff --git a/GoldenTrainer/GoldenTrainer.cs b/GoldenTrainer/GoldenTrainer.cs index a940c33..3d64513 100644 --- a/GoldenTrainer/GoldenTrainer.cs +++ b/GoldenTrainer/GoldenTrainer.cs @@ -18,12 +18,13 @@ public GoldenTrainerModule() { Instance = this; } - - // If you need to store settings: + public override Type SettingsType => typeof(GoldenTrainerSettings); public static GoldenTrainerSettings Settings => (GoldenTrainerSettings)Instance._Settings; private bool DeathCausedByMod { get; set; } + + private bool TransitionedAfterTransitionToCheck { get; set; } private int _completionCount; @@ -46,8 +47,7 @@ public int CompletionCount private int _latestSummitCheckpointTriggered = -1; private ILHook _dieGoldenHook; - - + public override void Load() { Logger.SetLogLevel("GoldenTrainer", LogLevel.Verbose); @@ -93,6 +93,7 @@ private void RespawnAtEnd(On.Celeste.Level.orig_TransitionTo orig, Level self, L { Player p = self.Tracker.GetEntity(); Instance.DeathCausedByMod = true; + Instance.TransitionedAfterTransitionToCheck = true; p.Die(p.Position, true, false); } else @@ -189,7 +190,8 @@ private void SummitCheckpointHandler(ILContext il) private static bool SummitCheckpointUpdateHook(Player p, SummitCheckpoint self) { - if (Instance._latestSummitCheckpointTriggered != self.Number && Settings.ActivateMod) { + var temp = false; + if (Instance._latestSummitCheckpointTriggered != self.Number && Settings.ActivateMod && !Instance.TransitionedAfterTransitionToCheck) { Instance.CompletionCount++; if (Instance.CompletionCount < Settings.NumberOfCompletions) { @@ -201,8 +203,16 @@ private static bool SummitCheckpointUpdateHook(Player p, SummitCheckpoint self) Instance.CompletionCount = 0; Instance._latestSummitCheckpointTriggered = self.Number; // Check because for some reason it triggers twice ??? } + temp = Instance.TransitionedAfterTransitionToCheck; + } + else if (Instance.TransitionedAfterTransitionToCheck) + { + temp = Instance.TransitionedAfterTransitionToCheck; + Instance.TransitionedAfterTransitionToCheck = false; } - return Instance.CompletionCount < Settings.NumberOfCompletions && Instance._latestSummitCheckpointTriggered != self.Number && Settings.ActivateMod; + return Instance.CompletionCount < Settings.NumberOfCompletions && + Instance._latestSummitCheckpointTriggered != self.Number && Settings.ActivateMod && + !temp; } private Session OnSessionRestart(On.Celeste.Session.orig_Restart orig, Session self, string intoLevel = null) @@ -233,7 +243,6 @@ private void AutoSkipCutscene(On.Celeste.Level.orig_Update orig, Level self) orig(self); if (!self.InCutscene || self.SkippingCutscene || !Settings.SkipCutscenesAutomatically) return; self.SkipCutscene(); - Logger.Log(LogLevel.Info, "GoldenTrainer", "Skipping cutscene"); } } } \ No newline at end of file diff --git a/README.md b/README.md index 03b19ca..01b7011 100644 --- a/README.md +++ b/README.md @@ -8,8 +8,5 @@ Once you have installed the mod via the Everest/Olympus launcher, you can setup - If you want the mod to be activated or not - The required number of completions before switching to another screen. -### Todo : -- Fix a minor bug in 7A-3k with checkpoints 28 and 20 due to the fact that there is both a transition and a checkpoint trigger - ### Contact me : I'm on the [official Celeste discord server](https://discord.gg/6qjaePQ) as Paloys#7527, feel free to dm me if you have a question ! \ No newline at end of file diff --git a/everest.yaml b/everest.yaml index 0c8ffc3..b1226e2 100644 --- a/everest.yaml +++ b/everest.yaml @@ -1,5 +1,5 @@ - Name: GoldenTrainer - Version: 1.4.0 + Version: 1.4.2 DLL: GoldenTrainer/bin/x86/Debug/GoldenTrainer.dll Dependencies: - Name: Everest