diff --git a/code/modules/clothing/under/accessories/accessory.dm b/code/modules/clothing/under/accessories/accessory.dm
index ce4ff8306b4..feef7d06b1a 100644
--- a/code/modules/clothing/under/accessories/accessory.dm
+++ b/code/modules/clothing/under/accessories/accessory.dm
@@ -91,24 +91,42 @@
if(MALE) their = "his"
if(FEMALE) their = "her"
- var/sound = "pulse"
- var/sound_strength
-
+ var/sound = "heartbeat"
+ var/sound_strength = "cannot hear"
+ var/heartbeat = 0
+ if(M.species && M.species.has_organ["heart"])
+ var/obj/item/organ/heart/heart = M.internal_organs_by_name["heart"]
+ if(heart && !heart.robotic)
+ heartbeat = 1
if(M.stat == DEAD || (M.status_flags&FAKEDEATH))
sound_strength = "cannot hear"
sound = "anything"
else
- sound_strength = "hear a weak"
switch(body_part)
if("chest")
- if(M.oxyloss < 50)
- sound_strength = "hear a healthy"
- sound = "pulse and respiration"
+ sound_strength = "hear"
+ sound = "no heartbeat"
+ if(heartbeat)
+ var/obj/item/organ/heart/heart = M.internal_organs_by_name["heart"]
+ if(heart.is_bruised() || M.getOxyLoss() > 50)
+ sound = "[pick("odd noises in","weak")] heartbeat"
+ else
+ sound = "healthy heartbeat"
+
+ var/obj/item/organ/heart/L = M.internal_organs_by_name["lungs"]
+ if(!L || M.losebreath)
+ sound += " and no respiration"
+ else if(M.is_lung_ruptured() || M.getOxyLoss() > 50)
+ sound += " and [pick("wheezing","gurgling")] sounds"
+ else
+ sound += " and healthy respiration"
if("eyes","mouth")
sound_strength = "cannot hear"
sound = "anything"
else
- sound_strength = "hear a weak"
+ if(heartbeat)
+ sound_strength = "hear a weak"
+ sound = "pulse"
user.visible_message("[user] places [src] against [M]'s [body_part] and listens attentively.", "You place [src] against [their] [body_part]. You [sound_strength] [sound].")
return
diff --git a/code/modules/mob/mob_grab.dm b/code/modules/mob/mob_grab.dm
index 8a77b5cd25e..fb02287db6b 100644
--- a/code/modules/mob/mob_grab.dm
+++ b/code/modules/mob/mob_grab.dm
@@ -301,18 +301,30 @@
var/obj/item/organ/external/E = H.get_organ(hit_zone)
if(E && !(E.status & ORGAN_DESTROYED))
assailant.visible_message("[assailant] starts inspecting [affecting]'s [E.name] carefully.")
- if(do_after(assailant, 10) && affecting && E)
+ if(do_after(assailant, 10) && H && E)
if(E.wounds.len)
assailant << "You find [E.get_wounds_desc()]"
else
assailant << "You find no visible wounds."
assailant << "Checking bones now..."
- if(do_after(assailant, 15) && affecting && E)
+ if(do_after(assailant, 20) && H && E)
if(E.status & ORGAN_BROKEN)
- assailant << "The [E.encased ? E.encased : "bone in the [E.name]"] is fractured!"
+ assailant << "The [E.encased ? E.encased : "bone in the [E.name]"] moves slightly when you poke it!"
H.custom_pain("Your [E.name] hurts where it's poked.")
else
assailant << "The [E.encased ? E.encased : "bones in the [E.name]"] seem to be fine."
+ assailant << "Checking skin now..."
+ if(do_after(assailant, 10) && H && E)
+ var/bad = 0
+ if(H.getToxLoss() >= 40)
+ assailant << "[H] has an unhealthy skin discoloration."
+ bad = 1
+ if(H.getOxyLoss() >= 20)
+ assailant << "[H]'s skin is unusaly pale."
+ bad = 1
+ if(!bad)
+ assailant << "[H]'s skin is normal."
+
if(I_GRAB)
if(state < GRAB_AGGRESSIVE)
assailant << "You require a better grab to do this."