From ab216a78fcebfb244233d3d00afaae7275ec700f Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Wed, 22 Jul 2026 05:20:37 +0000 Subject: [PATCH 1/4] Add Fix Momentum setting for wave y-velocity Gate setYVelocity correction behind an off-by-default setting so default behavior preserves vanilla exit velocity into other gamemodes. Bump to v1.2.2. Co-authored-by: imes --- changelog.md | 5 +++++ mod.json | 8 +++++++- src/WaveFixConfig.hpp | 14 ++++++++++---- src/WaveFixPlayerObject.cpp | 13 ++----------- 4 files changed, 24 insertions(+), 16 deletions(-) diff --git a/changelog.md b/changelog.md index e0256b2..a5e6133 100644 --- a/changelog.md +++ b/changelog.md @@ -2,6 +2,11 @@ Currently no announcements for the mod. +## 1.2.2 + +- Added Fix Momentum setting (off by default) for wave y-velocity correction. +- Default behavior no longer changes exit velocity into other gamemodes. + ## 1.2.1 - Fixed wave trail cutting/discontinuing. diff --git a/mod.json b/mod.json index c7a766d..f290efb 100644 --- a/mod.json +++ b/mod.json @@ -8,7 +8,7 @@ }, "id": "imes.wavefix", "name": "Wave Fix", - "version": "v1.2.1", + "version": "v1.2.2", "developer": "imes", "description": "Fixes the wave gamemode angle being off by ~0.1 degree and less.", "tags": [ @@ -35,6 +35,12 @@ "description": "Correct regular and mini wave movement using anchored trajectory projection.", "default": true }, + "fixMomentum": { + "type": "bool", + "name": "Fix Momentum", + "description": "Also force wave y-velocity to match horizontal speed. Changes exit velocity into other gamemodes.", + "default": false + }, "visualizer": { "type": "bool", "name": "Show Visualizer", diff --git a/src/WaveFixConfig.hpp b/src/WaveFixConfig.hpp index c0c85e4..d55a7c8 100644 --- a/src/WaveFixConfig.hpp +++ b/src/WaveFixConfig.hpp @@ -7,10 +7,11 @@ using namespace geode::prelude; namespace wavefix { - constexpr char const* kEnabledSetting = "enabled"; - constexpr char const* kLoggingSetting = "logging"; - constexpr char const* kStateLoggingSetting = "stateLogging"; - constexpr char const* kVisualizerSetting = "visualizer"; + constexpr char const* kEnabledSetting = "enabled"; + constexpr char const* kFixMomentumSetting = "fixMomentum"; + constexpr char const* kLoggingSetting = "logging"; + constexpr char const* kStateLoggingSetting = "stateLogging"; + constexpr char const* kVisualizerSetting = "visualizer"; constexpr double kEpsilon = 0.000001; constexpr double kSlopeTolerance = 0.03; @@ -19,6 +20,7 @@ namespace wavefix { constexpr int kWaveTrailRestartFrames = 2; inline bool g_fixEnabled = true; + inline bool g_fixMomentumEnabled = false; inline bool g_loggingEnabled = false; inline bool g_stateLoggingEnabled = false; inline bool g_visualizerEnabled = false; @@ -49,6 +51,7 @@ namespace wavefix { $on_mod(Loaded) { wavefix::g_fixEnabled = Mod::get()->getSettingValue(wavefix::kEnabledSetting); + wavefix::g_fixMomentumEnabled = Mod::get()->getSettingValue(wavefix::kFixMomentumSetting); wavefix::g_loggingEnabled = Mod::get()->getSettingValue(wavefix::kLoggingSetting); wavefix::g_stateLoggingEnabled = Mod::get()->getSettingValue(wavefix::kStateLoggingSetting); wavefix::g_visualizerEnabled = Mod::get()->getSettingValue(wavefix::kVisualizerSetting); @@ -56,6 +59,9 @@ namespace wavefix { listenForSettingChanges(wavefix::kEnabledSetting, [](bool value) { wavefix::g_fixEnabled = value; }); + listenForSettingChanges(wavefix::kFixMomentumSetting, [](bool value) { + wavefix::g_fixMomentumEnabled = value; + }); listenForSettingChanges(wavefix::kLoggingSetting, [](bool value) { wavefix::g_loggingEnabled = value; }); diff --git a/src/WaveFixPlayerObject.cpp b/src/WaveFixPlayerObject.cpp index d45d6c9..789dbc7 100644 --- a/src/WaveFixPlayerObject.cpp +++ b/src/WaveFixPlayerObject.cpp @@ -341,17 +341,8 @@ class $modify(WaveFixPlayerObject, PlayerObject) { } void setYVelocity(double velocity, int type) { - if (shouldBypassWaveFix()) { - PlayerObject::setYVelocity(velocity, type); - return; - } - - if (m_isDashing) { - PlayerObject::setYVelocity(velocity, type); - return; - } - - if (!shouldFixWave() || std::abs(velocity) <= wavefix::kEpsilon) { + if (!wavefix::g_fixMomentumEnabled || shouldBypassWaveFix() || m_isDashing + || !shouldFixWave() || std::abs(velocity) <= wavefix::kEpsilon) { PlayerObject::setYVelocity(velocity, type); return; } From a911d8146a4d6cd9503def76863c0b8a7734daf1 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Wed, 22 Jul 2026 05:23:41 +0000 Subject: [PATCH 2/4] Shorten 1.2.2 changelog entry Co-authored-by: imes --- changelog.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/changelog.md b/changelog.md index a5e6133..6a6d34c 100644 --- a/changelog.md +++ b/changelog.md @@ -4,8 +4,7 @@ Currently no announcements for the mod. ## 1.2.2 -- Added Fix Momentum setting (off by default) for wave y-velocity correction. -- Default behavior no longer changes exit velocity into other gamemodes. +- Added Fix Momentum setting (off by default). ## 1.2.1 From dff0f46e06b58233f5270ece12b7ff1b9050dd06 Mon Sep 17 00:00:00 2001 From: imes Date: Wed, 22 Jul 2026 12:54:12 +0700 Subject: [PATCH 3/4] Update WaveFixConfig.hpp --- src/WaveFixConfig.hpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/WaveFixConfig.hpp b/src/WaveFixConfig.hpp index d55a7c8..69affe4 100644 --- a/src/WaveFixConfig.hpp +++ b/src/WaveFixConfig.hpp @@ -7,11 +7,11 @@ using namespace geode::prelude; namespace wavefix { - constexpr char const* kEnabledSetting = "enabled"; - constexpr char const* kFixMomentumSetting = "fixMomentum"; - constexpr char const* kLoggingSetting = "logging"; - constexpr char const* kStateLoggingSetting = "stateLogging"; - constexpr char const* kVisualizerSetting = "visualizer"; + constexpr char const* kEnabledSetting = "enabled"; + constexpr char const* kFixMomentumSetting = "fixMomentum"; + constexpr char const* kLoggingSetting = "logging"; + constexpr char const* kStateLoggingSetting = "stateLogging"; + constexpr char const* kVisualizerSetting = "visualizer"; constexpr double kEpsilon = 0.000001; constexpr double kSlopeTolerance = 0.03; From 3cdf5ab353e2286caa6158063c8bb1939e9bf7c1 Mon Sep 17 00:00:00 2001 From: imes Date: Wed, 22 Jul 2026 12:55:42 +0700 Subject: [PATCH 4/4] Update WaveFixConfig.hpp --- src/WaveFixConfig.hpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/WaveFixConfig.hpp b/src/WaveFixConfig.hpp index 69affe4..be42bb6 100644 --- a/src/WaveFixConfig.hpp +++ b/src/WaveFixConfig.hpp @@ -20,7 +20,7 @@ namespace wavefix { constexpr int kWaveTrailRestartFrames = 2; inline bool g_fixEnabled = true; - inline bool g_fixMomentumEnabled = false; + inline bool g_fixMomentumEnabled = false; inline bool g_loggingEnabled = false; inline bool g_stateLoggingEnabled = false; inline bool g_visualizerEnabled = false; @@ -50,11 +50,11 @@ namespace wavefix { } $on_mod(Loaded) { - wavefix::g_fixEnabled = Mod::get()->getSettingValue(wavefix::kEnabledSetting); - wavefix::g_fixMomentumEnabled = Mod::get()->getSettingValue(wavefix::kFixMomentumSetting); - wavefix::g_loggingEnabled = Mod::get()->getSettingValue(wavefix::kLoggingSetting); + wavefix::g_fixEnabled = Mod::get()->getSettingValue(wavefix::kEnabledSetting); + wavefix::g_fixMomentumEnabled = Mod::get()->getSettingValue(wavefix::kFixMomentumSetting); + wavefix::g_loggingEnabled = Mod::get()->getSettingValue(wavefix::kLoggingSetting); wavefix::g_stateLoggingEnabled = Mod::get()->getSettingValue(wavefix::kStateLoggingSetting); - wavefix::g_visualizerEnabled = Mod::get()->getSettingValue(wavefix::kVisualizerSetting); + wavefix::g_visualizerEnabled = Mod::get()->getSettingValue(wavefix::kVisualizerSetting); listenForSettingChanges(wavefix::kEnabledSetting, [](bool value) { wavefix::g_fixEnabled = value;