diff --git a/code/game/objects/effects/effect_system.dm b/code/game/objects/effects/effect_system.dm index d5d3555e12d..26d669038ba 100644 --- a/code/game/objects/effects/effect_system.dm +++ b/code/game/objects/effects/effect_system.dm @@ -79,6 +79,9 @@ would spawn and follow the beaker, even if it is carried or thrown. /obj/effect/effect/water/Bump(atom/A) if(reagents) reagents.reaction(A) + if(istype(A,/atom/movable)) + var/atom/movable/AM = A + AM.water_act(life, 310.15, src) return ..() diff --git a/code/game/objects/structures/watercloset.dm b/code/game/objects/structures/watercloset.dm index 2081f911325..76c6715b0da 100644 --- a/code/game/objects/structures/watercloset.dm +++ b/code/game/objects/structures/watercloset.dm @@ -308,6 +308,7 @@ check_heat(C) /obj/machinery/shower/proc/check_heat(mob/M as mob) + M.water_act(100, convertHeat(), src) //convenience if(!on || watertemp == "normal") return if(iscarbon(M)) var/mob/living/carbon/C = M diff --git a/code/modules/mob/living/carbon/alien/alien.dm b/code/modules/mob/living/carbon/alien/alien.dm index 6e5dcdc3dea..a2e7be0928d 100644 --- a/code/modules/mob/living/carbon/alien/alien.dm +++ b/code/modules/mob/living/carbon/alien/alien.dm @@ -152,6 +152,10 @@ bodytemperature += BODYTEMP_HEATING_MAX //If you're on fire, you heat up! return +/mob/living/carbon/alien/proc/handle_wetness() + if(mob_master.current_cycle%20==2) //dry off a bit once every 20 ticks or so + wetlevel = max(wetlevel - 1,0) + return /mob/living/carbon/alien/IsAdvancedToolUser() return has_fine_manipulation diff --git a/code/modules/mob/living/carbon/alien/humanoid/life.dm b/code/modules/mob/living/carbon/alien/humanoid/life.dm index eda8df77ee7..9ecf410a4d3 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/life.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/life.dm @@ -53,6 +53,9 @@ //Handle being on fire handle_fire() + //Decrease wetness over time + handle_wetness() + //Status updates, death etc. handle_regular_status_updates() update_canmove() diff --git a/code/modules/mob/living/carbon/carbon_defenses.dm b/code/modules/mob/living/carbon/carbon_defenses.dm index fddbd0d3cda..ab1c27ca2ee 100644 --- a/code/modules/mob/living/carbon/carbon_defenses.dm +++ b/code/modules/mob/living/carbon/carbon_defenses.dm @@ -14,4 +14,9 @@ visible_message("[src] catches [I]!") throw_mode_off() return + ..() + +/mob/living/carbon/water_act(volume, temperature, source) + if(volume > 10) //anything over 10 volume will make the mob wetter. + wetlevel = min(wetlevel + 1,5) ..() \ No newline at end of file diff --git a/code/modules/mob/living/carbon/carbon_defines.dm b/code/modules/mob/living/carbon/carbon_defines.dm index f9b61a3bd10..b6852c8a8dc 100644 --- a/code/modules/mob/living/carbon/carbon_defines.dm +++ b/code/modules/mob/living/carbon/carbon_defines.dm @@ -20,4 +20,5 @@ var/pulse = PULSE_NORM //current pulse level - var/heart_attack = 0 \ No newline at end of file + var/heart_attack = 0 + var/wetlevel = 0 //how wet the mob is \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index fac498d9219..00ec9e67181 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -231,6 +231,18 @@ if(fire_stacks < 0) msg += "[t_He] looks a little soaked.\n" + switch(wetlevel) + if(1) + msg += "[t_He] looks a bit damp.\n" + if(2) + msg += "[t_He] looks a little bit wet.\n" + if(3) + msg += "[t_He] looks wet.\n" + if(4) + msg += "[t_He] looks very wet.\n" + if(5) + msg += "[t_He] looks absolutely soaked.\n" + if(nutrition < 100) msg += "[t_He] [t_is] severely malnourished.\n" else if(nutrition >= 500) diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index d8d12108b20..c2498a5a740 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -489,7 +489,7 @@ emp_act return -/mob/living/carbon/human/water_act(volume, temperature) +/mob/living/carbon/human/water_act(volume, temperature, source) ..() if(temperature >= 330) bodytemperature = bodytemperature + (temperature - bodytemperature) if(temperature <= 280) bodytemperature = bodytemperature - (bodytemperature - temperature) \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 71226aa8bfb..ec2e253e100 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -108,6 +108,9 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc //Check if we're on fire handle_fire() + //Decrease wetness over time + handle_wetness() + //stuff in the stomach handle_stomach() @@ -547,6 +550,10 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc return //END FIRE CODE + proc/handle_wetness() + if(mob_master.current_cycle%20==2) //dry off a bit once every 20 ticks or so + wetlevel = max(wetlevel - 1,0) + return /* proc/adjust_body_temperature(current, loc_temp, boost) diff --git a/code/modules/mob/living/carbon/metroid/examine.dm b/code/modules/mob/living/carbon/metroid/examine.dm index f8fc23ad2e9..38087b35795 100644 --- a/code/modules/mob/living/carbon/metroid/examine.dm +++ b/code/modules/mob/living/carbon/metroid/examine.dm @@ -32,6 +32,20 @@ if(10) msg += "It is radiating with massive levels of electrical activity!\n" + msg += "" + switch(wetlevel) + if(1) + msg += "It looks a bit damp.\n" + if(2) + msg += "It looks a little bit wet.\n" + if(3) + msg += "It looks wet.\n" + if(4) + msg += "It looks very wet.\n" + if(5) + msg += "It looks absolutely soaked.\n" + msg += "" + msg += "*---------*" usr << msg return \ No newline at end of file diff --git a/code/modules/mob/living/carbon/metroid/life.dm b/code/modules/mob/living/carbon/metroid/life.dm index 8b11c8a1b2f..afcb48726bd 100644 --- a/code/modules/mob/living/carbon/metroid/life.dm +++ b/code/modules/mob/living/carbon/metroid/life.dm @@ -42,6 +42,8 @@ handle_regular_status_updates() // Status updates, death etc. + handle_wetness() + /mob/living/carbon/slime/proc/AIprocess() // the master AI process if(AIproc || stat == DEAD || client) return @@ -285,6 +287,11 @@ else Evolve() +/mob/living/carbon/slime/proc/handle_wetness() + if(mob_master.current_cycle%20==2) //dry off a bit once every 20 ticks or so + wetlevel = max(wetlevel - 1,0) + return + /mob/living/carbon/slime/proc/handle_targets() if(Tempstun) if(!Victim) // not while they're eating! diff --git a/code/modules/mob/living/carbon/monkey/examine.dm b/code/modules/mob/living/carbon/monkey/examine.dm index 5cbb5c6c7ce..9c9d0ef5082 100644 --- a/code/modules/mob/living/carbon/monkey/examine.dm +++ b/code/modules/mob/living/carbon/monkey/examine.dm @@ -40,6 +40,20 @@ msg += "It isn't responding to anything around it; it seems to be asleep.\n" msg += "" + msg += "" + switch(wetlevel) + if(1) + msg += "It looks a bit damp.\n" + if(2) + msg += "It looks a little bit wet.\n" + if(3) + msg += "It looks wet.\n" + if(4) + msg += "It looks very wet.\n" + if(5) + msg += "It looks absolutely soaked.\n" + msg += "" + if (src.digitalcamo) msg += "It is repulsively uncanny!\n" diff --git a/code/modules/mob/living/carbon/monkey/life.dm b/code/modules/mob/living/carbon/monkey/life.dm index 1a3bfc3f05a..cc1808ff6c5 100644 --- a/code/modules/mob/living/carbon/monkey/life.dm +++ b/code/modules/mob/living/carbon/monkey/life.dm @@ -62,6 +62,9 @@ //Check if we're on fire handle_fire() + //Decrease wetness over time + handle_wetness() + //Status updates, death etc. handle_regular_status_updates() update_canmove() @@ -660,4 +663,9 @@ return adjustFireLoss(6) return - //END FIRE CODE \ No newline at end of file + //END FIRE CODE + + proc/handle_wetness() + if(mob_master.current_cycle%20==2) //dry off a bit once every 20 ticks or so + wetlevel = max(wetlevel - 1,0) + return \ No newline at end of file