diff --git a/code/game/turfs/simulated/water.dm b/code/game/turfs/simulated/water.dm index c8faff4a194..9ef21d02ce8 100644 --- a/code/game/turfs/simulated/water.dm +++ b/code/game/turfs/simulated/water.dm @@ -86,7 +86,7 @@ gasid = H.species.exhale_type var/datum/gas_mixture/water_breath = new() var/datum/gas_mixture/above_air = return_air() - water_breath.adjust_gas(gasid, BREATH_MOLES) // They have no oxygen, but non-zero moles and temp + water_breath.adjust_gas(gasid, ONE_ATMOSPHERE) // this will cause them to suffocate, but not pop their lung water_breath.temperature = above_air.temperature return water_breath return return_air() // Otherwise their head is above the water, so get the air from the atmosphere instead. diff --git a/code/modules/emotes/definitions/_mob.dm b/code/modules/emotes/definitions/_mob.dm index 1c8b0b97cea..4cd9bfb708d 100644 --- a/code/modules/emotes/definitions/_mob.dm +++ b/code/modules/emotes/definitions/_mob.dm @@ -163,7 +163,8 @@ /decl/emote/visible/rshoulder, /decl/emote/visible/squint, /decl/emote/visible/tfist, - /decl/emote/visible/tilt + /decl/emote/visible/tilt, + /decl/emote/visible/flail ) /mob/living/silicon/robot diff --git a/code/modules/emotes/definitions/visible.dm b/code/modules/emotes/definitions/visible.dm index 09ed98dfc71..d19d78ec4c3 100644 --- a/code/modules/emotes/definitions/visible.dm +++ b/code/modules/emotes/definitions/visible.dm @@ -333,4 +333,8 @@ /decl/emote/visible/tilt key = "tilt" - emote_message_3p = "USER tilts USER_THEIR head." \ No newline at end of file + emote_message_3p = "USER tilts USER_THEIR head." + +/decl/emote/visible/flail + key = "flail" + emote_message_3p = "USER flails violently!" \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/human_helpers.dm b/code/modules/mob/living/carbon/human/human_helpers.dm index d9d70bc0257..db5c0464bd8 100644 --- a/code/modules/mob/living/carbon/human/human_helpers.dm +++ b/code/modules/mob/living/carbon/human/human_helpers.dm @@ -189,4 +189,9 @@ /mob/living/carbon/human/proc/has_hearing_aid() if(istype(l_ear, /obj/item/device/hearing_aid) || istype(r_ear, /obj/item/device/hearing_aid)) return TRUE + return FALSE + +/mob/living/carbon/human/proc/is_submerged() + if(lying && istype(loc, /turf/simulated/floor/beach/water)) // replace this when we port fluids + return TRUE return FALSE \ No newline at end of file diff --git a/code/modules/organs/internal/lungs.dm b/code/modules/organs/internal/lungs.dm index b88afbdb169..012edb2f435 100644 --- a/code/modules/organs/internal/lungs.dm +++ b/code/modules/organs/internal/lungs.dm @@ -80,7 +80,10 @@ /obj/item/organ/internal/lungs/proc/handle_failed_breath() if(prob(15) && !owner.nervous_system_failure()) if(!owner.is_asystole()) - owner.emote("gasp") + if(owner.is_submerged()) + owner.emote("flail") + else + owner.emote("gasp") else owner.emote(pick("shiver","twitch")) @@ -153,7 +156,10 @@ if(inhale_efficiency < 1) if(prob(20)) if(inhale_efficiency < 0.8) - owner.emote("gasp") + if(owner.is_submerged()) + owner.emote("flail") + else + owner.emote("gasp") else if(prob(20)) to_chat(owner, SPAN_WARNING("It's hard to breathe...")) breath_fail_ratio = 1 - inhale_efficiency diff --git a/html/changelogs/geeves-no_lung_pop.yml b/html/changelogs/geeves-no_lung_pop.yml new file mode 100644 index 00000000000..d2426389abf --- /dev/null +++ b/html/changelogs/geeves-no_lung_pop.yml @@ -0,0 +1,7 @@ +author: Geeves + +delete-after: True + +changes: + - bugfix: "Drowning in the pool no longer causes your lungs to pop." + - bugfix: "You will no longer gasp for air when submerged, instead you will flail violently." \ No newline at end of file