diff options
| -rw-r--r-- | mm/2s2h/BenGui/BenMenu.cpp | 3 | ||||
| -rw-r--r-- | mm/2s2h/Enhancements/Items/HotWaterNeverCools.cpp | 12 | ||||
| -rw-r--r-- | mm/2s2h/GameInteractor/GameInteractor_VanillaBehavior.h | 8 | ||||
| -rw-r--r-- | mm/src/code/z_parameter.c | 5 |
4 files changed, 27 insertions, 1 deletions
diff --git a/mm/2s2h/BenGui/BenMenu.cpp b/mm/2s2h/BenGui/BenMenu.cpp index 5ec8bf1f8..cff10348b 100644 --- a/mm/2s2h/BenGui/BenMenu.cpp +++ b/mm/2s2h/BenGui/BenMenu.cpp @@ -1588,6 +1588,9 @@ void BenMenu::AddEnhancements() { AddWidget(path, "Color Pictograph", WIDGET_CVAR_CHECKBOX) .CVar("gEnhancements.Items.ColorPictograph") .Options(CheckboxOptions().Tooltip("Will take and display pictographs in color.")); + AddWidget(path, "Hot Water Never Cools", WIDGET_CVAR_CHECKBOX) + .CVar("gEnhancements.Items.HotWaterNeverCools") + .Options(CheckboxOptions().Tooltip("Prevents Hot Spring Water from cooling down into regular Spring Water.")); // Time Savers path = { "Enhancements", "Time Savers", SECTION_COLUMN_1 }; diff --git a/mm/2s2h/Enhancements/Items/HotWaterNeverCools.cpp b/mm/2s2h/Enhancements/Items/HotWaterNeverCools.cpp new file mode 100644 index 000000000..80ea8621d --- /dev/null +++ b/mm/2s2h/Enhancements/Items/HotWaterNeverCools.cpp @@ -0,0 +1,12 @@ +#include <libultraship/bridge/consolevariablebridge.h> +#include "2s2h/GameInteractor/GameInteractor.h" +#include "2s2h/ShipInit.hpp" + +#define CVAR_NAME "gEnhancements.Items.HotWaterNeverCools" +#define CVAR CVarGetInteger(CVAR_NAME, 0) + +void RegisterHotWaterNeverCools() { + COND_VB_SHOULD(VB_COOL_HOT_WATER, CVAR, { *should = false; }); +} + +static RegisterShipInitFunc initFunc(RegisterHotWaterNeverCools, { CVAR_NAME }); diff --git a/mm/2s2h/GameInteractor/GameInteractor_VanillaBehavior.h b/mm/2s2h/GameInteractor/GameInteractor_VanillaBehavior.h index 4a5749e8b..7d22c751f 100644 --- a/mm/2s2h/GameInteractor/GameInteractor_VanillaBehavior.h +++ b/mm/2s2h/GameInteractor/GameInteractor_VanillaBehavior.h @@ -352,6 +352,14 @@ typedef enum { // #### `result` // ```c + // gSaveContext.save.saveInfo.inventory.items[i + SLOT_BOTTLE_1] == ITEM_HOT_SPRING_WATER + // ``` + // #### `args` + // - `s16` (bottle slot index, `BOTTLE_FIRST`..`BOTTLE_MAX - 1`) + VB_COOL_HOT_WATER, + + // #### `result` + // ```c // (bean->unk_1E4 == 2) || (bean->unk_1E4 == 1) // ``` // #### `args` diff --git a/mm/src/code/z_parameter.c b/mm/src/code/z_parameter.c index 42288750f..a5c3387d6 100644 --- a/mm/src/code/z_parameter.c +++ b/mm/src/code/z_parameter.c @@ -8689,7 +8689,10 @@ void Interface_UpdateBottleTimers(PlayState* play) { // Time has passed, and the time limit has been exceeded. gSaveContext.bottleTimerCurTimes[i] = SECONDS_TO_TIMER(0); - if (gSaveContext.save.saveInfo.inventory.items[i + SLOT_BOTTLE_1] == ITEM_HOT_SPRING_WATER) { + if (GameInteractor_Should(VB_COOL_HOT_WATER, + gSaveContext.save.saveInfo.inventory.items[i + SLOT_BOTTLE_1] == + ITEM_HOT_SPRING_WATER, + i)) { Inventory_UpdateItem(play, i + SLOT_BOTTLE_1, ITEM_SPRING_WATER); Message_StartTextbox(play, 0xFA, NULL); } |
