`TK0UIz9`aPN!J*vH*S4=
zd_0{$f4`t|F3V<-yXVjH!uZEEU$`qQ7%8zg}?m94GZ`$;YrJ$CFEVXMhPVZUE`
zCP!{Asr3878_?tO!0mPm$>Z|qD$6(ZC@Lx<4Gj&N`!2iPE^X6p4{q+kZyqSyK(MB!
z#&9sbUN4oc6EY}@Vz}F5O-+qaHAB?Y)X`IQfTFv0>Gq6lhgu{Yu6GWxUO`Y?k14eMXp^-Sl(0Vk#4i;sq_GY
zyY97Q-eOEl3@t4!B>+%bT1wa^gT=+g(l(2Wi!o)&6jWDNgKZuNX!oZpEG(p<&qx6v
zCnrbiX@(3`RaJ!%BSxrtMN#OiS+j(d6aW}8VgzAr>)YeY$c)75@;K&lA+djdp$%7i
zyEYI-zk1vqZc`M(FAD07*cbG5v!AA(+=h|v
zB8+qwVN`nwMzxn<#)}_n%7)w9yC?gK8*w~d*!D6F?Ds*RWQObR9DJVdpHW}?^7&+(
z=5i-nk=E;EE9Ck*GiJ=70|!d}2dSX}TeohNdTq>E;5|ED@?~WlYm@g1OG``1V=ER=
zQY-#x2pwv{Z*ubq#QPkhyv&8?KZk4<2zB&37V~){uE(+97b^$@=rV{=zB`;ec@lc#
zT|k@606_N!q7qKu2G2vHHw5!eSyGM13a~&6{qi|`B*111|A?TfpaOiL2CFLzsNi?p
zkBNz))z#HtiTCD8OG`;|ax!(h-AGPO7G@FK4qIk~>gsBZ1cEE{vVQ1R?#Y%dTVyju
z)l2wr9OI$acXoCXMNueAvYEpYyPZ%kcipX6%Q&OQy#Qdd*)*5DhK2?x+z%tW|B-FB
z-d7m4dEb){QnRxwa;GE7jBRgk>G3(YY}rB|eDFbO`Mz>SP!vTSQ=2Wg>F*_71-Ef7
zrE(GOp)LgXJ^7&8m);oY9|7GON#=oEjQD}e35U~9M~~_X;r+h~2a=Pbzp>B2dzL-9
z6)*wfU(@h%;>3y2r;G6yHUQAFQtph59zB}2tXxS)j~*>uDDBOfn8WF(YgR79%=_-Dz;vRi@ix|>=P5S$r_iHY>;LS~jAi|w9e8ZT0ty5JVq$DIdYn53pm|h5c-d1N0?=GkL}byn_oV&~
zaOC6XcPJWt%fk=TmWLmv`eOiSoIV|m)29o^JoLt4=^ijY6z2VCG@x{U5e&3=+h*`G|05Fbm$B!c?Cr4eBWO;^g|K1V~m3|5w
zIEP9<#UKf%*8xENk{?lPGyyZhk=&07&tdJ3V311g$E1GAkLaMaJBagSE&56R^Y(n`
zFKLAc*3kI$)9Q@>=fMcF*lC8zlP41|CS$Tu0SU&98%GWwK1}&MJ6^bOA<4_jqkNvP
zD>KahRX7kE6Q{Z4#m2-j=K%mPXzdQ-1*FCRLW3SE$LlNoRM4?j5XmSv^*Cs%sd?RH_h4j(@Jns;{rnEuENbxi;C-d4?hr~W?F
zJ8jdoSnz)aXx8rZuHS`ndu%q!Qg7;wx7jF5M(4bo=I>f=BYj^!yHVeJf?x0V(Pt*abgk*h8t3zU<@kJ0
z%k>2OeME0KBLnfge#T$OXXn2Z`g8qyzmKw{=N1=~(KDy*SX@x1awZ^nS=xzUQ2S13
zUBSL`jF(;R!qw9U)a&y;MIk#SgVG(hCp2iXORtgsLOwfd)96dV&lDc7-Jed*+8uc9
z{&bZm?!8lJN#I4n^#i(If7f$tbwS3-PAo&XdKWvmN>oMXk
zC;0bwFEuWy3%-s#s?LZ-^xc1|d#mnn@6)dem&gBo;}?W+gEHr${^&+9$#b%L*)wO-
zgl~<9`%E$PQh0nW`!NfrH{#ZjN9mzFJ6Pfk)*X5hfRY`1@m=4Z28P`G^sBTm+Ku>;
zW7Jd_?Z&-Nze*Vw9UTo`@*FGA*DG#s$5;0KkV%b^!WrV32{A;^FD@vfyf?x;5@sMC
zhw|)LTlth)U;kL7xA>}D)OFWZcg8n*PF7S@M0n2QYs0_NVR-vwA$)Z;c>81_{*?}c
z$JeHE05pNrn$NW%VA3NymG>GCUHKZrI=6;D(2PkIL7B3)+>h
zH{gbce-D6L1wU(dVD=jhy7}olgb#Yw?!e}!?;x|^_>2Nw9SY{b<%9L7Rg`0MlUL}(
zw2I)@KU`Q70PNeh4+ursWMyS(`V)>bY7YnofE+%2nDPs@3{Iz$bar-9lgT7-eAqRM
zkH89nV=#&bml-HjUTPp97$46P(=CV?g8Z`wHRbZp293aTyj&15M9}dv
zT$>l<-RbWS^!a@cbglL>16?VwJ@6>aZ#x?t+>liM5cFVe4?If8+_?b9cIAUfp3}F*
zbFwyxyLuZPIsLad^{1afFXKl}N5a^ta3A?ZkVQpBq&qjXw_LbgC5!j{^@=ibZ$OTI
z^j$hKIUc7R9_XcO;A9Ux@Z>wM
z$+*BgRpMdm)cEf$a_ba=uS|jz#d_DoqXTHRg?@SG;2I9zxUC2xv
z3*Z$rpZOBsS2^IwiCvhII2Hil*tH%bb=-&$mlzcbW#_lytE+*s^VDnaqINx~?aNF@x=}x#@E{%lSuG!!FKc0FT9*;+}hxgSAftJb
zRHepcyhNNH3nGSKLdFOrB}xAD-s!xmf0Ljn3NUCi&9_=9FBL_(q?|q}ih}VIzfULF
i?xZsLjSkW`jQV=-0C=30l)-M>Fbsyz_EQM$H3-(UMX`e~Ly97Y_7wtJqHQ8FL&x)?B4?0*`rrZ%)c4RwG!Sypp87s5l&KZMYk7f+yEgRyK2<9bmK-Q(sRaU*EuF40pz6cRy)z^0b
zk5e5-gLDydMmYvatXsfFiEU^B2V{$*`YMvn1~4NRV$`LcXvLUBk8uwoWVrbZB9shj
zS2PM0V7;o=k7M&`u^*>7@Sfjfv7vV7w{;@Tv9YB0gEAbk&9f83*=0zzU+VTfrNOx
zBHTaS?l<>egL7HpMLo0IK5ll~$1ktQl1)P|l`U!DW6hRr^GUAiaqFJn_HO@rXnzA>
z7xY?OFTW=M012H*L_t(|ob6j*XjIu5|DDNR3}$18CfjO2B1mXoT-G?VY#b>_
zA9SD0w%CV-tq=PWS*ub)DC-hYiWJ<1KCHCWC*6gj)DDroLs%Q3luIE|ND$33#?E9Y
z^WV&jbNVp*-JE;ooI8I^G^YK*ec_x#A+wHar%jGg|-@c8Wo*s*wj!=ka4MR!Rz`y{XpP#qsmX?;dTyMvY
z9ju;?5Q#*1I2>NnmlF&I`NF~iVzHR5-@(B_J~uaKD{}#W+wF$e>$M)Y+l_oaZ&e~v
zIzl0vK?4H=d|+UJ13+(YFYoQ`wdqGjMr^WC-QwaR4~N6-(xpo^1k#u^u84Fx&C}_0
zO?faFLgn+1Y8;5xqf0z|_=~mYhf=qI|;uP%4#JI-RzS1+0?t@Zm%B_4Qfh
zfk1!*z{0|UvOgku+qP{ypU*P@aA&hwl*?rl3I(fTxm-rMT(&hxpNlPH}n~sc#X})z!rrV@Rb^OeBZWKA%rZS}+*ow87QGggwX{?d?dVQdT9G%f&O9jFqlbDpu!o
zXo|<TxjvYH@)se|i
zkt4r2H&8vZEG;deTrM;63<41$69QDdMfK+DL0m?Sl0wjt0s!6J-54GoMq68(t$f%p
z*tBqJmq}6e`%0ryv!uLCG(?QNF`1_M(v1=4;55G9@8`*6@`dN;qCsWjmz$1RVR^1AdyHY+X1Vj(0Cu
zJi$aFVXal#=}D)GN>0#i>Jc6L_To=6nKx#$%tkD@U}QcTli+qZAGzIDVG>G%8j%E}5{
zE*CGAN<5WH@nW%v$B!RZ`;Gk`N(o@=sNZH2X6H8u)JW6+;$a4`JfrN0j2gMlj?G
zMU9HiKzX9|bRsEEWa|3WK{lSsfGR;^+6AnJEP6!4#TYNj^#mELGTccAH1BCLQIvn}
z!}WS$O`_69#@j#sm^(=w8Yadm)X^jB{D%*7Q8oiz8~@?MoSsJesz=Hn{#E^XmLwn$
zql)FCPTZW<0#2m0La1nzh;RORo*lpP6^>u|swPeCKG-|YLU%N4waK^1Rw0R|IRJuMKXvSpvgT(XS}Yw6(f>2Z!)o+s%<0vi5?^xED}KwbyQ{%
z`=O2ca^+Q>CerC`SU^>n$^1jU@X|dRdPLy-?HU<+IAhC
z?Km6$o3dTSQ^2S1sda7M=Q#7umrC84eG$i(tJAw%^@w
zQEBX&{<~u{81Do}Vm7<+PH-e=TKq)Y3Tb24
zLR@t~rE>XBa&fFv6Q
z5do-)lCfbnUlA%&))PdUNZv~)#_1}9_7VU!%SqI!+E9I2ig5B2S+_34w0e(2o+5%g
zN7RW@++$RdK!)qc5xoTvF2n8Ns!+Wy+!tZZmIKxAB~>|4y}MPF1HjSKm$_)LYB|YK
zsUBL5O6-UI`?YU3z`oTsjPW0|G@ujSjDKINJ5=}@Z%=<&Q~u5H5nH}6egfW!%U1r^
zNVN3v=?3&63jn55j{yL~zJ6O;Z1>@bQG9;+s;!-+D<<&ymhCmV@f)juB%L@qW$BLn
z`Ij}5y!QSVR$BZIrTo|A!uSbGisZC{HQ8f+)L;8ATub-6>osNLH%8zuSBdnOui8ku
z_WluxC4~qPNg`4vCMIn8R$&pN3Rwj55RxLC+BxZx?os&5SCMp&HauDH#AWQ+
zv&Z^dvg{Q^3dt9N&10Ox87-r=0+B+V( {
const { act } = useBackend();
const { color, item } = props;
- const { health, icon, full_name, nickname, orbiters, ref, background_color } =
- item;
+ const {
+ health,
+ icon,
+ full_name,
+ nickname,
+ orbiters,
+ ref,
+ background_color,
+ background_icon,
+ } = item;
const displayHealth = typeof health === 'number';
@@ -465,7 +473,11 @@ const ObservableItem = (props: {
>
{displayHealth && }
{!!icon && (
-
+
)}
{capitalizeFirst(getDisplayName(full_name, nickname))}
{!!orbiters && (
@@ -482,7 +494,15 @@ const ObservableItem = (props: {
/** Displays some info on the mob as a tooltip. */
const ObservableTooltip = (props: { readonly item: Observable }) => {
const {
- item: { caste, health, job, full_name, icon, background_color },
+ item: {
+ caste,
+ health,
+ job,
+ full_name,
+ icon,
+ background_color,
+ background_icon,
+ },
} = props;
const displayHealth = typeof health === 'number';
@@ -496,7 +516,11 @@ const ObservableTooltip = (props: { readonly item: Observable }) => {
{!!caste && (
{!!icon && (
-
+
)}
{caste}
@@ -504,7 +528,11 @@ const ObservableTooltip = (props: { readonly item: Observable }) => {
{!!job && (
{!!icon && (
-
+
)}
{job}
@@ -520,24 +548,40 @@ const ObservableTooltip = (props: { readonly item: Observable }) => {
const ObservableIcon = (props: {
readonly icon: Observable['icon'];
readonly background_color: Observable['background_color'];
+ readonly background_icon: Observable['background_icon'];
}) => {
const { data } = useBackend();
const { icons = [] } = data;
- const { icon, background_color } = props;
- if (!icon || !icons[icon]) {
+ const { icon, background_color, background_icon } = props;
+ if (!icon || !icons[icon] || !background_icon || !icons[background_icon]) {
return null;
}
return (
-
+ <>
+
+
+ >
);
};
diff --git a/tgui/packages/tgui/interfaces/Orbit/types.ts b/tgui/packages/tgui/interfaces/Orbit/types.ts
index d1a360de0d72..3ef1268762ee 100644
--- a/tgui/packages/tgui/interfaces/Orbit/types.ts
+++ b/tgui/packages/tgui/interfaces/Orbit/types.ts
@@ -35,6 +35,7 @@ export type Observable = {
icon?: string;
job?: string;
background_color?: string;
+ background_icon?: string;
full_name: string;
nickname?: string;
orbiters?: number;