diff --git a/soh/assets/custom/presets/Main Enhanced.json b/soh/assets/custom/presets/Main Enhanced.json index 5e63d651f..eabda809f 100644 --- a/soh/assets/custom/presets/Main Enhanced.json +++ b/soh/assets/custom/presets/Main Enhanced.json @@ -16,6 +16,7 @@ "EnemySpawnsOverWaterboxes": 1, "FasterRupeeAccumulator": 1, "FixBrokenGiantsKnife": 1, + "FixDampeGoingBackwards": 1, "FixDaruniaDanceSpeed": 1, "FixDungeonMinimapIcon": 1, "FixEyesOpenWhileSleeping": 1, diff --git a/soh/assets/custom/presets/Main Randomizer.json b/soh/assets/custom/presets/Main Randomizer.json index 7ece7315a..2982a8b72 100644 --- a/soh/assets/custom/presets/Main Randomizer.json +++ b/soh/assets/custom/presets/Main Randomizer.json @@ -45,6 +45,7 @@ "FishNeverEscape": 1, "FixBrokenGiantsKnife": 1, "FixDaruniaDanceSpeed": 1, + "FixDampeGoingBackwards": 1, "FixDungeonMinimapIcon": 1, "FixFloorSwitches": 1, "FixHammerHand": 1, diff --git a/soh/assets/custom/presets/Main Vanilla+.json b/soh/assets/custom/presets/Main Vanilla+.json index 0f6c1741a..1ac97a567 100644 --- a/soh/assets/custom/presets/Main Vanilla+.json +++ b/soh/assets/custom/presets/Main Vanilla+.json @@ -17,6 +17,7 @@ "FasterRupeeAccumulator": 1, "FixBrokenGiantsKnife": 1, "FixDaruniaDanceSpeed": 1, + "FixDampeGoingBackwards": 1, "FixDungeonMinimapIcon": 1, "FixEyesOpenWhileSleeping": 1, "FixFloorSwitches": 1, diff --git a/soh/soh/SohGui/SohMenuEnhancements.cpp b/soh/soh/SohGui/SohMenuEnhancements.cpp index bdc6f5344..1d141fd18 100644 --- a/soh/soh/SohGui/SohMenuEnhancements.cpp +++ b/soh/soh/SohGui/SohMenuEnhancements.cpp @@ -940,6 +940,9 @@ void SohMenu::AddMenuEnhancements() { }) .Options(CheckboxOptions().Tooltip( "Fixes a bug where the Gravedigging Tour Heart Piece disappears if the area reloads.")); + AddWidget(path, "Fix Dampé Going Backwards", WIDGET_CVAR_CHECKBOX) + .CVar(CVAR_ENHANCEMENT("FixDampeGoingBackwards")) + .Options(CheckboxOptions().Tooltip("Fixes Dampé going backwards in certain circumstances when the player is going backwards.")); AddWidget(path, "Fix Raised Floor Switches", WIDGET_CVAR_CHECKBOX) .CVar(CVAR_ENHANCEMENT("FixFloorSwitches")) .Options(CheckboxOptions().Tooltip( diff --git a/soh/src/overlays/actors/ovl_En_Po_Relay/z_en_po_relay.c b/soh/src/overlays/actors/ovl_En_Po_Relay/z_en_po_relay.c index d850021a4..c62db2dd8 100644 --- a/soh/src/overlays/actors/ovl_En_Po_Relay/z_en_po_relay.c +++ b/soh/src/overlays/actors/ovl_En_Po_Relay/z_en_po_relay.c @@ -238,6 +238,11 @@ void EnPoRelay_Race(EnPoRelay* this, PlayState* play) { } else { speed = 3.5f; } + + if (CVarGetInteger(CVAR_ENHANCEMENT("FixDampeGoingBackwards"), false)) { + speed = ABS(speed); + } + multiplier = 250.0f - this->actor.xzDistToPlayer; multiplier = CLAMP_MIN(multiplier, 0.0f); speed += multiplier * 0.02f + 1.0f;