diff --git a/code/__DEFINES/status_effects.dm b/code/__DEFINES/status_effects.dm index 899d3f1a47a..d1636ce20d3 100644 --- a/code/__DEFINES/status_effects.dm +++ b/code/__DEFINES/status_effects.dm @@ -242,6 +242,8 @@ #define STATUS_EFFECT_UNBUCKLE /datum/status_effect/action_status_effect/unbuckle #define STATUS_EFFECT_EXIT_CRYOCELL /datum/status_effect/action_status_effect/exit_cryocell +#define STATUS_EFFECT_REVIVE_NOTICE /datum/status_effect/revive_notice_delay + ////////////////////////// // Mind batter variants // ////////////////////////// diff --git a/code/datums/status_effects/neutral.dm b/code/datums/status_effects/neutral.dm index ce37ee076c9..868afa9f971 100644 --- a/code/datums/status_effects/neutral.dm +++ b/code/datums/status_effects/neutral.dm @@ -412,3 +412,8 @@ /datum/status_effect/action_status_effect/exit_cryocell id = "exit_cryocell" + +/datum/status_effect/revive_notice_delay + id = "revive_notice_delay" + alert_type = null + duration = 15 SECONDS diff --git a/code/modules/mob/dead/observer/observer_base.dm b/code/modules/mob/dead/observer/observer_base.dm index c922ff671ab..d40ef61a12f 100644 --- a/code/modules/mob/dead/observer/observer_base.dm +++ b/code/modules/mob/dead/observer/observer_base.dm @@ -298,6 +298,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp mind.current.key = key + mind.current.update_stat() SEND_SIGNAL(mind.current, COMSIG_LIVING_REENTERED_BODY) return TRUE diff --git a/code/modules/mob/living/carbon/human/human_update_status.dm b/code/modules/mob/living/carbon/human/human_update_status.dm index fa6516724fa..62d46127365 100644 --- a/code/modules/mob/living/carbon/human/human_update_status.dm +++ b/code/modules/mob/living/carbon/human/human_update_status.dm @@ -8,10 +8,22 @@ if(B) if((health >= (HEALTH_THRESHOLD_DEAD + HEALTH_THRESHOLD_CRIT) * 0.5) && ipc_vital_organ_check() && !suiciding) var/mob/dead/observer/ghost = get_ghost() + if(!client && !check_ghost_client() && !key) + if(!has_status_effect(STATUS_EFFECT_REVIVE_NOTICE)) + visible_message("[src]'[p_s()] posibrain fails its power-on self-test. Any recovery from this state is unlikely.") + apply_status_effect(STATUS_EFFECT_REVIVE_NOTICE) + return + if(ghost) - to_chat(ghost, "Your chassis has been repaired and repowered, re-enter if you want to continue playing! (Verbs -> Ghost -> Re-enter corpse)") - SEND_SOUND(ghost, sound('sound/effects/genetics.ogg')) + if(!has_status_effect(STATUS_EFFECT_REVIVE_NOTICE)) + to_chat(ghost, "Your chassis has been repaired and repowered, re-enter if you want to continue playing! (Verbs -> Ghost -> Re-enter corpse)") + SEND_SOUND(ghost, sound('sound/effects/genetics.ogg')) + visible_message("[src]'[p_s()] posibrain buffers...") + apply_status_effect(STATUS_EFFECT_REVIVE_NOTICE) + return + update_revive() + emote("me", EMOTE_AUDIBLE, "chimes as [p_they()] reactivate[p_s()]!") create_debug_log("revived from healing, trigger reason: [reason]") /mob/living/carbon/human/update_nearsighted_effects()