summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorItsHeckinPat <115201185+Patrick12115@users.noreply.github.com>2026-11-02 18:57:36 -0500
committerGitHub <noreply@github.com>2026-11-02 17:57:36 -0600
commitfd9fb03bdeb1f89541d1d3bf99cdb0677f21edc6 (patch)
treed3bf435d3f327e3556fb3153fa51a394f9af8186
parent67cc37961e7bdf8765cda43826a12276bb7b3e63 (diff)
[Enhancement] Prevent Hot Spring Water from cooling (#1989)HEADdevelop
* Prevent Hot Spring Water from cooling * Remove unnecessary arg's * Tweak to VB location --------- Co-authored-by: Garrett <garrettjcox@gmail.com>
-rw-r--r--mm/2s2h/BenGui/BenMenu.cpp3
-rw-r--r--mm/2s2h/Enhancements/Items/HotWaterNeverCools.cpp12
-rw-r--r--mm/2s2h/GameInteractor/GameInteractor_VanillaBehavior.h8
-rw-r--r--mm/src/code/z_parameter.c5
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);
}