Skip to content

Commit

Permalink
feat: make fast dream warp and fast super dash toggleable at any time
Browse files Browse the repository at this point in the history
  • Loading branch information
Clazex committed Jun 13, 2022
1 parent 730895a commit a83303a
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 15 deletions.
13 changes: 5 additions & 8 deletions GodSeekerPlus/Modules/QoL/FastDreamWarp.cs
Original file line number Diff line number Diff line change
@@ -1,14 +1,10 @@
namespace GodSeekerPlus.Modules.QoL;

[ToggleableLevel(ToggleableLevel.ReloadSave)]
[DefaultEnabled]
internal sealed class FastDreamWarp : Module {
private protected override void Load() =>
public FastDreamWarp() =>
On.PlayMakerFSM.Start += ModifyDreamNailFSM;

private protected override void Unload() =>
On.PlayMakerFSM.Start -= ModifyDreamNailFSM;

private void ModifyDreamNailFSM(On.PlayMakerFSM.orig_Start orig, PlayMakerFSM self) {
orig(self);

Expand All @@ -23,8 +19,9 @@ private void ModifyDreamNailFSM(On.PlayMakerFSM.orig_Start orig, PlayMakerFSM se
}

private static void ModifyDreamNailFSM(PlayMakerFSM fsm) =>
fsm.InsertAction("Warp Charge", new GGCheckIfBossScene {
// If in boss scene, fire CHARGED event immediately
bossSceneEvent = fsm.GetAction<Wait>("Warp Charge", 0).finishEvent,
fsm.InsertCustomAction("Warp Charge", (fsm) => {
if (BossSceneController.IsBossScene && ModuleManager.TryGetActiveModule<FastDreamWarp>(out _)) {
fsm.SendEvent("CHARGED");
}
}, 0);
}
22 changes: 15 additions & 7 deletions GodSeekerPlus/Modules/QoL/FastSuperDash.cs
Original file line number Diff line number Diff line change
@@ -1,16 +1,12 @@
namespace GodSeekerPlus.Modules.QoL;

[ToggleableLevel(ToggleableLevel.ReloadSave)]
[DefaultEnabled]
internal sealed class FastSuperDash : Module {
private const string stateName = "GSP Workshop Speed Buff";

private protected override void Load() =>
public FastSuperDash() =>
On.PlayMakerFSM.Start += ModifySuperDashFSM;

private protected override void Unload() =>
On.PlayMakerFSM.Start -= ModifySuperDashFSM;

private void ModifySuperDashFSM(On.PlayMakerFSM.orig_Start orig, PlayMakerFSM self) {
orig(self);

Expand All @@ -36,8 +32,20 @@ private static void ModifySuperDashFSM(PlayMakerFSM fsm) {
multiplyBy = Setting.Global.FastSuperDashSpeedMultiplier
}, 1);

fsm.ChangeTransition("Left", FsmEvent.Finished.Name, stateName);
fsm.ChangeTransition("Right", FsmEvent.Finished.Name, stateName);
fsm.Intercept(new TransitionInterceptor() {
fromState = "Left",
eventName = FsmEvent.Finished.Name,
toStateDefault = "Dash Start",
toStateCustom = stateName,
shouldIntercept = () => ModuleManager.TryGetActiveModule<FastSuperDash>(out _)
});
fsm.Intercept(new TransitionInterceptor() {
fromState = "Right",
eventName = FsmEvent.Finished.Name,
toStateDefault = "Dash Start",
toStateCustom = stateName,
shouldIntercept = () => ModuleManager.TryGetActiveModule<FastSuperDash>(out _)
});

fsm.AddTransition(stateName, FsmEvent.Finished.Name, "Dash Start");
}
Expand Down

0 comments on commit a83303a

Please sign in to comment.