diff --git a/soh/soh/Enhancements/ExtraModes/RupeeDash.cpp b/soh/soh/Enhancements/ExtraModes/RupeeDash.cpp index 2fc224152d..17d457ef23 100644 --- a/soh/soh/Enhancements/ExtraModes/RupeeDash.cpp +++ b/soh/soh/Enhancements/ExtraModes/RupeeDash.cpp @@ -12,6 +12,10 @@ static constexpr int32_t CVAR_RUPEE_DASH_DEFAULT = 0; #define CVAR_RUPEE_DASH_NAME CVAR_ENHANCEMENT("RupeeDash") #define CVAR_RUPEE_DASH_VALUE CVarGetInteger(CVAR_RUPEE_DASH_NAME, CVAR_RUPEE_DASH_DEFAULT) +static constexpr int32_t CVAR_RUPEE_DASH_SCALING_DEFAULT = 1; +#define CVAR_RUPEE_DASH_SCALING_NAME CVAR_ENHANCEMENT("RupeeDashScaling") +#define CVAR_RUPEE_DASH_SCALING_VALUE CVarGetInteger(CVAR_RUPEE_DASH_SCALING_NAME, CVAR_RUPEE_DASH_SCALING_DEFAULT) + static constexpr int32_t CVAR_RUPEE_DASH_INTERVAL_DEFAULT = 5; #define CVAR_RUPEE_DASH_INTERVAL_NAME CVAR_ENHANCEMENT("RupeeDashInterval") #define CVAR_RUPEE_DASH_INTERVAL_TIME \ @@ -29,8 +33,12 @@ static void UpdateRupeeDash() { rupeeDashTimer = 0; if (gSaveContext.rupees > 0) { - uint16_t walletSize = (CUR_UPG_VALUE(UPG_WALLET) + 1) * -1; - Rupees_ChangeBy(walletSize); + uint16_t rupeeChange = -1; + if (CVAR_RUPEE_DASH_SCALING_VALUE) { + const uint16_t walletSize = (CUR_UPG_VALUE(UPG_WALLET) + 1); + rupeeChange = walletSize * -1; + } + Rupees_ChangeBy(rupeeChange); } else { Health_ChangeBy(gPlayState, -16); } diff --git a/soh/soh/SohGui/SohMenuEnhancements.cpp b/soh/soh/SohGui/SohMenuEnhancements.cpp index c8c52897cc..649eab3f1f 100644 --- a/soh/soh/SohGui/SohMenuEnhancements.cpp +++ b/soh/soh/SohGui/SohMenuEnhancements.cpp @@ -1660,6 +1660,10 @@ void SohMenu::AddMenuEnhancements() { AddWidget(path, "Rupee Dash Mode", WIDGET_CVAR_CHECKBOX) .CVar(CVAR_ENHANCEMENT("RupeeDash")) .Options(CheckboxOptions().Tooltip("Rupees reduce over time, Link suffers damage when the count hits 0.")); + AddWidget(path, "Rupee Dash Wallet Scaling", WIDGET_CVAR_CHECKBOX) + .CVar(CVAR_ENHANCEMENT("RupeeDashScaling")) + .PreFunc([](WidgetInfo& info) { info.isHidden = CVarGetInteger(CVAR_ENHANCEMENT("RupeeDash"), 0) == 0; }) + .Options(CheckboxOptions().DefaultValue(true).Tooltip("The larger Link's wallet, the faster Rupees reduce.")); AddWidget(path, "Rupee Dash Interval %d seconds", WIDGET_CVAR_SLIDER_INT) .CVar(CVAR_ENHANCEMENT("RupeeDashInterval")) .PreFunc([](WidgetInfo& info) { info.isHidden = CVarGetInteger(CVAR_ENHANCEMENT("RupeeDash"), 0) == 0; })