Showers provide unlimited real water instead of unlimited imaginary water (#5024)

## About The Pull Request

- Closes https://github.com/Bubberstation/Bubberstation/issues/5021
- Re-implements unlimited shower water and an additional occupancy check
for those hour long showers.
- Adds a ctrl+click changing of temperature (safe temperatures only)

## Why It's Good For The Game

You stink

## Changelog

🆑 LT3
fix: Showers now provide unlimited real water instead of unlimited
imaginary water
qol: Showers will no longer auto turn-off if occupied
qol: Shower temperature change button
/🆑
This commit is contained in:
LT3
2025-12-17 14:00:36 -08:00
committed by GitHub
parent 0db1a764af
commit 97f250b78d
3 changed files with 60 additions and 16 deletions
+18 -16
View File
@@ -21,9 +21,9 @@
#define SHOWER_MODE_COUNT 3
GLOBAL_LIST_INIT(shower_mode_descriptions, list(
"[SHOWER_MODE_UNTIL_EMPTY]" = "run until empty",
"[SHOWER_MODE_TIMED]" = "run for 15 seconds or until empty",
"[SHOWER_MODE_FOREVER]" = "keep running forever and auto turn back on",
"[SHOWER_MODE_UNTIL_EMPTY]" = "run forever from internal tank", // BUBBER EDIT CHANGE - Original: "run until empty"
"[SHOWER_MODE_TIMED]" = "run using auto-detect sensor", // BUBBER EDIT CHANGE - Original: "run for 15 seconds or until empty"
"[SHOWER_MODE_FOREVER]" = "run forever from external source", // BUBBER EDIT CHANGE - Original: "keep running forever and auto turn back on"
))
/obj/machinery/shower
@@ -96,10 +96,10 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/shower, (-16))
/obj/machinery/shower/examine(mob/user)
. = ..()
. += span_notice("It looks like the thermostat has an adjustment screw.")
. += span_notice("It looks like the thermostat has a pair of buttons and a manual adjustment screw.") // BUBBER EDIT CHANGE - Original: "It looks like the thermostat has an adjustment screw."
if(has_water_reclaimer)
. += span_notice("A water recycler is installed. It looks like you could pry it out.")
. += span_notice("The auto shut-off is programmed to [GLOB.shower_mode_descriptions["[mode]"]].")
. += span_info("The current shower mode is [span_bold(GLOB.shower_mode_descriptions["[mode]"])].") // BUBBER EDIT CHANGE - Showers have infinite water - Original: "The auto shut-off is programmed to [GLOB.shower_mode_descriptions["[mode]"]]."
. += span_notice("[reagents.total_volume]/[reagents.maximum_volume] liquids remaining.")
/obj/machinery/shower/Destroy()
@@ -121,14 +121,6 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/shower, (-16))
return TRUE
//SKYRAT EDIT ADDITION
/obj/machinery/shower/plunger_act(obj/item/plunger/P, mob/living/user, reinforced)
if(do_after(user, 3 SECONDS, src))
reagents.remove_all(reagents.total_volume)
balloon_alert(user, "reservoir emptied")
//SKYRAT EDIT END
/obj/machinery/shower/analyzer_act(mob/living/user, obj/item/tool)
. = ..()
@@ -323,7 +315,12 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/shower, (-16))
// the TIMED mode cutoff feature. User has to manually reactivate.
if(intended_on && mode == SHOWER_MODE_TIMED && COOLDOWN_FINISHED(src, timed_cooldown))
// the TIMED mode cutoff feature. User has to manually reactivate.
intended_on = FALSE
// BUBBER EDIT CHANGE BEGIN - Showers have infinite water
// Original:
// intended_on = FALSE
if(!shower_occupied())
intended_on = FALSE
// BUBBER EDIT CHANGE END - Showers have infinite water
// Out of water.
if(actually_on && reagents.total_volume < SHOWER_SPRAY_VOLUME)
@@ -337,7 +334,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/shower, (-16))
update_actually_on(intended_on)
// Reclaim water
//if(!actually_on) BUBBER EDIT CHANGE - Unlimited water for showers
if(!actually_on)
if(has_water_reclaimer && reagents.total_volume < reagents.maximum_volume)
reagents.add_reagent(reagent_id, refill_rate * seconds_per_tick)
return 0
@@ -368,7 +365,12 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/shower, (-16))
expose_to_reagents(loc)
for(var/atom/movable/movable_content as anything in loc)
expose_to_reagents(movable_content) // Wash the items on the turf (=expose them to the shower reagent)
reagents.remove_all(SHOWER_SPRAY_VOLUME)
// BUBBER EDIT CHANGE BEGIN - Showers have infinite water
// Original:
// reagents.remove_all(SHOWER_SPRAY_VOLUME)
if(!has_water_reclaimer)
reagents.remove_all(SHOWER_SPRAY_VOLUME)
// BUBBER EDIT CHANGE END - Showers have infinite water
/obj/machinery/shower/on_deconstruction(disassembled = TRUE)
new /obj/item/stack/sheet/iron(drop_location(), 2)