diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm
index c59d39dc14c..8f072f3e131 100644
--- a/code/__DEFINES/misc.dm
+++ b/code/__DEFINES/misc.dm
@@ -391,3 +391,7 @@
#define MOUSE_OPACITY_TRANSPARENT 0
#define MOUSE_OPACITY_ICON 1
#define MOUSE_OPACITY_OPAQUE 2
+
+// Defib stats
+#define DEFIB_TIME_LIMIT 120
+#define DEFIB_TIME_LOSS 60
\ No newline at end of file
diff --git a/code/game/data_huds.dm b/code/game/data_huds.dm
index 2c75d6f36e2..178605853e8 100644
--- a/code/game/data_huds.dm
+++ b/code/game/data_huds.dm
@@ -164,6 +164,11 @@
var/image/holder = hud_list[STATUS_HUD]
var/mob/living/simple_animal/borer/B = has_brain_worms()
if(stat == DEAD || (status_flags & FAKEDEATH))
+ if(timeofdeath)
+ var/tdelta = round(world.time - timeofdeath)
+ if(tdelta < (DEFIB_TIME_LIMIT * 10))
+ holder.icon_state = "huddefib"
+ return
holder.icon_state = "huddead"
else if(status_flags & XENO_HOST)
holder.icon_state = "hudxeno"
diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm
index bcc69badc38..dd214c7a673 100644
--- a/code/game/objects/items/devices/scanners.dm
+++ b/code/game/objects/items/devices/scanners.dm
@@ -162,6 +162,10 @@ REAGENT SCANNER
user.show_message("Body Temperature: [M.bodytemperature-T0C]°C ([M.bodytemperature*1.8-459.67]°F)", 1)
if(M.timeofdeath && (M.stat == DEAD || (M.status_flags & FAKEDEATH)))
user.show_message("Time of Death: [station_time_timestamp("hh:mm:ss", M.timeofdeath)]")
+ var/tdelta = round(world.time - M.timeofdeath)
+ if(tdelta < (DEFIB_TIME_LIMIT * 10))
+ user.show_message("Subject died [DisplayTimeText(tdelta)] ago, defibrillation may be possible!")
+
if(istype(M, /mob/living/carbon/human) && mode == 1)
var/mob/living/carbon/human/H = M
var/list/damaged = H.get_damaged_organs(1,1)
diff --git a/code/game/objects/items/weapons/defib.dm b/code/game/objects/items/weapons/defib.dm
index 73bbd0d29d2..256656dfa31 100644
--- a/code/game/objects/items/weapons/defib.dm
+++ b/code/game/objects/items/weapons/defib.dm
@@ -357,8 +357,8 @@
QDEL_NULL(ghost)
var/tplus = world.time - H.timeofdeath
- var/tlimit = 3000 //past this much time the patient is unrecoverable (in deciseconds)
- var/tloss = 600 //brain damage starts setting in on the patient after some time left rotting
+ var/tlimit = DEFIB_TIME_LIMIT * 10 //past this much time the patient is unrecoverable (in deciseconds)
+ var/tloss = DEFIB_TIME_LOSS * 10 //brain damage starts setting in on the patient after some time left rotting
var/total_burn = 0
var/total_brute = 0
if(do_after(user, 20 * toolspeed, target = M)) //placed on chest and short delay to shock for dramatic effect, revive time is 5sec total
@@ -420,6 +420,8 @@
H.emote("gasp")
if(tplus > tloss)
H.setBrainLoss( max(0, min(99, ((tlimit - tplus) / tlimit * 100))))
+ H.med_hud_set_health()
+ H.med_hud_set_status()
defib.deductcharge(revivecost)
add_attack_logs(user, M, "Revived with [src]")
else
diff --git a/code/modules/mob/living/death.dm b/code/modules/mob/living/death.dm
index 0421cbaad18..43a811dc3a3 100644
--- a/code/modules/mob/living/death.dm
+++ b/code/modules/mob/living/death.dm
@@ -67,6 +67,8 @@
med_hud_set_health()
med_hud_set_status()
+ if(!gibbed && !QDELETED(src))
+ addtimer(CALLBACK(src, .proc/med_hud_set_status), (DEFIB_TIME_LIMIT * 10) + 1)
callHook("death", list(src, gibbed))
for(var/s in ownedSoullinks)
diff --git a/icons/mob/hud.dmi b/icons/mob/hud.dmi
index a58a11c3f32..1e6992c86a6 100644
Binary files a/icons/mob/hud.dmi and b/icons/mob/hud.dmi differ