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