From e8006a8c8a054c68cfe347b9f77e545abb5947c0 Mon Sep 17 00:00:00 2001
From: kyunkyunkyun <120701975+kyunkyunkyun@users.noreply.github.com>
Date: Fri, 11 Apr 2025 22:33:06 +0500
Subject: [PATCH] Better examine descriptions to prevent medics from wasting
time trying to revive people that left the server (#28751)
* better examine
* different message
---
code/datums/mind.dm | 5 +++++
code/game/data_huds.dm | 13 +++++--------
code/modules/mob/living/carbon/examine.dm | 4 +++-
code/modules/mob/mob.dm | 4 ++++
code/modules/surgery/organs/brain.dm | 2 +-
5 files changed, 18 insertions(+), 10 deletions(-)
diff --git a/code/datums/mind.dm b/code/datums/mind.dm
index d7e1f172fa3..588b5cc26c1 100644
--- a/code/datums/mind.dm
+++ b/code/datums/mind.dm
@@ -1764,6 +1764,11 @@
return G
break
+/datum/mind/proc/check_ghost_client()
+ var/mob/dead/observer/G = get_ghost()
+ if(G.client)
+ return TRUE
+
/datum/mind/proc/grab_ghost(force)
var/mob/dead/observer/G = get_ghost(even_if_they_cant_reenter = force)
. = G
diff --git a/code/game/data_huds.dm b/code/game/data_huds.dm
index 2fd600384d0..cc96cb02de2 100644
--- a/code/game/data_huds.dm
+++ b/code/game/data_huds.dm
@@ -205,14 +205,11 @@
// To the right of health bar
if(stat == DEAD || HAS_TRAIT(src, TRAIT_FAKEDEATH))
var/revivable_state = "dead"
- if(!ghost_can_reenter()) // DNR or AntagHUD
- revivable_state = "dead"
- else if(ismachineperson(src) || (timeofdeath && is_revivable()))
- revivable_state = "flatline"
- else if(!mind)
- revivable_state = "dead"
- else if(get_ghost() || key)
- revivable_state = "hassoul"
+ if(ghost_can_reenter()) // Not DNR or AntagHUD
+ if((ismachineperson(src) && client) || (!ismachineperson(src) && timeofdeath && is_revivable()))
+ revivable_state = "flatline"
+ else if(get_ghost() || key)
+ revivable_state = "hassoul"
holder.icon_state = "hud[revivable_state]"
diff --git a/code/modules/mob/living/carbon/examine.dm b/code/modules/mob/living/carbon/examine.dm
index 2401baf1d7f..4a467dcaaae 100644
--- a/code/modules/mob/living/carbon/examine.dm
+++ b/code/modules/mob/living/carbon/examine.dm
@@ -252,8 +252,10 @@
if(suiciding)
msg += "[p_they(TRUE)] appear[p_s()] to have committed suicide... there is no hope of recovery.\n"
if(!just_sleeping)
- msg += "[p_they(TRUE)] [p_are()] limp and unresponsive; there are no signs of life"
+ msg += "[p_they(TRUE)] [p_are()] limp and unresponsive"
if(get_int_organ(/obj/item/organ/internal/brain) && !key)
+ if(!check_ghost_client())
+ msg += "; there are no signs of life"
if(!get_ghost())
msg += " and [p_their()] soul has departed"
msg += "...\n"
diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm
index 2c1824e08ce..c7baee3ac6d 100644
--- a/code/modules/mob/mob.dm
+++ b/code/modules/mob/mob.dm
@@ -1108,6 +1108,10 @@ GLOBAL_LIST_INIT(slot_equipment_priority, list( \
if(mind)
return mind.get_ghost(even_if_they_cant_reenter)
+/mob/proc/check_ghost_client()
+ if(mind)
+ return mind.check_ghost_client()
+
/mob/proc/grab_ghost(force)
if(mind)
return mind.grab_ghost(force = force)
diff --git a/code/modules/surgery/organs/brain.dm b/code/modules/surgery/organs/brain.dm
index 1d10345d7bd..c1e52871a9b 100644
--- a/code/modules/surgery/organs/brain.dm
+++ b/code/modules/surgery/organs/brain.dm
@@ -61,7 +61,7 @@
. += "You can feel a bright spark of life in this one!"
return
if(brainmob?.mind)
- if(brainmob.get_ghost())
+ if(brainmob.check_ghost_client())
. += "You can feel the small spark of life still left in this one."
return