diff --git a/code/datums/mind.dm b/code/datums/mind.dm index 4416f6b8acd..b01aa1f5a42 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -135,6 +135,7 @@ stack_trace("transfer_to(): Some idiot has tried to transfer_to() a non mob/living mob.") if(current) //remove ourself from our old body's mind variable current.mind = null + current.med_hud_set_status() leave_all_huds() //leave all the huds in the old body, so it won't get huds if somebody else enters it SStgui.on_transfer(current, new_character) diff --git a/code/game/data_huds.dm b/code/game/data_huds.dm index 721d6b50252..97dfe21356e 100644 --- a/code/game/data_huds.dm +++ b/code/game/data_huds.dm @@ -186,18 +186,23 @@ // To the right of health bar if(stat == DEAD || HAS_TRAIT(src, TRAIT_FAKEDEATH)) - var/revivable + var/revivable_state = "dead" if(!ghost_can_reenter()) // DNR or AntagHUD - revivable = FALSE - else if(ismachineperson(src)) - revivable = TRUE - else if(timeofdeath && is_revivable()) - revivable = TRUE - - if(revivable) - holder.icon_state = "hudflatline" + revivable_state = "dead" + else if(ismachineperson(src) || (timeofdeath && is_revivable())) + revivable_state = "flatline" + else if(!mind) + revivable_state = "dead" else - holder.icon_state = "huddead" + var/foundghost = FALSE + for(var/mob/dead/observer/G in GLOB.player_list) + if(G.mind.current == src) + foundghost = (G.can_reenter_corpse && G.client) + break + if(foundghost || key) + revivable_state = "hassoul" + + holder.icon_state = "hud[revivable_state]" else if(HAS_TRAIT(src, TRAIT_XENO_HOST)) holder.icon_state = "hudxeno" diff --git a/code/modules/mob/dead/observer/observer_login.dm b/code/modules/mob/dead/observer/observer_login.dm index 543441753a9..0231e16b7e1 100644 --- a/code/modules/mob/dead/observer/observer_login.dm +++ b/code/modules/mob/dead/observer/observer_login.dm @@ -4,6 +4,9 @@ ghostimage.icon_state = src.icon_state updateghostimages() + if(mind?.current) + mind.current.med_hud_set_status() + if(GLOB.non_respawnable_keys[ckey]) can_reenter_corpse = 0 REMOVE_TRAIT(src, TRAIT_RESPAWNABLE, GHOSTED) diff --git a/code/modules/mob/dead/observer/observer_logout.dm b/code/modules/mob/dead/observer/observer_logout.dm index 8622ba7c845..317919e7c19 100644 --- a/code/modules/mob/dead/observer/observer_logout.dm +++ b/code/modules/mob/dead/observer/observer_logout.dm @@ -5,3 +5,5 @@ spawn(0) if(src && !key) //we've transferred to another mob. This ghost should be deleted. qdel(src) + if(mind?.current) + mind.current.med_hud_set_status() diff --git a/icons/mob/hud/medhud.dmi b/icons/mob/hud/medhud.dmi index 8a46e47f0c2..c523bbe4a90 100644 Binary files a/icons/mob/hud/medhud.dmi and b/icons/mob/hud/medhud.dmi differ