From 4a7019f919f72d7bc5e14688c3fbc636b644cfb3 Mon Sep 17 00:00:00 2001 From: Contrabang <91113370+Contrabang@users.noreply.github.com> Date: Sat, 14 Oct 2023 14:44:20 -0400 Subject: [PATCH] Adds a new hud icon for non-DNR bodies with clients (#22786) * bam, new hud * umm, maybe * dmi change --- code/datums/mind.dm | 1 + code/game/data_huds.dm | 25 +++++++++++------- .../mob/dead/observer/observer_login.dm | 3 +++ .../mob/dead/observer/observer_logout.dm | 2 ++ icons/mob/hud/medhud.dmi | Bin 1386 -> 1461 bytes 5 files changed, 21 insertions(+), 10 deletions(-) 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 8a46e47f0c27daa0b42bab4f3cfb4beb6b54f21b..c523bbe4a9011c3c183b9f9c24619e46887dc252 100644 GIT binary patch delta 1275 zcmV+9=jX=%sD#{i!I5T5`b zp8!Cg0AQa0fS&-Lp8%hL0Fiem1=XqmYE_Y-7m>Xee>Aq1{Qv*}0d!JMQvg8b*k%9# z0VsM@Sad{Xb7OL8aCB*JZU6vyoTZgfPs1P(fS=2+AlqweXlXb1;EUN}_Tc^lhO3aU zHYrTqzqi_`I5{brzQE=CF6DYhm-Kdbw?EMB{hmC*V0GWo8(Lp6l09qb)VSdl$rR{E z<))2wf5O4IT&R;&AdFMz1<9ly>=-Ob)(+wb)7nS1F>|mN==wRFgjPR%H?iLI%sQ__ zCN=?{$#Whuu{rb1Di7Vp1vbr|`QtA8=!E~M#c#LSlI{-M_utGbK6cM*sv}P4000Ai zNklsHf16o%mdEwrJAq{Z_Q@hlp^1M2->nCT?ePA0RbC8oQk@3Z{H&Igl^ zf7t%mT^dCmdnMmE+An$M2PN-(P}c^eqShW7;8 z^A!p>J}UkQ1x)TtG{R{DfSkLT(K(4MOwKzpvgpVyuP000000001hf8CLm zc6J`6h^z-%@4;wK?;9HfMg{ z=FA`1ocTkWGk;`r=8tX8{E4lhe}JbJw}5BMp1TFSSaNpe7Vz?~^Ye4JfL9Bz3vK~# z{&+j*7Vxg}-f#=}Q2JP+00000000000002kO&2z2{>kRdKik|NklQXRzWG&UF~7Ds z`PzK#{KXgJYsD?#TjBeHTfoiDk0lKS{Ipa*`O-JPD$loc1HUXz{<>D6f0!?R0rmX$ z6=23K3Xt**1#DXA0L~3;INv!62poU{>Mvp&&Uemv8>(^M#x|S>0000000000eP-=e z({%0qx|ME|FaO2k+vcnPH(>pIlrN97OxmxT4>*)xy==;7nUt?SAmPntnUr6Az{1Iw z^DGndxi{|?VCF3f@a0!63ZOZ^dI61jp@15biv%D%nY~`W<$gYGmrvW}(>D2PJ)Oz> z_1wQ+&aHTJJ`dzGIiCmenViqXyjy^owO7000000001N+HaNU-ngV#f(rlu002ovPDHLkV1l2rWj+7^ delta 1228 zcmV;-1T*`!3+f7x77qa62m=5B0NbBPVgLXDtC1x)8vvgG5T5`bp8!Cg0AQa0fS&-L zp8yXJ59{mek$@*1pMU_LU;v*$0G}WLp8x>B004LZ0M!5h)v5q$Rgu9N6|91mfB*mh z0d!JMQvg8b*k%9#0UMF;6@STU!!Qs)&(>FnuGaUGn#F zYe?0gsXQ&dNW*)B7|qCY{c0ebiVx1^a;ZJcU!xnCCFK9Dkx<<>fOhZr=~P zvC>)7LO8+dEF%ZmJdpmLafWeD-_GVWHh-LImIZ9oLgQ?+7MyR@ zg7ZP`-p;d);c$CZ>X3d7JHOujh8ZK8ftlXZ!oT#D2eeL3|#2|4CxLH;K>lz3Bdb zV2>a9en6{lX!LllegN&c`T?}(`uln9IRF3v0000009YSIZT|axmw5eSmzY0siTP8P zm>;;r{Lm%lN3P`cXN5Vgn0W*H&m6LV=Zjv*0$wgSIe(D_yt;9EdMf4zujk%W#QgB> zwRbaOe)PWa!Af3#RvcUFTtIaTn41FDj(-QNox;rS07C)V=g{Ll1_1y700000004U9 z%q8X@U1I*pCFY-9@&Kjlyb+pTH0JY5m&ki_kw5!V`&yF)e6zkcWC1@aKj<S69Cl zEGgi(qklR1d1!u7U*AFje;guz=@sbbA6@}=+@Sz3f8U4;@T4xFYhE1%I6ou`@ISGU#ysLNcFTDH000000002cXQ}bx=X(P7oGo_Z~k8dnRnOAWhvLw zi*IjCY(H6l`7)6=@qC%cn^=DJ0_?a$ z0ZZ~L6(IAg72xH4+S^&}y!rvO^XdoC&a3a|we#xxdF?y^000000002!v-Ezwi0;?B z<_p*Vx#&fg&USg(dfB+^Wq&_kCh{hpFWf-+-Cpc6D;HqL9SZRB>IHbzx3k(P!1*Cj qz+La>wXvTE0000000000ee)MZFR_N2%Lh3C0000