From 75f19938b3d93d4326097c2e7196ae78b6efcac2 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Mon, 24 Aug 2015 00:03:56 -0400 Subject: [PATCH 1/2] Fixes an apparent clonexadone typo --- .../reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm index 0009684c309..30bcf0ba6f3 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm @@ -144,7 +144,7 @@ /datum/reagent/cryoxadone/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) if(M.bodytemperature < 170) M.adjustCloneLoss(-30 * removed) - M.adjustOxyLoss(-3 * removed) + M.adjustOxyLoss(-30 * removed) M.heal_organ_damage(30 * removed, 30 * removed) M.adjustToxLoss(-30 * removed) From 286e16a0f37ba1b54038b1bd7d375ecb36c76b39 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Mon, 24 Aug 2015 00:11:40 -0400 Subject: [PATCH 2/2] Fixes cryogenic showers Changes shower temperature settings to use more reasonable temperature values. A menu is now shown when adjusting shower temperature. --- code/game/objects/structures/watercloset.dm | 52 +++++++++------------ 1 file changed, 23 insertions(+), 29 deletions(-) diff --git a/code/game/objects/structures/watercloset.dm b/code/game/objects/structures/watercloset.dm index 3da9f864851..62f98dcedac 100644 --- a/code/game/objects/structures/watercloset.dm +++ b/code/game/objects/structures/watercloset.dm @@ -129,6 +129,7 @@ var/watertemp = "normal" //freezing, normal, or boiling var/mobpresent = 0 //true if there is a mob on the shower's loc, this is to ease process() var/is_washing = 0 + var/list/temperature_settings = list("normal" = 310, "boiling" = T0C+100, "freezing" = T0C) /obj/machinery/shower/New() ..() @@ -150,7 +151,7 @@ if(on) if (M.loc == loc) wash(M) - check_heat(M) + process_heat(M) for (var/atom/movable/G in src.loc) G.clean_blood() @@ -158,15 +159,11 @@ if(I.type == /obj/item/device/analyzer) user << "The water temperature seems to be [watertemp]." if(istype(I, /obj/item/weapon/wrench)) + var/newtemp = input(user, "What setting would you like to set the temperature valve to?", "Water Temperature Valve") in temperature_settings user << "You begin to adjust the temperature valve with \the [I]." + playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) if(do_after(user, 50)) - switch(watertemp) - if("normal") - watertemp = "freezing" - if("freezing") - watertemp = "boiling" - if("boiling") - watertemp = "normal" + watertemp = newtemp user.visible_message("[user] adjusts the shower with \the [I].", "You adjust the shower with \the [I].") add_fingerprint(user) @@ -177,8 +174,8 @@ if(on) overlays += image('icons/obj/watercloset.dmi', src, "water", MOB_LAYER + 1, dir) - if(watertemp == "freezing") - return + if(temperature_settings[watertemp] < T20C) + return //no mist for cold water if(!ismist) spawn(50) if(src && on) @@ -200,7 +197,7 @@ wash(O) if(ismob(O)) mobpresent += 1 - check_heat(O) + process_heat(O) /obj/machinery/shower/Uncrossed(atom/movable/O) if(ismob(O)) @@ -304,8 +301,8 @@ if(!on) return wash_floor() if(!mobpresent) return - for(var/mob/living/carbon/C in loc) - check_heat(C) + for(var/mob/living/L in loc) + process_heat(L) /obj/machinery/shower/proc/wash_floor() if(!ismist && is_washing) @@ -317,22 +314,19 @@ spawn(100) is_washing = 0 -/obj/machinery/shower/proc/check_heat(mob/M as mob) - if(!on || watertemp == "normal") return - if(iscarbon(M)) - var/mob/living/carbon/C = M - - if(watertemp == "freezing") - C.bodytemperature = max(80, C.bodytemperature - 80) - C << "The water is freezing!" - return - if(watertemp == "boiling") - C.bodytemperature = min(500, C.bodytemperature + 35) - C.adjustFireLoss(5) - C << "The water is searing!" - return - - +/obj/machinery/shower/proc/process_heat(mob/living/M) + if(!on || !istype(M)) return + + var/temperature = temperature_settings[watertemp] + var/temp_adj = between(BODYTEMP_COOLING_MAX, temperature - M.bodytemperature, BODYTEMP_HEATING_MAX) + M.bodytemperature += temp_adj + + if(ishuman(M)) + var/mob/living/carbon/human/H = M + if(temperature >= H.species.heat_level_1) + H << "The water is searing hot!" + else if(temperature <= H.species.cold_level_1) + H << "The water is freezing cold!" /obj/item/weapon/bikehorn/rubberducky name = "rubber ducky"