From e2fa2e6ebdf508fe19bb7c31b84f04fe3402f6dc Mon Sep 17 00:00:00 2001 From: Tiniest Shark Date: Tue, 14 Jul 2026 12:24:01 -0400 Subject: [PATCH 001/108] Hardsuit and Softsuit Tails for Vox (#42704) * prototype edit * hardsuits * softsuits --- Resources/Prototypes/Body/Species/vox.yml | 4 + .../ERThelmets/ertchaplain.rsi/meta.json | 84 ++++++++------ .../off-equipped-HELMET-vox.png | Bin 0 -> 907 bytes .../on-equipped-HELMET-vox.png | Bin 0 -> 906 bytes .../equipped-HELMET-vox.png | Bin 0 -> 641 bytes .../Helmets/ancientvoidsuit.rsi/meta.json | 50 ++++---- .../carpsuit.rsi/equipped-HELMET-vox.png | Bin 0 -> 658 bytes .../Head/Hoods/carpsuit.rsi/meta.json | 34 +++--- .../equipped-OUTERCLOTHING-vox.png | Bin 0 -> 1801 bytes .../ERTSuits/ertchaplain.rsi/meta.json | 58 +++++----- .../equipped-OUTERCLOTHING-vox.png | Bin 1819 -> 2189 bytes .../equipped-OUTERCLOTHING-vox.png | Bin 1841 -> 2349 bytes .../equipped-OUTERCLOTHING-vox.png | Bin 1825 -> 2231 bytes .../equipped-OUTERCLOTHING-vox.png | Bin 1816 -> 2133 bytes .../equipped-OUTERCLOTHING-vox.png | Bin 1778 -> 2065 bytes .../equipped-OUTERCLOTHING-vox.png | Bin 2148 -> 2883 bytes .../equipped-OUTERCLOTHING-vox.png | Bin 959 -> 2298 bytes .../cburn.rsi/equipped-OUTERCLOTHING-vox.png | Bin 2467 -> 2590 bytes .../clown.rsi/equipped-OUTERCLOTHING-vox.png | Bin 8131 -> 2703 bytes .../equipped-OUTERCLOTHING-vox.png | Bin 2312 -> 2943 bytes .../equipped-OUTERCLOTHING-vox.png | Bin 2187 -> 2710 bytes .../equipped-OUTERCLOTHING-vox.png | Bin 2462 -> 2933 bytes .../equipped-OUTERCLOTHING-vox.png | Bin 2149 -> 2751 bytes .../equipped-OUTERCLOTHING-vox.png | Bin 2699 -> 2878 bytes .../luxury.rsi/equipped-OUTERCLOTHING-vox.png | Bin 3694 -> 2628 bytes .../maxim.rsi/equipped-OUTERCLOTHING-vox.png | Bin 2319 -> 2815 bytes .../equipped-OUTERCLOTHING-vox.png | Bin 2089 -> 2334 bytes .../mime.rsi/equipped-OUTERCLOTHING-vox.png | Bin 2246 -> 2751 bytes .../equipped-OUTERCLOTHING-vox.png | Bin 3416 -> 3001 bytes .../equipped-OUTERCLOTHING-vox.png | Bin 6680 -> 3047 bytes .../equipped-OUTERCLOTHING-vox.png | Bin 5539 -> 2645 bytes .../rd.rsi/equipped-OUTERCLOTHING-vox.png | Bin 2141 -> 2739 bytes .../equipped-OUTERCLOTHING-vox.png | Bin 2071 -> 2645 bytes .../equipped-OUTERCLOTHING-vox.png | Bin 2289 -> 2813 bytes .../equipped-OUTERCLOTHING-vox.png | Bin 1933 -> 2372 bytes .../equipped-OUTERCLOTHING-vox.png | Bin 2131 -> 2699 bytes .../equipped-OUTERCLOTHING-vox.png | Bin 2094 -> 2624 bytes .../spatio.rsi/equipped-OUTERCLOTHING-vox.png | Bin 2227 -> 2841 bytes .../equipped-OUTERCLOTHING-vox.png | Bin 2278 -> 2835 bytes .../equipped-OUTERCLOTHING-vox.png | Bin 2302 -> 3190 bytes .../equipped-OUTERCLOTHING-vox.png | Bin 2132 -> 2619 bytes .../equipped-OUTERCLOTHING-vox.png | Bin 2503 -> 3166 bytes .../wizard.rsi/equipped-OUTERCLOTHING-vox.png | Bin 2157 -> 2896 bytes .../equipped-OUTERCLOTHING-vox.png | Bin 0 -> 3173 bytes .../Suits/ancient_voidsuit.rsi/meta.json | 108 +++++++++++------- .../equipped-OUTERCLOTHING-vox.png | Bin 2029 -> 2272 bytes .../equipped-OUTERCLOTHING-vox.png | Bin 841 -> 2027 bytes .../equipped-OUTERCLOTHING-vox.png | Bin 0 -> 1639 bytes .../Suits/carpsuit.rsi/meta.json | 58 +++++----- .../eva.rsi/equipped-OUTERCLOTHING-vox.png | Bin 2323 -> 2531 bytes .../equipped-OUTERCLOTHING-vox.png | Bin 2164 -> 2414 bytes .../equipped-OUTERCLOTHING-vox.png | Bin 2236 -> 2484 bytes .../equipped-OUTERCLOTHING-vox.png | Bin 2171 -> 2346 bytes .../rad.rsi/equipped-OUTERCLOTHING-vox.png | Bin 975 -> 2247 bytes 54 files changed, 227 insertions(+), 169 deletions(-) create mode 100644 Resources/Textures/Clothing/Head/Hardsuits/ERThelmets/ertchaplain.rsi/off-equipped-HELMET-vox.png create mode 100644 Resources/Textures/Clothing/Head/Hardsuits/ERThelmets/ertchaplain.rsi/on-equipped-HELMET-vox.png create mode 100644 Resources/Textures/Clothing/Head/Helmets/ancientvoidsuit.rsi/equipped-HELMET-vox.png create mode 100644 Resources/Textures/Clothing/Head/Hoods/carpsuit.rsi/equipped-HELMET-vox.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Hardsuits/ERTSuits/ertchaplain.rsi/equipped-OUTERCLOTHING-vox.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Suits/ancient_voidsuit.rsi/equipped-OUTERCLOTHING-vox.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Suits/carpsuit.rsi/equipped-OUTERCLOTHING-vox.png diff --git a/Resources/Prototypes/Body/Species/vox.yml b/Resources/Prototypes/Body/Species/vox.yml index 55fff8fb2a..e94375594e 100644 --- a/Resources/Prototypes/Body/Species/vox.yml +++ b/Resources/Prototypes/Body/Species/vox.yml @@ -297,6 +297,10 @@ - type: entity parent: [ OrganBaseTorso, OrganVoxExternal ] id: OrganVoxTorso + components: + - type: VisualOrganMarkings + hideableLayers: + - enum.HumanoidVisualLayers.Tail - type: entity parent: [ OrganBaseHead, OrganVoxExternal ] diff --git a/Resources/Textures/Clothing/Head/Hardsuits/ERThelmets/ertchaplain.rsi/meta.json b/Resources/Textures/Clothing/Head/Hardsuits/ERThelmets/ertchaplain.rsi/meta.json index 7cbcf43056..03384876be 100644 --- a/Resources/Textures/Clothing/Head/Hardsuits/ERThelmets/ertchaplain.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Hardsuits/ERThelmets/ertchaplain.rsi/meta.json @@ -1,41 +1,49 @@ { - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "created by IProduceWidgets", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "created by IProduceWidgets, Vox sprites by TiniestShark (Github)", + "size": { + "x": 32, + "y": 32 }, - { - "name": "icon-flash" - }, - { - "name": "off-equipped-HELMET", - "directions": 4 - }, - { - "name": "off-inhand-left", - "directions": 4 - }, - { - "name": "off-inhand-right", - "directions": 4 - }, - { - "name": "on-equipped-HELMET", - "directions": 4 - }, - { - "name": "on-inhand-left", - "directions": 4 - }, - { - "name": "on-inhand-right", - "directions": 4 - } - ] + "states": [ + { + "name": "icon" + }, + { + "name": "icon-flash" + }, + { + "name": "off-equipped-HELMET", + "directions": 4 + }, + { + "name": "off-equipped-HELMET-vox", + "directions": 4 + }, + { + "name": "off-inhand-left", + "directions": 4 + }, + { + "name": "off-inhand-right", + "directions": 4 + }, + { + "name": "on-equipped-HELMET", + "directions": 4 + }, + { + "name": "on-equipped-HELMET-vox", + "directions": 4 + }, + { + "name": "on-inhand-left", + "directions": 4 + }, + { + "name": "on-inhand-right", + "directions": 4 + } + ] } diff --git a/Resources/Textures/Clothing/Head/Hardsuits/ERThelmets/ertchaplain.rsi/off-equipped-HELMET-vox.png b/Resources/Textures/Clothing/Head/Hardsuits/ERThelmets/ertchaplain.rsi/off-equipped-HELMET-vox.png new file mode 100644 index 0000000000000000000000000000000000000000..20cc4804137f14068e30c4df5bb62d39ee8fda31 GIT binary patch literal 907 zcmV;619bd}P)Px&MM*?KRCt{2nm;7R_FdL5Fx=8_1x?~=>V_XkJr%jMqZ zec$i?5S|aG#Z)L@dP@uH0=xE){JEHn(o$f$O&yZ+vpE~0Hu`AT;K&1o-fyP(} zSjRT8)qs^X1>WCP%=&yC$Fj8=>XTz!N!X^nSkB^Mw*e2&rr^hoISz^<(wb&D4%~4k z(+mB+;yiXwI8jvuMG-+!1e#3N& zv50pQ6G&?sf})7yVi7Mg8H|?;wiB?+Wn~%1@fd#IKA7LVoF2zgbQ{2c8=&6YjWEW# zK4}?aP;c%=Y-hlszZBhuBuN%+^n{a)7tt*N$wEqGGK@bE%5ClOG1VIo4LAXaRK3qS%!a?iUHb#0C?x#^Y zNF7HFmPQ%slB3WaI-xl7=O3&( zi+h0P%#Cu^03iTq1$4|pi(Q?F2%e48$|FzsL`3kII?X0n&=>L3ToF^$XIPhHUK+U(eSa$7_e%Pcxpr z#-a%TnDzOPt<^e;UuTR<=TMT&Cw!v`HB$os>XT#m{4opwc=hHJmj?GOaF(CPWo6k+ z1kF_Rnkj z6Af~wWu>+Fon+Gdo-qc-7^)YWqr9;lTgvTLwIoT{m1WCscZ&y!}oHzJt;jA5xg6xm3l8R6A{4+pd*g4IHP*8>FLMh5d=XH1VIo4 hK@bE%5Crl6@fV9HP7TI>+!6o)002ovPDHLkV1lb+pxgie literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Head/Hardsuits/ERThelmets/ertchaplain.rsi/on-equipped-HELMET-vox.png b/Resources/Textures/Clothing/Head/Hardsuits/ERThelmets/ertchaplain.rsi/on-equipped-HELMET-vox.png new file mode 100644 index 0000000000000000000000000000000000000000..4de5adb0b31e21805ad33d1c14e2f7775c7d6534 GIT binary patch literal 906 zcmV;519kj~P)Px&L`g(JRCt{2nmfkB6sS|vNhyjQ zBRH6$=+;3xBrb&;<036or&~=o)|?Hz0FS8e)uf ze9|(;khv%gS&OBALk`GC7I$R0^R`sHepn+1c4? zn}k>_);E1XZNmBaxgtr@!2Sym1VIo4K@bE%5ClOG1kpe4;=^^rE9|w7gZIRL33t;d z?WK;b2KZ;w_9n0333AqUW>?ZPGR@)MWT(lLsO=l*K{NX#Z z&g>>ovFAqFYk=SdDh0I7g2Ap%gaya)o_x&{J`olix{lfe6P1E3XBc*G0l;8Q%f*{n z7reTQ%Uith+)DQStvYtGbp_mJRX?BEM!@A#o#S0Q67auxjff|RY<(M_58v2|)d_At zO?&!kizWad;Bp~buN#V2MTVYm=_tyv{)BHfp{{EHKx1q~x62>D+~v~Xz6JL4Q#g?q z^hBVp644UW7EVMwL5Oa*=XA-wg3PC07*qoM6N<$f>V*Lwg3PC literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Head/Helmets/ancientvoidsuit.rsi/equipped-HELMET-vox.png b/Resources/Textures/Clothing/Head/Helmets/ancientvoidsuit.rsi/equipped-HELMET-vox.png new file mode 100644 index 0000000000000000000000000000000000000000..cafdbcefc898a16cf557e8e081c3ad1e30b28ab4 GIT binary patch literal 641 zcmV-{0)G98P)Px%J4r-ARCt{2+A(X}Ko|z#*H#AyM}!hEq=GDUG8KnFP026lS}>Yzu7PaT+P|T# zg;pf92y{(`ti?1CVzM<^3hH1QLJ*=}ggV3ujcT2JC&eE6K9hacecyK{9TGkPME|vl zPA6d)Nw&?4W35<=&ad1_7)H{u>i6Hjj%omapV!xOnS`?QD|N^wFRO?}=6|A7$YBs= zS|U7KUDXM-aLNIlsMMTXTz-q;97+y1xokRZFjCL3U~*t$xZA@a<)D;#tmX zFWbM%Pu@O_(h~6ExPl-`Fdl6C^wLQOei%fLei!iKxH9P$_@F*Tdd~quBse%g$Ex4W ze76hF^XB&)AVgxCCbqU)I6oU83`6bw+C@8#lcWW>t~Y!ZQ%F|K79|IyyF^;hE{x8%-s#k-GB8OzVAaAhE{wOT>`dkqt`#0dfae0e5V?F zmOj1y5p3I54gEl&2}lROx3W~I2pwt8Sx$hA{u1bRacr6ZfUWHob~mit7bIktvWzU| z8}|dw&&F#%3<1y6Nm1-M;BVgk=OisCyI(I1L-{t9?UTL}fboQj-dk?T6A=*+5fKp) b5s|V#iyz~vjAn6o00000NkvXXu0mjf?8zQr literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Head/Helmets/ancientvoidsuit.rsi/meta.json b/Resources/Textures/Clothing/Head/Helmets/ancientvoidsuit.rsi/meta.json index ce6a86ea76..1293429106 100644 --- a/Resources/Textures/Clothing/Head/Helmets/ancientvoidsuit.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Helmets/ancientvoidsuit.rsi/meta.json @@ -1,26 +1,30 @@ { - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at https://github.com/tgstation/tgstation/tree/fb2d71495bfe81446159ef528534193d09dd8d34, sprite repaletted by Flareguy for space-station-14", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from tgstation at https://github.com/tgstation/tgstation/tree/fb2d71495bfe81446159ef528534193d09dd8d34, sprite repaletted by Flareguy for space-station-14, vox state by TiniestShark (Github)", + "size": { + "x": 32, + "y": 32 }, - { - "name": "equipped-HELMET", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] + "states": [ + { + "name": "icon" + }, + { + "name": "equipped-HELMET", + "directions": 4 + }, + { + "name": "equipped-HELMET-vox", + "directions": 4 + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + } + ] } diff --git a/Resources/Textures/Clothing/Head/Hoods/carpsuit.rsi/equipped-HELMET-vox.png b/Resources/Textures/Clothing/Head/Hoods/carpsuit.rsi/equipped-HELMET-vox.png new file mode 100644 index 0000000000000000000000000000000000000000..0b8bb4d1c1bbf348cf7398d1858ba8902fdbf3c3 GIT binary patch literal 658 zcmV;D0&V??P)Px%Oi4sRRCt{2+A(X}Ko|z#S0!LCw+PQ(`U|vZtEn+$&DJ4k>tMQ=4jv7@Kz@M9 z;wfA3;LRQj#zoz{WXkBJ1hSMYx7bj)F1kZ)Y?C|53a0M^#{F!2FYA74tX0q8hN z>%foz?x_-eck@(U%uj z_$uGOx?Pv}X5Ax~005}hgxzk0O{e%Ldl@u?&JW(l$t7Ulna}Tc;WSkbErVlD|9pIN z`9+q1{I=`#Cn6#uA|fIpA|m?lINufC_g&R@W6SD`bEo4d(dQpNzt~^pE$M%&M8>xt zw+Aa%yLfdtjuPF9KiSWwKv6{!@`KM8L(Px*!%0LzRCt{2T1{vhM-=`n8cITGPMM9R)L0_p+Zt>_X;=|lC1axh3m+qAZv-JDW_As9S8)NeYwl4Y&3 zYeT!=Ma=AIzW3g|dGqrINRc8%iWDhQq)74qMBi}>&@}G!YC2Uuh z6o{)k{ibt+(i5nSIx=x6ukw?tlk)USqaXgy2N@td_rgMv@+w)JbFm#imBR)Q zLiEI+=|&LObx|l3WMtiX{U-2TEf)%fKG$`lX&QmwaU8g=i$~2@0Dwo$S8!cdt^l#| z+qNx7n5>U|51?s4Aor&>Gz!zX!JfUK6aRSsfFSR%ZCkDcz3_h&MJUd>V2oj-<|23Y zjI7_NxnPU|fJkyP#5otWS`Du2;_~Io0Dzg98O*ONBA?G=XlN)tezLS0$SBe-EUg8W zL0X#BQ7{anWn|*wSA!zOq+aoV<7enx+8&Ow$y)uEY0z+`V%X8#NbOuis#! z=Hl+1oA7-fx~{`CO#uL!rs3qp3*;G*aS*?zX($$pn4g~q0L;(NqgX6L)3l!W4>Z8Y z$Ox*{YF{>+1ps8TSNhe#YflzpOMx~)w=C2M8frPBMJVlw!+vCHs;Rm zfy)YG4Cc-*C^*H9W98?Z3)3`3qtOu4xxuz`a5^_A8jXf9O*8g5kR*Rs?h@{>ott&j zrdJ#{e~J_-Qlvu_$X+BZ@&G&sgSzeKuqTA=92@nOh&*gD%^PjBLljRkBdC8D+ zbW*%qom#T7mSqX`S~>hiAe<+plzEIg2cV|oMJOfT?qLMU-zj6t_OYz_cmP&XClq2NEps!aBnl1`8`M$%d!N?Un-TPUSY^7V49|wo1260 z`+>(#l$rv7a=DDr(NW~{c{q-PN~ID=k{&gPyId|~VqyZW>tcO<9g~xjvW@3?@O>YJ zLZOe6yQXQ1YPH&jum_Ox*uPTpeIK6ZNiSGjT*UhNdcczOVvO)r<>$l{4)?8clk$s; zi*ocy`LIqZy7E^tLbKVFb{odXHhe0(21xL^GplKRjzI+K? z*YWh}Q*h3)va%AZ0SvJmIQHWuGofKH&@ zqGefu-Icn7Oo}_aqa%Je0Zs6b`LSmGnV7z<20^>IX!?-Ky!ji9Q$T0SZR zkkWJ(2$!Su*LAc!tmC(D-@^C(Be@x3jEU2yPj_t7?Me_S2+-EYyQ`*z%jxDomrep+5^7MDNX00000NkvXXu0mjfqF`k~ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/OuterClothing/Hardsuits/ERTSuits/ertchaplain.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Hardsuits/ERTSuits/ertchaplain.rsi/meta.json index 62e645e3c9..59839d1d59 100644 --- a/Resources/Textures/Clothing/OuterClothing/Hardsuits/ERTSuits/ertchaplain.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Hardsuits/ERTSuits/ertchaplain.rsi/meta.json @@ -1,30 +1,34 @@ { - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Created by IProduceWidgets. Tail sprites by Tiniest Shark (github)", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Created by IProduceWidgets. Tail & Vox sprites by Tiniest Shark (github)", + "size": { + "x": 32, + "y": 32 }, - { - "name": "equipped-OUTERCLOTHING", - "directions": 4 - }, - { - "name": "equipped-OUTERCLOTHING-reptilian", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] + "states": [ + { + "name": "icon" + }, + { + "name": "equipped-OUTERCLOTHING", + "directions": 4 + }, + { + "name": "equipped-OUTERCLOTHING-reptilian", + "directions": 4 + }, + { + "name": "equipped-OUTERCLOTHING-vox", + "directions": 4 + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + } + ] } diff --git a/Resources/Textures/Clothing/OuterClothing/Hardsuits/ERTSuits/ertengineer.rsi/equipped-OUTERCLOTHING-vox.png b/Resources/Textures/Clothing/OuterClothing/Hardsuits/ERTSuits/ertengineer.rsi/equipped-OUTERCLOTHING-vox.png index be85f19ea64cf3a9efd4a0f67b171c5fb0590f65..4b8cf8ef2aa5f76559932273a17881441b85ffac 100644 GIT binary patch delta 2164 zcmV-)2#fcd4vi6zFn_U^}%cTvhYNqgt z9Mq(XKoVl-VAxa+J+G#_=SN*FjTPegK+H~ePkmLdU%mJ0y??jB3^U9y!wfUbFvASr zOc)nAn3VlNHAemC_Fspty|MA;*ykBz(zflP>%Q-UbDm(Pu_uj}d8$v=AOWD-WB`Ca z-ut})0CPVpz_Kg}0JRkk0H}NfBdZWb31HNu)BK~5hyRr<4?S6ftgHg11;B9}0Kj+l zz9-+P0dz%)(x zzK_kLXcCWaw-kB&`{t1g-}jY(E(&S>amd5}tt<}}3V#IvKp2J)LcsAEY}-Z<1d%G% z0U#naO%sJe0YV5!sb>(g@H>u!AP5iy0gA<<(mcm;(CKuv`6mh>GCUjyr#6HTipcXk zrE&ziP7|)Ja2&2fp2yRS;tzsAai`}%&*<<^6hO5Zz3Hvx2HMwwTRSjJ(^N)p=e=F5 zJ-rXl^MBCkbig?`o~%KZ7PwMJfahKRNPYlvl!}uZ)aB2#1!yqFAmeZ1F!^P8rL$G2Mvd$6_K!22JU0YIC7tPy04NpgAdAcLeIh9TPB=rewub8e7o zI*tRzST1icjvoM=Izt$S>d&bUVgp_Ni5jr;-hVDmjuEL}Uz3Co%I!o!iAcC1DS^Xv zj?x0h{0+eJ#s@BE;VgdBG!x(R@Q>Ai+6sqtmtphB#jPC}6p4{bq9DX^oP_H+T!*~1 z17q{Zg>{#y=u8)Be#V$IO*64rLY#kTsjS66Rs*)%W!QE>sW+89Bm}bf@i*Z; z;D2a$qi4e~gl*f{ZkqsF+5$-PM+@P~FvhoDp-_PD`|6oiD?9&K4Om=UM5EC#78e)Q zwfP&75J>IN4?$`1^EW2{UI(LoUs)Z*`xG0{XKjU}vZ~L2rWe@V-5v6ywH1zP6J(g= zC^Z}PyF7@Gb8;M=2dd41)}e0~O3TrGU4Q<}lVprZQt^XRS6OB{p5D3Mhz?72HgqhV zgsi7Q#+a@~vmomhm==F#4PcDP-aa3D)HF>Ky?vfL^1CelOah=FWa(j9o&D2z ze7l9Ehh>-CCxpxzAcTMr0`2awnsLsJc6ad1MWeRD z;nbNLdlWy-(W&c2pJVsSxV?GNn17V9{W_rK1^yo~6ToFp;Ic6jz-3S1vT>oc!8EdX zl9?B{WPIZVpmiMnU&5gHIoQQ{s!-YjkW%7s-B7VMm8*Yxnq- zmSz110BS3VTiPPf+5)ur?RFUlr!GnhKyRO8?$wugYRtW4jLAnguT9OcK7YD-&0vhl zr^ejNxmRDJw;v@#4o+Qcx67)BKnIy8E2V^C7>Sb>B}V_!`wZXx{*T~!UgDrK4KF|i zlRrHBExv8N3#4j94uSxmeDDHc7^;2&n%7kF z0qK4dN<|}f1f^n0Z$E!A^nWb$_PHv=#E-}6Iq6`?2vYX7+GLK^bk*T1EquOLJ+h)K1 z-oU}Bttv!_6-=jvcrliEZQG8DB73fC-~hO?74fwkL{(!M7lPUXw12<1mK(6{GW9tw z(_3w_p>`A@#KbPH^P<{Jsy)>y$8iQhkXXysa%0F&By4~X0&m@i!8teHx*vH6YD*y( zLwn7(ZB-^CqX+;$nV+5wps~s5QAv)tX>L!}ARWh1+7e$=I%PLx1b_a+VP6^q0V=Cd z2I$W91`h8v;MAF#2!FYvU!P1z1EiE{Y~S~l;GH_d;k^d#TyH2tTv^3P%^kJ2gh7zM zgFHEoBu3XLBm4fxWmScxifpl1gy(sQ3N5)u&be`saRAvT;!q7+{iZ4UPWK+)ZVi>` zUhG27-vEps4Az%0g7F&!&bi^#nFJ!$dAs-;J`bXQlLy!+wSUm*0{TBLx}fMBnDb zLt-6h2|x&et>p$bk6irgt1I&LD^kVQ8>JSu+vTYyL@dja+wC$oN-Z^?Uax0ZmL)fj qTx=~jw9E6kTVy6d*B4(V|9=5f%qoX|uELZ60000e; delta 1791 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

3`vSfz_&J3vVSgqr5PCC|NF=J-)I?ogbceJO zg2UenKq(|P<9nLkxvdn_QuCD)7glnR$6b|gR&a{Y*en7opz`hOx-N;o+Iqyv)6e;8 z>k*H?{6uNyU?K<}fBA{x=fc-aNt0I4lm+-VLo3BJCr|ICnIhj7XhnHVaGX5-yzI^U zWeU@(AAhPv#-H}qLcRakXoRrKL|9_IzY7^#5(Oxk{)j%yYe&D4oulH@%!y1Gh!ZJ4 zCncXVqR-adw=_a11&FM0gDL*~%~9{Qqn;ux;`QxoY<5n!^gtw$NO+r_)4aZYP0F*j wwx%Q!32%cbnf--9(=9TM5H=PcCjWl{@3t+&s}DnLDgXcg07*qoM6N<$g2yhHs{jB1 delta 1814 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 delta 1797 zcmV+g2m1K85upx{Fn<69XF*Lt006O%3;baP00009a7bBm000id000id0mpBsWB>pL zwn;=mRCr$PnonpQRTRc&BBYd>h@g3oY?}l@lQiH;Q$hR_Tx(Gbx^iReLeXtq*tNJY z#*HhbF4P8hB~?Mtg$vR41);per7?*`k+c*8=`+8Z`JN|}d4KQSJDEwr_dXcz+;i{T z@7#0Gocm`cj_xr2es4XwJ9^ynMm6e7?zi(o@7%M4uUDe6 zu`yS6`^nEqqJPzeQ?aiRS}B<}LYn{hY%RLGdMvuJ{!eu4!i1A`;!ksVFNGnmOio58 zDi1_6Gc!*1@WSZ^4XE?TDW~4Z+?B>IT)iS-`Nzk{oou8w8&xkq=Td+?4}V7k;BHvG zdihzGUt3#?hK7dR{n@i;9SeEnfO^!IVGfHl|MK#(>whe1Rz8&9%LC{j1S7Q|@2C%^g5Rhcyfv=u$F@O{xxAU`t(P5G1 z$Hnc)>mGR?{+0%yF->{5E{sRNet62wtPo{Ea_UhZ@Vr$j1g-cnv_>81UIP=#-_`?u zdg%S8`w0-)_YRPk0t6npA) zDG=P;xE4)rypu@xKpr{e>8U5LA+q@402rLk*LMeiR0BYHD1S!}uz2kHTduPjePr?i zGdk()~bAIrWM* z0_`!)(mp{i3&<&_UI@Rp2SC8Z`<8Yy^2k-EXb|XF->dB`ep1S*r&+-Vai^2hvVW2F zt{)|WW`X}BdIm_+u0_uPN!qo@oCS)C%sw+rZx*=2=ouhMyB5JQfUmA2b61;dZ5=?o z-2YeKxnHjDTZ5Ms1I|BqU;Od*y|=ly%U%vclUr{Dd4M`!-Q9b0_`pE~JFvlHJJFZ% z;0~J*luN1?4%&tTE;!*v2XsLvoqt@1z}o}pJSPx#r=^3@tChE-XYTr_`FY9-cTt81 zz|RMdOFOSLPk=a)64D!`PVn*o+j+LTTy$QCle`8x4YCF*8fqIZICUV3F48NM-^&2$ z|4noh4YWn&ON>0COuzvbuv>4dQwV}$00D=CkM*Z7?z24LOUzM0T-FoO34h%}&H_O0 zX%Hfatp^+xtOuY&Xs0cL48VKG=WzSUTBA_*k+=n1*82cDpBohwiSvoHc+fT+aM|N|=_1{vs}H;lP#cXJOfe|Hw8uLKa6>Le1Ps*9xwH(Z zZMeh>&;^~)tzNIk%VV+kOn;Co2C(SB<@5sst_ZnM##CtAgiG#^4(NhTAoCB&Ht;q8 z4bPmOj7|=paF(|&$R}ysld`g30deRvI6xP4qAV0a9x(mqZ}FvXe|9E@kav*?%yJa0 zJ^q7B%Y-=eeGnb=Dxh2FQas22cC%xr9{XRwQNeOb7rZpRA?t)71Ank2<`+~u{Q!NJ z=i^A(5QqI20H9Nz*pn*=0_Iy;KHYI5F=>&ii!bbYVpt^h0d4;N#q+V{0_dPAIFA?P@&LQ>Kmim2={11Qb~pqWK^$<}k#czzk@0rJEodjQhW_gtV41=3eL;BI_^9_Zh81Q6=Vb0QN8PNXa+ zAU>dzUWE|!F-pF!ie=e}u^rvo?r#kAH{4H3fQ1RGu`*VH0&T;gMG)L{9*;mLbZh6K nSqO?&zMTs_mhwgM{898T!&s%WSjO+m00000NkvXXu0mjfn&D_X diff --git a/Resources/Textures/Clothing/OuterClothing/Hardsuits/ERTSuits/ertmedical.rsi/equipped-OUTERCLOTHING-vox.png b/Resources/Textures/Clothing/OuterClothing/Hardsuits/ERTSuits/ertmedical.rsi/equipped-OUTERCLOTHING-vox.png index 284954aabcc39e5b59d7a665e92e21676b71e8ec..0aaa94782dc63058bc3128f7b046c6fec5bacb1d 100644 GIT binary patch delta 2108 zcmV-C2*dZ74%HBlFn6-#`u zMPQC?4xUV!z%{SR!7B`IRBV-ds4-EIu=xWXaS`OO*Bl5^xCvJ*=)sBQfkd7<5f959 z;n-%g%UltCXUBe$Z8`S7<<=iCj^|19nfcE5*UWbU?6AWQJAdr3!wx&_@XLg;$djtF(%&xukj{$4Jjq4 zZ9ER;cpOSuJH*vcB^2VP-)WlS5B)EYrs=t7i2rK;`ohU$RRM%yC|%cu<2c})0|0*i z#UJI>{&iTEC4T{ca}LLG;JPl}3E@4Zu!R5KlNU4J>+&xZ0Aoygo(I=;0RTl&z%)$& z!2bTe1OU@CQ4|FLz;#`Co~H!!zNq2{fWQ6e=FIoH{7bEsF(ysZgb)I@Z36&?!y!25 z;GE;%zxy+u-oK*;m?R14`FWeHLY2Bhv)g(8BuUgaVSm283IC;K4*)=`)dB!ar&9S$y)riQGh~Ep65#XC|6ntq3n|EjRw{0 z^^7=@#F*M%Otn_v-ttJOO9S(m?70G{Vnwtws1SO}rKFWKmP{H^O}85Z%QT=D62 zs?1-7whq-mN+k_4P{*tQMMIdrugkH@mt>luT=0G4H`Xwei^ z{HAH13xUu=?>hXo0+>#xux)!L^h8ml)IEwKBuRoOij-OC&avwKCa8M9-|s7pqY0Bx zgntn5eZMh(tpGZm4xT@MZge^w)z)sel@Lg>L>@&E+U@qj_nV;Veb;r>By}GI0KV_5 zWULAQ(p32Ip<@(&vQ7AqwHS@q5Od3I4W9fl3#%_ zCeO~!WEh5We}7+6$YG4h{r!CzhM_z=JAadlwyRa3UFH0zik~=WS1N1ToA9rc3KJea ze2Ahb)av8MJ-8f=Mwm<{O}cB0(P#ve$&v5-fZKyV_En-pe{X`7&jV1VzI9GzI-RPt zbejl*0C60{bzQ?SfPeknGvYW#5Cm)W*T_zE_0o4*b?vKQ*=}&#{3~k!V@#%LT7Q{_ zq6|lAnl3!DdLL|yeX}W$_kD2ARo_+oG)B&OWmv95t-aLQ=BBai z&~n>o6b1etu@k^W58$G)6Tn3e;D4gA*&WjyR*59LC~(2}#S5U(cKGLnMa55}K{=|C z04T@SQ%yQ`{mbS5{Oa?szxlpNf9vAGt!tMo%X(WkmL|Tf@ov!feFQ;((P#w6age4d zu6+0dzBI19WsJ!Ox2|nXs~+6Cc8M`2zcjAAz4GA?NYfOK<6txzAqWEazJK3%N7!hv z_ny4KSHU|eQ<0SL$)}$oiXv=N3qJq)o9`L>4LfH5ZL_tR9D^Zj=RknMI`RbBK_`A><%!$WjB9d$^X zrm0>>1hn!x!SlRx!kG~OV@%q%JyT#fJUj$rOwPaP`#wC+Q)*9j`)z~n1?W|%ssj+l zn4C-|c=YIzYAa8TXXf&O{(@OO>4Emrv?&h4I3oUw?ims*rz}>rdH#%V*)VFDx%IVFQ#856K z=UhFb&uRY1ZbkrUnpW1+i=qJM9FxfeRC`BhQ}gG5&z?Qo;FN!alyatT;-%z=?0+(u z)S6=$hEl&*i1{!mrGJ!po`Y5&nrT1_edPJc7O6T6?Z#G?WyU7MAo(Xf^wJ?H6>O+z ztA|A0-p|g?WV_vlq2R32L}gR_W=h72Y^-| zq;fp~yehs`tG>}hh>&HOk*2B22?+YVfS(FFCyk}a#0iZAKq>Kj_#vmbiCbaIKpgsA z0F*vqor=`j2O^&5Dap@IoU~+<$6fO)OPrLDt&5cfFu(e?Z7brFlM|etp5o->1V=|l zRlam1I668qbbl_C3qjX)*3p8sG(g{Yc%FyT(^H@#0&JtaMjWT7r!y)r}o6;eu!$788;qVzemKWK_Z z0uVxAI2>Xy7~sF(U6vnTmMXXI_xlKfU~3m70Kl>=88rj}`u)BdPnxENWm$4C7+^RY mHZISveMM#wn#SUbS1sTG delta 1788 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 diff --git a/Resources/Textures/Clothing/OuterClothing/Hardsuits/atmospherics.rsi/equipped-OUTERCLOTHING-vox.png b/Resources/Textures/Clothing/OuterClothing/Hardsuits/atmospherics.rsi/equipped-OUTERCLOTHING-vox.png index b896fbef73dba246fa93f03a4ccc1e5868b9e50d..2ef192fa2629954ad363e6d37c89fc1c35633c62 100644 GIT binary patch delta 2864 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 O0000pM z`AI}URCr$Pnq6!aMHI((Yb;1;EB%1-jRe5}VuBA^+kgonCh%Yz4f;UB1E?tw6JC5E z;X%;E7bP(&F;Syv6iL*J20~-h7HPpK4G?M+q7-6VNDEj#N`EQP_5SAWS*F{2@6PVM z7l^n2WHUQwcIJQP?3pvOGizIS7` z?#?dbc2g;-8-KxZ9Bch^lZNoOH#K`4ru@mcjD`T6e`VD)>#_Moiez@(GV77pGmdng zJaWo;PK=ce#QUx~FZ^^KK6vFKk30&0paHgTp6$?ZduN}u_|b7ncInhVo)V)pY2BdzVmR;(x*g9y!p<^?I2g9e>xdjT!R? z8h|mkr}?_I^ZOpvDEY3|qv|S}KE=C7PC3uI~q>fGz_qMVd?#z z^^sp57=Q0YUxLxT*W${)5Q}64`^8-j^=U_7TV?jL>U-VXEe`<5`}!+AeqHZ$2sFT{ zu50dH!XsKI*Q$HJ2OytbaoX!F!AMsy3aC#zg3^)>2lp1}9)Nu6gm#Z#*E=0j8lY-J zz1J9S#oMQo3p-*;=Jx>PlwY})cnc`-X6GEMYJY5lDh~_lQC~W8xqrOkPv-%Y;|1s| z(EE`LDGe~HXsp%t(8?jvlukJb?0DjV&rqy%SHYSM8)j+97c5(q&~;-o6AB790c|-aO@`fV$;_G61zChep`N(1292exjr#l^vlNn;d=$gn&hkDPJ=vf@L{ zL+Xcts{dQdkov>}R(T@R`H|~^Pt`v(w10jwq#XhPBe=I77;7|)tCN!VgL-?LZh21> zH2i$T1nE5OZv417Eq_1dVfl^RrMkLWHCRzmq4Kd-AR*^^t{^Jl@PwtpT^4orqX zlo;^#2lMR@%jXQTB_;thXPoFqS$s}bXqHN7-)p5TUWD_s1Ii}i%OEy1rU7{Gl$N+SH z!3oE~-8q2Z1eT-d-gAjvV1G6uP>8pJ7bsy4z}uJq0c3Lo9neKT6@K{mps@}{2H@46 z*>}sc<>aTK^|Z>fCoe|GHKg-!0(3wZbQ0*g2Eoh&;ui;zjJa9k3snlCTz$QX^SYp8 zsBAzu;M8@{b<+<`gAl?468B3N6((-txX-$&2*;FMSNrt0%LCwo6Mt@W*fDLZI*Q-5 z=@0cxm{aL+9x$d@D#t$BS&~lpMZbrc2 z;uPkm{;BFM(;YJ5^5xvlH|L(KdodpC%+tw=AlcQ&*BsrPIExA~olwca$1W5I#__vasSdZ+hFe>ey;j)Ke*EPBIx(M${5I# z9pM1ipZ*b5-)$`q*o#RbUc;@hlSpGIN|npUUV^q@g`zb zRh3mxP%x}>gM)*%Uv6ssu#o>01n~G}z?|Q*{sR=gUtf>6(mDVD002ovPDHLkV1icZ B0Pg?* diff --git a/Resources/Textures/Clothing/OuterClothing/Hardsuits/capspace.rsi/equipped-OUTERCLOTHING-vox.png b/Resources/Textures/Clothing/OuterClothing/Hardsuits/capspace.rsi/equipped-OUTERCLOTHING-vox.png index 644c67846b137ed435d002c5e0b2dd77ee040d54..2b5039705eaad1c4194c6c7ab154090e6f5b7001 100644 GIT binary patch delta 2297 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 delta 2458 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 Y=M%zOhX!}8zyJUM07*qoM6N<$f>f`DPyhe` diff --git a/Resources/Textures/Clothing/OuterClothing/Hardsuits/clown.rsi/equipped-OUTERCLOTHING-vox.png b/Resources/Textures/Clothing/OuterClothing/Hardsuits/clown.rsi/equipped-OUTERCLOTHING-vox.png index bf6028dfdb95b2b88c3077a0ec4a0ae8ae8baef0..6873926b3f35411342d05ef286c7dd2e644e0140 100644 GIT binary patch literal 2703 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 JPDHLkV1hHpG#dZ_ literal 8131 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 diff --git a/Resources/Textures/Clothing/OuterClothing/Hardsuits/cybersun.rsi/equipped-OUTERCLOTHING-vox.png b/Resources/Textures/Clothing/OuterClothing/Hardsuits/cybersun.rsi/equipped-OUTERCLOTHING-vox.png index 631815d06b6b2c72918234fd0d7c871a7dd1fa93..68abb42923b7e9daa8f9c444009582e630e79312 100644 GIT binary patch delta 2924 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 vx43!prfuYM@pN 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 E2TLWOO8@`> delta 2440 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 lv3advc?wFN$TF?`{{tu63SZpM z`bk7VRCr$PnpktACRh{Rgcczr@GrdhysDaVpC);H=0r8`t2vGgo;3NC zQ%{tY1l+Of!3#fwhYw!4NRuCjKU4u5K6=uj;|r$_s)uLJ(|KomE(JnxCk-g49`$Lb zGy4H%e&fga`Q_>lf2ac5+Ryt>N*&wZ2S^vL1CGx?NLkNTvOKsG;s51ihiZ$UZ^e?ezut|hZW)?4|g zGBy03Vd~O9msMByMTHX*h%*9V4l$n-EPJaWaC{(}AL~2%d8?ZI<{Yg68~#{MaDL4s z|4FG$KY#B^N#_h23*ZjO&!|j5hBMmuLAz2*8)Er_)Urm0_VgpTcgVHWE6-&7RIdd9 zouBEQP*d(g2vtC5cbEU(=Wo;bg^*VP*#oCzUP&?wLdspVPdW7jt{m!z=HG8p zpbc`h!>NIQ-}MT@FHX+{iU{KmwEz>}?6|7d?{v4BE}87G9C!0WntaN$fe>+!uYaBJ zul~B-tKu#*(m1_b2;+~W0P(8kEU&3Q9;Ey0^}}HD%fMFGAL|#twE{SRFy9EdK)HEP zkrWv0-h(HK!f&mBy1F`N?dwz3)bidB4HM*3PCY*>F>o%hXwjmg@LMT>PTyT{T|2s; zPK;JVM~wALJdh@za_S|i1Q|U2zJFJLt{^|rV%2xpnIH*K!2b~g3h?hGi;`Es9qR;> zkjuuw=2SpZp4ny)w_5=NKES`1EC!rlR3E_BGdp6#sZ5=7F}>pO*&rVj%YO%~{c>8W zAyt;)I4nB~WVTD(2gu+#fst@E0uZ5f1-e1Bc+DfDt-b-`fPoX1hYL=)O<6d(wi&bu zYXz8tuNdWhl*pZf2v;CI@N6qc5^ubANcRnw9DbOx#8HBk0vP;^<;6jSuLS+ifX*xen16jZ;F7};WIz@j6?SDq#_7j0)-qTrfT=ybqt~(}^0W6y z?%euIogJ zN=LE)sVyO@?tjPW8NeC{Q!zUnUV62X2M3;Tz$F%l41huFfx9v$ZvoyBbXsM+@Dvvi z3jksPk4>LgG$)9I6$=1j0V}UA*P(PSWOQLQE?`~pz$E2taLr6R9QPs$bD(38o&^EH z$YMZVYgmBE0XH&87=ND&8GqT_ne1CYFn;Nyf$1?5ypq@jG9#EJ7th6b74iyvc5anp z^1v;xMOli-7zNe}U>QiX7UF-e_ysPO&A(d<#Klhv#R7c`51ayIk%`ETX@((^1=RL* zq$Jn~A+h)Omz3*W7{aYsGG5m!Cg6YzPPmZ)Spb8Nx)qP40Dp6vD;p7D{ugkoU~-zW z$adKlkrcp|7%$IPm;1@*xUU{y{x{(78xjY7!vPoI85xiTh!yCB zC1P0skUcp+CVy~|Mi>(|2O?1c2VBAnM3y+PRsd%KcwOUzX2vtC>*)C z0kR>Z`HyoLtOX`Q{LaGb`t`&5`+naQ*V6BDSc9_uWeMnn3mXfF>L(bS$%jRt6!Q5- z!AX9)d60E{iA9V~6anVo;enWeZcE{SPA3Q4c;i(*w_6d$2TT@TUTA;8)(u~CE9DK zGXgWf-5H?U;{sw%V$pEFV8*)zDtAe_1Kl1M+yb!eQ7H;0eJ-@v(|1D3P_b+18xG9S z5M&C~YJgsWD#pf3bAV+z^jv2+y-=JFECQJElRoO?&VMkl@ug8*c&-Rddg=NllEd0*wSVU6dfD z0|K{)G0Jf;nmAZjl>q=wN2K#jdius$k_yZKqa268?cww+O(FlHo`YMUM%LNr)Vt#g z1E9yu34fho`eH^oPSNx4=>WS12smZ<`4~6S;}D0YZb|#*8wc~)vhTK#|DOi;+%2| zfOSHwIX&rfiB4w`z;Xkdo=-ho z4B{VDB>$cfFzIu_^Lh{fu(ra6uJ%0AadJ5-DtQd+bkG*$Luccmv+?LSxg1^Xd1P&c z4FKSIJt)4Zg@R@FH@dE1ZG{b1Ge_D+kTe3?Mj-0>M%NXz*d2=GCv|{)-9ORi!o}+a zIDd7vM+E@df_wnLo`yPXShpG*)~yB`KX7;&r_T1ME?zIdi9TsbOg9ST@|h8*&i1HA zZqb*)jAaqP=D*RziF&g8Qpuk;0w#Sf^a^xoJ9my&S_ckKW8CA#wSF&#Lu0sl{RW0Z zW4PAu#a@jOR_Ys^JJ*BK94RX=1Wf+B6MxdmW6cLTkL$#1$otf;(-At(9ORGE`;^E} zx=z|PAXOT=q+Ob#bB~Q7mUUY%OAl_Zk%|+<%4CBYWPLuZ3(_r5?VDxT+w_A@U^bAb0J(l3Y-(zhqewK+B$S_Ppi=FaiQDe!g~|c__humzPIml@&2QGiqR)P z@PcSG=Fg!k&oa0aJ`r~UUN9eYYqo#)PwBZy@mYYxQ~gA6m?K4Ur}fp)F4NUG_fqp0rIwO!XwU0c)E33^_v&-NXHA)V1ILVX93O9 znf@F$nmE*NssaG)*y=)LLcr6l)2goaJfbbo;Pg2NT6v}7raTp_M`{BZ?YDk%PFHJUiFB)t^N z!pY8s!V!e%8^}0r-nb+FpMU7&$ix&PH>T2lrlJiI04NFu5en0FQ8+`If%(}G32uysATflxpd{HjDSWx2>Sx- z6@a1~TAawij#=eZXLBG^PGIs|FT2ptum#S|)k)<$H&>&fVGCL>r++73Q4Ww7JIQuh zLbFg^nvx17c<%2bC=tx~!0l0#mJ}tGUs_T`0=Gx06W;z1JG2>9A&V?h!Jvl9u2H_K zd})z&!vB~P7E95L)&c)jFsL(M=l>_MkO=rvIUtKH(u6?`V%JE&uJ$})*MJHDSby-MDK7TExS*Lhej_TIn;> zN`ftR#~dzzoHM|91NYk#Oa{9Kgz*so;H|4vexmVm$0$LZr`cCZ3Pr7JwCBt3mlj$`+~BNW1|#>>3be zpL|@+PBNqAf92zMd|}bJ4G&GgXyQ;&$%~B&*0Pdw2NnahF}jS=#EFgBe|ZP6;h_m2 z<|x)POtc}<(P{eK*cm7K&V*;jhl%PrYN}wTJc( zq2r_(*ZRG%YPDf~OuG{0n>h%&IXVT}w(vNfI7!Mg=DAVvq>HMc$1Tzlp z9}>?ovLf|#tZ>8IJAEV zJy+_0b$_d|55UiV{ca}h$G*Kg0RW`{oYmcEIyjD(kNNSlA5UXaPj$LGL$B=>Vmd2; zm;^tKLe(>gxZTvyEL3-VUeO6{9XbSN;vaC}@HCDb8b{N?agj6NznS^HdH>Cz$VX^8 zIF9xj2mW$oI_{dl44od#_&Yvt+y-i+9;9cIhJSzDO2-aX=7O-F{J{n_EqQsKC-zuh zpixgVsk|Y|_U3m#?#y^0wEJ=AoV|aR%^USpC%XoO=XuiAo;Rl~PPC2LJa3{}nMN&9!Bj*gXkBq?U^=32)@;pykjm9}!^hOhh4dEc%0?k*6Z+$*n z7=Pw1g_GS7nuV&lz7V4vxy( z(&L)z3zIfx=QAGZG)Dp8SaUUb^&LOzH&x-o%Qx_3J*B7gJ8Q6_v=IOJ^LY$T&tmPu zY)pywCV+2$YbS<7V^|RwgR{CD0C3@-Jb&tI9>A;bxN)qxnjHSs6~)n)c9>et9Qn}$ z<>GN~xem3yaq;-=C9^nl;qsz<4L-WDhBQn{L7OQ1r#F0QwZ@UI1FU9_*g{f+?B0N9s`$_6Vf6`7)=~XOO|5X6dF23=IIhYyG_ySCq z!0lnkBQ&FUY-=?!sN*>RtXIESyntkoa}^jbKt5(rgFLpiI&=JhM94V+JG68jE(R|k z5xaKnQYCT~SPqbnEh_fz-Xd;9HY@5O(&iG!7DG030IL8EYAQR~SUS)BH#+vKdTtpY QH~;_u07*qoM6N<$f@;fSt^fc4 delta 2685 zcmV-@3WD{%7K;^-DSrXk$t-^W000DMK}|sb0I`n?{9y$E001CkNK#Dz0D2|>0Dy!5 z0Qvv`0D$NK0Cg|`0P0`>06Lfe02gqax=}m;000SaNLh0L01FcU01FcV0GgZ_00007 zbV*G`2kHR`1^_E7?iT3)014qqL_t(|+U;9!Ok39#|2-QF*nb9_7jR9=Y!P>I30MJH zYk>TtR7opPst8q)Qf+FpK)Yxx(b9@#)53?Qno=}2kur5lnN*~<(^fSf(zRVXX(3q? zh$bh|Fv%>%MYtrekQi(n1IBRo;pSdHJ0?7n=SWL^q=>wG?|bK-bI&>V+0?~b0bvAy&+)JZ-Y4Z(*m^UW8-tnoah;H$#%mPEkI|taUq$11HfQ}3eSAc z7p2d)7k}yGbatB}7EoScZ* z9L`lMf$=B4F}(P65nX^K2y-JYu5@MrEH*IreDUcb5Z{wnB9T_+wxd4&yAIvuomIndc{(AjP1I`J6#IO=n>6>&hn6S(OnExA1BA+LFZzcY! z`)PkLLbtXvXK1E%;P3+Oc)Yke?8Q`I23M|K$5dbjSBJgWt1-e#b%Qf!22i4oMdj75 z{$PY|wam1wIY4i>j*lT<5+0O$yLDg+@HYW*n@chJ^%wx4c1slo{&|@yXI&{OCdN1~x%`)%)Q&uw z;f23rgV*a7SV98OM2KxgY;Sf)0R4B%aN~9WqZ59?X0s9PH(r#efiGuMPlyuvTg@Ud z=(XGhuMT@*G>MqL>F2pZcy=D6Uw@AwumsusmvsT}S{sHU5RUFH;{Mgqr9(%T4((kJuZAcONH;~(%~oj{>$G#y1NKN5eVM3t4oLy`2)a_gH!h;NbE1`H=0C6_~XN$ zZ{&f49dh>QLH53|mHfF|M=Enw#GpddY8J^~j_b(xpRbEM5GDK0gYe&@2Y)%VuZev0 zwvN;|Y{Y67i9rQoHH)OiVIv>Cts{r_HSsyfr=DEb#jg2+>ne zjxIN@kL|yKP#6XN^awBI&-gtw{w%O`iy$=`5Ox_N-LiJ%#oyMXgMYt4MQ?$U@n?Oh z@>j`W&Q4&15uiX#lM^YiXO?-@+nrEK35zM`#o`JV*mO&vx!3kaXL1CW;oR(Zp~AiYnmNNQetp_rxrWCK2ToHeRS;B`Ya*ARSb5 z7cOHoiM%lTAAj#C>YkY8iefcGMHNs~rssh#k;?5Bgl8jhMGB?K9f|kva=RtzxO%&j zSB(|7fSw^2TJ%8SMKuRa0Kl|=2HHGL++@>142#gwrNgv;hPUtEX+hydHCps^Oj<19 zLwgL5GdJQw;YBs?d+n78be%8*i20||G_yP^6f>t+nOY{(~m?qI5zGGtkIR*;SqdMVBg**Y^z<*;c=}E z`A9|hlw-iL)++MOCq6W6uEg0(*YSJos2RD#pHJp4 z;eU&Bm(p??e0EbcX`WLp%llW?M^Y+{r>p?0StRyAtoph}O;g{EIq}cwzz49cxKSGm zco*hr5S9i&k3mdH2`S|PMw5t=;zHcVZ_NC@5200000NkvXXu0mjfCFt_l diff --git a/Resources/Textures/Clothing/OuterClothing/Hardsuits/luxury.rsi/equipped-OUTERCLOTHING-vox.png b/Resources/Textures/Clothing/OuterClothing/Hardsuits/luxury.rsi/equipped-OUTERCLOTHING-vox.png index c082fd234046a9b5d623835014bf915651b6e373..c5225acc15ef20591ba5021a8e6eca8d3c2d49c3 100644 GIT binary patch delta 2620 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 xFUGik+}b0{r)nygu03+jk6epN zq)9|URCr$Pnr)1f)fLCjL$_5&BB*0oty*!`tQ%fbz~}~JAk-GYpn?)piGI=5v{>7w z{n83C5Ze!JT5Y#YT3bIfm{v@;XatGIml%x_QEL~nBD+DM#D5h>goJEt*E)TEXPz@& z#%E^keRc*3>_55l%zgczd+xdKH|px@lA{>|0|Uvw+89e6qU8I9;oz@_lYgJbq#v{= z{~DuSIrT6h`5tu$sXPcxZ#ZfdaHKG(=$j6_az~rg>ujNZclkQLA-afz$Xey!0|D7K@V4=YQp`SGRcar*Sou(a1mE^_u#h zlAP>5G$QMt?vtV2d!=yh*JSxsOEvD?i8=YEjOc&TZH$FbPaQN;fXi>(VC0;F6n70t zeriE-dxkX3_)nZVTa{4FpT_0Y1*$85{x=qBZ|6h-k4=fc78+TA%TJkW zCW}n`>1vts)iX2%D#2#nOYz~0L<^-#gFCgd+*mT ze!@`@=}1q$nQ?y2lo4tCRPyyVx5?uB`(^P+w|{=|6AnW8>ndR7jM-{l^fAn>|GyIL zSlqs{_*-JmA*Ip;fIyJNI3DNBR%=ZKNi&D2d)Kxto$_vhXh^%$^|RV4m2N-%^olYFchixN{FI{+fvCq1sx2TZe@z9nx3|llv!+)1 z78rPDk39JI9XilZ>E}0Z(l36(i8qjs{FIXg_4p0e`XDQRO$Fp9P14M?Fnx>B*ao8W zu34zz=I{gJNoRdg^T*|6K`s7EPAH4a`hP=uddlAzglFNe*-45A56bZHuoe=Vm9G52 zKZo8IR(`+w#cK6~AO3iaOz)m67Z;|eKVBhfKJsTp8b91`y!?{LqZ_0*PSd+RFTK-> zvOV^{@t;pCGKBEgQ~;Ti{-k|q>yEv$YUPUf-*d5>D}DFD+u{g_VQVpnMycO`+rcIHq{Ng=$8VDzTL!2%NYARaA@2vnf zCg0wxPK*#$Fn_g6j0;MZMY98bDdfXd}A zxvVZf@uUkuRBIGIQmA!Ud8FWN0mmxF6_9+7TZ}6p`5w1OodudTGW*Ohw;>YAXow1#k1kCn-~7G6Wb7-^1oIq!YU3IoN(Li5&uJXg1}n=yaRaqndghK(2B3xUd+-EUbtu52U@mq!Ho>af=tMUjL1s74>Ave5QEBS`Haky5)c;JNFJEPAj)A1CD_U$>m+|$=c<4Z53Rr zVLWicZI`0JWHVWP;D2WUu`{i5;)BLHex?=H51c8h))(a`-?>@i2L}gRHVatUaKQ;T zG9U{w*=bbsEr5q6Jw5uLV<)?^zOrMqVgWz<{ll_w?nOFKX=DpP*>J#R7Jv)@nUGD9 z$m#?CL9l0b^z%ReRu3TUawIop&S4h7bD37bmbh@Z7Jv-Mf`3fNhK$i2bG)t4UjZ?= zkB4mjlIwIJ+WgX+(%)acqaS$X5ji`5qW*8iRA`n32V4MdWIz^VLN@o!fDgPCKsQ*J z+Y${;K~xZ6c17W z0}*}EH9a0IaxKlhJpcJNx<=0e%5*v4bRSD1Q6eeGst!)3exS=oVg=p;Gr(YKJc?xd`Q;0~9t{n=TY1S12d7?8hqa-O+ZK=LD4YJPauG3bmzOJLRW{r(&BA^g@@eDhr+F-zEg;~u{t*# z8C~mWgvuMHeOq5d8WE9xn+bI1us! zmL-04gLHj@hCoYkwRy}&GF>w-b-^W=YO~#%bYW6$NH$drDn<)>YXfVM61+dsF_>|{ z-6K)lA>!P$MujG(N>|qE?vK2CdnG+t@5yp9T76(Fy?5XH&VM=gocrUPE1-@#>ZqfR zI_jvSjyk@TP@Falhr>+%{`7yJPynFmxra;c1p)y@QJlT{&Z{4nTx)vn;fnmr!43aI zP8x;7VHOAkkWQxo0H$f;PxLJo3Ums%AZcBVVWiY;Kb2=IQ{#m zXv^=r;cuwafKnP!0Lc%_$zuq zDmn@P==Q$=SUu07swze<-nb{w#Tz(~r=XOIXBcBxX@3|L^UE?sJdHSKUE>P7QL3`_ZaXoYEE;5Tb^bUm> z?*;xGV}HO(qM(?6WWbO177rkKKr9rjn!l_8^e$51e#Q({y8U2$)a4-{lTk|X)pxcj zspu%{84d#ge0vE4sB05c;vX6Ci!p$6Rl~om2h6{B7I^eo@%{YRFaRv)0eE}*@9=dI zP)hGTzXB}Be|S$b&TZX^!+V-#4{*(2F$Ct{JAVsfhAMnOIzKjyp5btb2k_}A5)LyX z7*yI@&pKYYRm-7RwFT_H@g0`Bb z!GG)Z3Io_Z?-s?+%U)N^&!=X20px_g;xyQ?tFL4L=^Y9ovzUW1Llqu-PM)gQ%qI027m8z{Bk>|aMeA# z+cvWH77sFuIb6AUTd})7yYQ*2Jb=@L$ZGLBN{9e}uIp@kd>qMS649wMz|Gs@-kOcy zMYsPXG);rg=c{QlMCR}A?goIe`~Y0@J2C)Q-ZV|b<8iEO+5+I;;{Lj(Er`eCAb*5l ze0&@}pKnFGz&o#gEWCg*2A|KzdU|>=F)<D@zgqsXjmimDYm|%k`vq6i z;5QL<13YK}9yIC(c+dhoXw-JKVt<25v&lDl7Pwzi=}Pde4*|z}f&Vu!R+{LkX8+;Z z0E{tSaRH<<)d#~rZ+P)vpVTA~T8Tfj<9mu>7q|Q}D~4gPoxk}*Ue|R{N+HW)mBn4X)3E_$<#}?F|9?-X)6jJt z0I-@~F#JK5;oineWS?YNsxgA25MYeqHBgp{j-tJFJ?Nv)!Zb}m&TE8$KmdtEg86*D zRq+DDFqp3Ecxp0*1Nm$6bx{b(+`0=TpgZ0UJ2HR*0J$aTRuu?V#YT=lP19_1g0;p| zlPLhe`wg8qkiRC<@LYLVHGe~=C@}!9$?@760O)}7nx_#=s?kTM&S2}>F8~0WHm?DS z&JL^=j&J!4Z+^4^Yya{yq(1oy0I=}ITKM};qQh#Vc^VOrPM1KcBk&40M}YzKF2Z=t zPcA|jhQR__C&E@wbE|LKyarv5ohmplP%b@QE2yf9(<)$YISWcDW`Ev!84H#pa@hj8 zB_t9FChNfU(m|MP1YrQK{Pb)Vf4=w+oH)8q6hZqZE+FFZfSXgUy%+bouIsBd3+TG8 zq|@obDfqEd=qi#a;%S7cs+b%+CJMJ)r^9=i3ye_U0n@WtT)BB$>Fn&}m)Q6lmoPba z3;@t!4Sq6Wp&;5@*MB2+>n_?`*CTW5ZcPqH*}=EBjaeL=OPmIg<+}cpAL2TI{)r1X zadcmaPW*g9i2>~J{F6t7`vjjkg7E8?0GlH-{g%5u|KyPxs{Az=WAN>5L;u7Dz*4wF zsu6HQ1fMyAUs`2xC$bdu)b6&8OwPAM%DKyy=ioiSr$+#|x_{)sy3evOW~kz1GvstP zsCNH9z?gXiSa`+NUc{9FB5zxZiLUEN zfBv{w5G9kzf_UUL`C6vCSzeCS$_dJ61Y{YwjBd^-yZXTdAw+B{GK)EJ z&#q<`fr4-SrGx+D+he{+8VSH-jrE({5H3-IHF_@+aP1Eqx{$Df3 z8kBfEj#w-PSc8+BpSHLK&q#4u;_-Ni@>~|DaNJw__wPqTLqmyj`Fvg}zV5U(?-u-= gg3MEV%`N}`0BgEl!pdpM zzDYzuRCr$Pnr&=&!?LksbP3K;nS#snfs5orZOC>2Rb5PxDtBJ{l9bf4>VyL&r( zF9m6T$!2zDZukGpGtbQI?QBFD6ciLVXSW{bHvi_F4P<}=ZUmR!|HC=EF+`no*fQb( zCmptoIKWAVEh7$a(qYT6cfd{gAT;6SJDs!auzAR`c0gleW5PMrtoZi{eJ#ei>#D1( zBT1ZGdTbrw)_+KcpMJ(qorptwd%HebT3Qlf5Gi@71Lybp+8{8>eYi38CG|T8KYcH) zz&U`%6&Dw)j*bphT3V`(A3v_kDU&*&oO*soS!-*nb&sXPtxt*;$NZ8>sdKYFjDDa4 zy1KfYGsR7vvwq6T%G8(V#_QCqH?PYEw?2)9O)sugM}JQo(kW1$iGJWft*j{4o_t{C z8#*sN4m5hx{xeQasYSi*I^DPHZJo9pJ{vd}5Qc8dIl!$C*g(TqcOFwaO3Ky74|WY` zu%Et{R$A+1oP*pHLok5G3pjzso4*liYHHGIq;r6uK79O6t&V_svlppVuh;3aAbl^b zz#*_~*?%(UEE$4Fy7bNP_TIgFQwNR5Dc1_8rNqqZvcav7jznR6T%k^-EED}e2gsNM zdIZno>671VO&#P3$>oo)NcEUpXSo>o;?_r}sjf!nt9vf%lzgW8z7CMF2Q*N6pYc{z z+o;wxe3d%LQx4Z}n;wx+gxG@q`-CA#A0z^@(SIN9q@K{b>YIrXws+5xhH#aw{u@mlcYWg5gIraPwBY&K# zj4*qO#-LwSRi!oD`qYa)2fquWZxySH7cbT~EGjC}`PSCfLDyjq#FVV#pCgmn!JoSR=Ya-=Fb-fSYa~+!VWj| z>*m}MDc}4_FM0DFK$vZLAyfoN<7sqKOgA0_lF#9)ylzJ?JGpPonHBXk7F#t6`GUPV2+ zcB?LTZ%pI^G&bHpU2CF^4T9JfCIal{faD=Nv49XBH+x-3j?uiW0`7aGjSbjhc8qCj z5Z2EDb2}1|HQ&a2rNOfPGU?2iTA;_Dr0m#Gm+K+GmbqJtC;-#0kAEJlj<%IXtR_Nh z2QUvrdVWbXe)^rx%e#3DKwQHAwP%**#R2HY7EDXjf7Yk(-lGsl)I7ITsqtmjQ5ebr z7=Y&m=>drXIB|KL8v9qbc0w*4K=1!EzDUh3?9q8IZ7?Iy2I~hQ9x<;JOpYL6LhoY; z4d;0H$yH8G?&02|BY%-+61MSR9Ra|j=+mFq>1S|gJ2^$Cgg@&s6A|h1dq?Zd&0IzR z`~6=ZxR%l&Wf;KRS?6^M%}>=1`cIM$>j(gD%tr?_oK$ds7cdl>@`-4;{|kV&t#eEM91!2rH`!EH{Hi*xJb#vY6ecytqwLAshPMso z_X22{+Sr0kAU4`!?EqE*!EC%d4*=)v*N6R2Zj1RX0LZyGArnF`gROTr}wbLhetiS*O00{s|MNUMnLSTa1#pI>{ diff --git a/Resources/Textures/Clothing/OuterClothing/Hardsuits/mime.rsi/equipped-OUTERCLOTHING-vox.png b/Resources/Textures/Clothing/OuterClothing/Hardsuits/mime.rsi/equipped-OUTERCLOTHING-vox.png index 95769b1cdc44e16c771dca09778c226bc153bb62..565de585582ffc7f1d8eb145414ef8ba6d4b574b 100644 GIT binary patch delta 2743 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 HT=;(g=yUTR diff --git a/Resources/Textures/Clothing/OuterClothing/Hardsuits/piratecaptain.rsi/equipped-OUTERCLOTHING-vox.png b/Resources/Textures/Clothing/OuterClothing/Hardsuits/piratecaptain.rsi/equipped-OUTERCLOTHING-vox.png index f0638fc80d7b7ce10ff0e58a1c77566f1a261d4e..9498eb0f36fad7255530204234cac237b32970e2 100644 GIT binary patch delta 3029 zcmV;`3o7)OH0KwPFn46#lpnu)~5m!aA*Asb(aF{H)1gIx_t z)qw?LR$0L{8;hyn(+_a3y9+CK4b+*I|CeQ-xBoe3&+|O@o_}+IQH){~qZq{~Mlp&} zjN<8O0bV>k;D^f^HOA|dkJuF+c41hIj)@WY$%Ek+WwkNJg z`LFOtX&F>mSt)XIa*$=2n3xz65)zoT3|omSu8sa;U7V6ha8C zG7KC4jF@*-et)fN4{3nfb+d#l%e1w%k)EE;@`c@MpV@3yiIy+yCOti!wzf88S?15b zd2m=P(6D8JD14xM0DpXECr9qJiule>m4B@DC6#~k=FOV;V}=@V=KL8lc@uz>r_Qix z?>J`7%A&2UjijU`E?>S(dU`sW_WD^)37Kh`>b&8=$A7L*$n5lTcPRhSqw1KftSps( z{EW4Hb!wI7^@lXThCO2dH!BxiXVczsJp0I9Sk31lCx$8aeV3!{lL3f}i(}K?dX_Id z(?4enLI@;D^LEt4KWEMya&vR}D)mFAeb7NsQ7_|X%)80Ys{T3Ja7*cC&z>zT77Oj| z?HoIHOn>vDGiT0Z^5n_5TrQ3tJ$g%yTOES8;+G_eopK6`y%z{QZzACz(gWJt+wu8) z#KpzY+S)3ud3vg_nsuD&`5`$uIUGNJ99fp}dcCY!vqs9u$PhlCZ>VK8Bb2|gvQo&h z%vYyYG3|p6Ry^@<#?M%b*Xw2V>eZ6bXpD$|NPh$Pd_JyRxdOnGb5g|?hYuV+pnAaA zyu3Wo-rlZ`9}a}_S63^%V|Z}lL^ka4z@A?L&|JS+z}SfR!x~`r?AfYc`Tc%cTU({> z?i4X^-aMvEnSw0K>Z$MbdO3aiGzSkJ|$gCVQ|{C+=GRaF2K6%|Q#yIlax;Vq`zGoI9k zUKrp3X=!OxR8)x8)>diPu3ZAaZnxi-0e?dItyZhJdRGpqsplvxEF|{gtMC!32h`Tq za`moz;PN?IT3V#tyLW5i5BnfgRaHexOAAh?Q*E=^Y^2Y88i0m|26pV&K|@1>s=Uo+ zQ^z`;PFh-8R3#$CVElf+ADvD|&)K)R>X-TBeKWY~mpOgD11_T%)93nCR{eKT8H8nLs zZ8bGD4Cm8dIQaek0X&L=KA&&EHqZji1}H2nRLMi#PWkTh`6w(bj93V*(ChV>Or}Bm zOePb0y*}bKH5;Jk?Axqcw~ptYdydB~-9deiTe_)!eiAin3+OrfcEmzxfx%#)w6v5A z$;G_Pe+Bg^Mky^V9dH{B1%FKjP+oxA+S>5^^;Py9j}GeJb37VH!x>Kh<1qQTnXGww z>hOhwfHK=uk)NMWd3ib6rX=3|H2CsrZf?e8GErV$PJVtqWj5{nnoj7ftSq4fKl%v= z%*)Ek5`Y>c8Enj8&=M0Iir;KD6BQM8Tl`@Mg%fPJ5gPpbZzJMc;D3J&qXxLs0^Dhg z8sJU~aHsL@V%9@I%S|$R3*2Fh8sJU~aHlb3ULX`g2ue#!MMg#j1f;8fqWdOl^{1DH z^&KD_|0^?O=?}ix8-XeD*49?GZQB;{nHG@;D9S&U*^H8|Ub*NxDJd!JmB#m`rKO3N zr|U=TV10SIUYay%l7HAMjqgoKNnz!p>uO5=vCL+cE?pY&51`oqit^^TecYWK91loJ zN`lxVY5Br#M$!v@dCDu6FYJccBq=E=DX8!6WEpeZzKD&W>DLlM@R223yp*h?x3`xC zmQM$yp~ufyOL}@b0Q2Y1ml%O-@V)om698>(Z3DQ!I<<=Zu7Bx7M@RGPP9J$EwZ$Se zodFVXr2lWdUeA8lbQaJjz^=b#@WmHjsQI~(#L}fp1HO%6(xgcgJ=m%$uh;9jWg5~_1z%gX}@T0}u-e}NJ}Z*MOEOO`BQ{rdGIatM}{m5J@! zw*wFzeSb49nVg&)G_IhafIzvG90owuvI*k*mhX}K+lpU-MTgC46x?^9Dp4=b^vg&`w~m~Tz!BJgCWQ= z-j2Te{dc?nskU1z7BOMM1OUbg9}gEi3BcUBbAM@RX<@~R72Io*IeFF#z`Z7!duPsL z{rdINaC$&lS(!L_>_8CD$+KQIZrq5`XjE$!KCF9(YmyH755&Oz{$hW$Sf1!rJzezx zdv%vowG7n=3S2Iiq}&V>CQRVNx_2mD_KTp@wJz!+%NKs5J_{tCd!6-~)QSwt?d#NM zfPbdui$IhrgVAVYYxO#=NjmjB2tDybl_zuy^mTNF&QTXq458qG2Ohv+Fp!*_%*vH3 zVc%MIuD0^A>yzQs8-S>&C{Dgx!fX5DfH*d6*g#%qXVCut^70L!Yf!}r@oWVVy$rcr zE=dSMMMZ^(kB{f-)vFi`28>1{#l^)K41Wd|zr2>8{pj|T915@Pi(}QQRk+=5j7B4! zot-$HP83H1DsolZwhO$~0h8-SfVcdB&*-?lt99F$swojZ2|;C8#Isi`4QrbxXY z;($mXWLd`HaHs-=R)>s4dQIVLY;45m^M$Pt(F)BTV6)kT$z)P%1e8xjd7saB+vPBk zpsA@z8jM@{G?`2+TC`~R{$D^rVSna10G@sJS#o3#QP(d^N>Re%#fvE~h*cjnMhZd* z%8JaQydajvix;EU>zSL`4It&n9?A=1BVJSU7IK+1Vv2bpfI6pMUAx7 z8(2ZCiuhL~fQqG7pja2Ag17*+D2T`=`kxS>U}=x1U(a{GFDDCg-@U(k-`(DQhp*jT z7wc-9Y6AeE>%7F#1OHv1_-Lx*-=~DZkMJLY)MN2NApiEXR{TNL&)&rz0L~`syhGIR zXD!K+wNe1kF;IL6z@c;#0MM5USFVw*aaqnq#X)3*FXmz7h#(2h4FJ}55fTIqz+@yI z<|h={n7_JQVonnBZOlCxE|81F0rM9wi3-71M7gd+qXJM4-`vhtSKB&*iz5VKGK3Tn z6eyB%BW%nEfw}nK3NpohLEUbAOpk!lh8c!^6qpG_p9v zj{{-xU%2Ne5r~8WlOe^{1{wM22%jW0Byi9IK1#s?u^>z&lj6Ma2(QFnEE7xp#eV@k zvOGos?qV005gp^&5)?F|LMn3#!?!Wym2tVHDA)OT0t-uf<{3oImaNli1|W6F&e5!Mtc#8N$~(kN5V2x3kwmyQKTVapwL!X%zQB_z`GzQFL!VnFl zK^#O0i%=N?kb}W|6rtlweAYjJrSma_!DiDHu&jR%md!(H42;IZVcDF24;Dc<7)Ix_ z71pxsM&4k7>{J{nxJW5WM)E9c>jm65_65^4NTcj!;29jll+a96A%^;pGNW*(ig7Qt?{mA%p#M ztoU#_4*?Hr#(~E#YJ`Uh7zlz_9~&C(6-*`!@_8HvCg8DYG&(x0W)#>*YTQDE_*jAj zj^Y@O4Bm{`R5so7^i-k@a*Zo56$@nHNC;-{haWDVa-u5%$BK9H@woC?t#;~S*OdiYcE{wne*EkCCDOsxM(M)`R9hCTZ zVH~lwePC zv|kzF-L@`f`RaR9;$B+q*uH|ap!DX&1$)f52;G}njvZZd+RJoqb#Kk`f$~Xy7R$ag zu)7&}1fErU;q2~tDaSonXA#E1!mwE1&%H3yN#C00ZuZsD)JzSkGrV-UBq`eaRdl4? z%j^AhSo^X^=~dBjRlUD9r$@i+pXR&|+xx}WSHU;0Ub;(@^=p}lIUMt}L%Y}R)H!?t zHF`qKX+3bg2-wIKbl6?iZ@1E3B~8||sW|XZqsXAvgV5;GV>9>kroK$y2<_kRpZ#ia zVfZWW*Bu>4ZrmfcJ3(PLc20TS*htFrx~RA6d`y2>xwNw7vx3b&l7pEAS={m`6~;ZuCa!dlyX1Jg~t0|&CCQulht zbY#{oT%IquWY*S_^gb?1dUdAuoqd!&(&qZ9rFO?pCf&Z}x@QkDCo9#1*W7SXoHZjh znMjYRahy?H(%kUus8vgz{;U-|p1I3G>Xx#yGPcu{E`Q^g;0(i_fbxcxzT+z_dM;GI zR`J>Jpv=yqy+}PVF|lB8$(lahl+(SB!{^K_&3f3B6}#_t;UdY^!oq#7S++m9HF>^@ zOM1cOa#Ou7`{-Hc5u)DTy0v^=fiFQ{@=HZZj(NYW%d)wll?@Lbv@UoVs4KBruxQcN z^z`)Qd3kv&Jv~p}jasyBovD+fqq~EHN`_7J-8|w;RY`?@n!Z|+hrMUTHdeA#tRJx_ zCwE!=l{06OH^s!{Ub?il?tNtn)w;2=QRhlyx?Nmm^LkHD<1<%lYHFx`UTQXWM(p-d z6+z6Vr0w2)`q4no#h{0?u3x)$psBlsu%y4gU+C)_|J>=Yq=j%)Y6Pu6oXGxmgCfnfP+u>Hr)Aa;!}Cs!;5PNs;k{OR#rQjo;>Nz z-LY!=Z$2fl8LsK<(oQq)cr_1shGxF%8jpu?R}d|w zRU+U{5`p69y1zp;y{jUok-%Uu0)foU@l<0Moo~L}(MKDNFq5n2s?yhv66*8Tr}4x7y7eb)1NH(n(&szp*^D$a_NBy!4K8gLeZ1 z!uHPY79W+;HxEyyu+{8-tI=yrFntz22M`rRb_!a1I-YF&3ChmSZV8|L!5J=$YwtJd zob<})PC&v7NpTn;Xxu(MU-!L}PLqG9TNy{KS@nzxJME5rowcEuB$04|@dtXz75J|Q))e&7SJ!;EyFs#R*RFZQx*C0)Az9K7fAP(M1C|=9s_tSj zWxrwBB;&*S9yL{Kr~64R7<~3Y1IX+-t9J20pjqz*(Uy|B+FYaQcIQ=M*2@p5EiX}f z-vE*0M;f7P195fUt$gp`bvsMcu42mWc;X)L#?zMjw57$LyhGAe^{%8a=yF|KfkyWY zQ{X*o@8;tTZ(OGRy!BdIT3T*)c3Jh?=sN-NChwA)OgVECt9-BhzRk^|jazjK)R=keE>u1ym?R*CYmEk*lHHdae)56P104C9FqxPV zMJbr8XG&9el11nVSt3JH7-Pd3HaMkP|azmUC+u204$M5^X=UGHLQ*{@$NmY*L z_5+>MnZ%0SpFb&md~SW!uGd*pGqbe}W>r(7`&u;iZ}@OBCxdw7E^xeR$|}IJ;n!b( zG6z;=Et0k@)tR)fa2+sduJM8%tGHNNGaT{GBGC=`QEfq1e$SMUyH81nIMP`ubOvLR z(Tv2SvliP_&1kJ?C1~z%2G(OPrldH`oH_G+ z+=tly#$tkFY$<^(**ujgH^LnNAm2?g=>!bxw!zg$&D@EJtkdf+?G00)$&&0`}v+n!c_Vb1Y)FeShv;n^_~Md31|Lyg_{d zp-@x4$n8V$M&!OqHN_7(bp>k1$WIOvc?nKVPW1WA1LU|z*Sl_3xkm3UmM_(p*OsjB zHr6nE8vg2$3k<`X*urZKR;-S$4<lEyd(p4b4WcX=F>iMJ;YgCXu>_wlo5> zU-!8euQf3uQ7CSUR9B}@nwaZ8{aKA!60EYE;#Y6JW!JL(WXA7m^ML24-ZoFT6daVE zzxLeL=js0vW6;VlKw4{n+5)zny}B{GG{dmM&+v=;iBac#2|J5^ zo4Qz?tv9^~n+Zm@Mn*A%_ipMu7o`2{=MvTR6%MN3K5wu2=4rjR zs&egbKmE_+D6~Ml#U}55Yinzzz_F>c>#g49X^qXzvs+&ns$8KOnq}IXgbie7Ue@kz nzXUAsN-j>YvaZ)Q7%Px<4@pEpRCt{2ntx1N*A>S-`|w3TT0Lz{#^P*hD-)%@64yG4bNN~B6! zty*cl7IC`unyuZIT**t6+00DCr_W_WNwy_XwtIVk>>y2uN+VT?AA z`BfX19giS89mq}x*Ih1>l9K_rf5%UdoeqrA27Ja66@RZ?3Tinn#{U3U>54C)#oo-H zh9BqEii0r{sVdU-B0#R6U1&LA#Q_i{zVM{V2n1X|5tx{3QO7}nBx=3yYF_} z@ZbQeKRrbz06BjBLjh&HOWoHV8`^VmCEdD?s&fVj~!TpAi7Cu?I+{0nXY z?b3I9ynkx@+J?hq&ot3uZzg-DiM0)f)q6_6P;7~D z5xH5nXZgujKjHc8i=YWV&u3qx;_q$%a(}ZDsoJ+iXrEsS=Hu@<+3FX86n>?>=VWWp z`~eMMGMPAa>Xc+MnE*(L+ki3Jpw71P`Z+u}z`)Q5Giil>p~_@3(a_MKJ|8UR<5wb1 z#7>JJf5c7;H8nLDe|}fc{EKdZzP>&H28Kp>^3_i`WPF$I9@#Gpc_*hiWPF!n=YMX^ zdG6~%JC3d59MvUeypz*&_^V6Is?!XHU)Q_3)oK;VNr^n3`z7AVX?k2^093qoNm9a0 zX7YLrk!v{Kwi4I%{yBal5cGTwTdh`sFB+))DK;vqs-?>EGJ&&EFySHo>F~;?byT|yr^RhYv)~z{ed&k8~l5$9*2f>^Og@a%B zx4_+7HjA9C)&=|IY_($D8lDrOaPjNf0t$Kmbr<9AF>X$M?sxz8^_VIIAb*q@3I)Q+ zugd@{q!n~^US#6tO#pg&`_#cDNkRxAZOqINH>X_O7$0YaqOyK z^WOwQJ5@pAPAkuyHo&(5%Lcg90^DhQ=M50jSJv5BERrlc!EXVU4Y1S)>+5QTk`ca> z__}iFHbBuYb_;x8U)r;FZGVP%sX_z`ZFX8|)5@gCss}-@fU134L{Z^39*DgPzB9Su z!2!(i3Dnosis$Y!hRv})cb8GBud5a2_ym;~;DOkyOU^~=7WVSx%i^sUe>LZ9{;zGT z$-D1Crpt8J7XlK2}-VDx0zs!&^+CXOVdPYY_7Z}MOx(uM0(h#{u zZBwkBo0UjW`Y5Y=YB9$rV2)4V;i3}#n(4&DMJ4L^t9xoGN*^URE0H(Pw)+`DE2AFx zod+~FHu}w+{Lg9tB7aZRfhG~ERsMV5kH8phpyy;O+e@41T2&C#4CsY2X7)@I7yj{Y zGD~+c?wwSPFnep(*VT&2j=uq5`DvNoST>tY-5#m|ltV`VS(X8?{_IBpyg&C0(ho|F zz=b0(5&7E!)dz$U1qB6CQ&W@Ba%mGG^P$)$zb7RX0E@)}K7U;mBdox;zw-0*k!2ZK zmT@>7jD1+;x3pSb`&~dHC1bO_bXQ1}oe#=Eryee?tZt8&u@9?oI2@{e`T6;(pHh8* z-EOD7t(7ycH(;~bq$}5C&bMB{?eVH1Z#L$u85kZM2urD4<=z~jtp;0227IB>?eTKH z^$J(6$=GZ*>3_`Y4YaqlVz=AXegU1}Q#Gv;nvxR$@8mT2yseUo)*?`@K9rb`L%aVK z8MS3KiZ1hEC7`C5lz6UGd_GmvD*gFM#HNiFiVC;!=Gk^$eD9q4uu^>RO(;GaT27@H z;5zrJZD0uto1i4vLV2A`? z0+rbCDXnt&@Wtm-^U4$xbw!n3`>ayms4b`U3xk2`Y?XnOBxRtK^JwgDHESCV$W8~O z><0d#wkdT0XhP+DOFocpOa2;sDD8GZL_*vK_8;w}y2Om^bddQ~+fs*I6q#SOAv+yZ zmzddqw0~2n2vucS3YKJmhtk~Y8<*mIMq_s`S%_eva4Fn|$TdqgLeK^xrWP$Iv)|(yqx@v2M2L^P%1?GmJ+3joRbZ<)$FT!xyzu@MhR8Jmx8_37Z2%zz zV%notUK~4+rY?Q&r;t zN=r*Q{Ks-W?sn+bOLq}ps>LGGGt$Y<&Zf4umaeWY-m=^29h{=LxR|c4E&pZ=YDVc9rBF_XvP>F){cA(?)ImV6l+$=^5$tUw5f8>VULT+PiGw-GA2hJ@^y*<H+^FQlb-}=72*6f-6yuau7KJW89?{B|rQruTM zX{ygthrwW)F3xmM=-XEDQJVtYPjJHGoe_OA9r@(x9y1mZATpSX>ec7W-{uQ23ko(Dz}4o% zBO-jZ5D*+k;M%#DrP=CI3hF?TQN}6LaUF35zW+5F{EXixj-*346 z+QMTb8h`4so`rcupPD!;kR=OM@Xw8KU9%GBCaU^OTX)T>5)iw%P0dk{v=Z4pk2#{} z81Iqwo_q{jbz2fkCoMSz-mEucifhj#e%@^5xeM7>LC^5o@^IFgN3%b)X18z7b&O#z zYr{6^GP7J59Gz3L6}u+QTpi{S&|G9#@J#Sw028j;?0AO(6}PR+Ny_e(s;o*A0=vIlQr3x`8+Z1w^o_$^N><=5JX7yB@nDb9 zX{!>{s#=ZwyYHeAO+P2@3gzrE|M>B2-Ft%-%YC(dWu>Zty0zJ--*xu?-uRW;((BZ% z$JZ7e(Y!)C1r=qg(0R2O2Aig>_$a~lW$8da-f_MCBz~?dC`>_^1;7$8K#Qm_A%up( zs5VhTfEfx(;0!Q?%eO{!m0m@_xh!jhuca&6RpUR2YvhrbJmI28k)qZ-p6!fDb|>q1FgH#f)%2S9iFBKm@`qEeJ>^nm~jT z$rcz(A`wqq0>`2;mMAn1g+n8;I0_z3!DHdW7Xq3N4yTG(Y>Fp+>F{*WlQn`Pkq9X$ zRAgkNMI_EbAPPZY$Ye4KjYVOxNC<%xuj5OAC?sEOJVY`~LkGo75mzYT3ixmZEx-^+ zCDsTi;-RI42}im4;^BNjnL|YZLKMaVtytP1ki{Iu38f<5U<52C3gm%dAYUSeu$WP- zkRy-?#2mq2P>&9en*d6&tLx|--;E_KY;+2-#4!R|#&A}?ixzvY6M`sDP%My&n4n_> z6sGaWY9w6tA2}W8tr!^>7Z}C;3#ejb2s&6bMG2|UDku&j5ReE&-U0!SHq;L8BME^+ z(xE6n+{~BDX9*(3i>RoHE{YBq&jr!}2}r}Dp-N-WNHozKL!#ht6fDskjiI2?Vz#D^5ME>7S@Ew{76FGCmP*blPZS`S&@dCrgn1+o!?x5BP0g)I~>_ThA z$Tl3&rlA&x;DZ~P0x%T35&l374_wUk2azOsy?YJS9 zLDYBs#R9e@5)grQAyCo(i3$u6j&~c&OhqZwo5%g1OSTw@_}8h%0U#3%f_Nl>!6G2h zOgsTe!m(LMEQyRJV;Po~7#1W;|1Q-EX|kl?aU;_7zn<#Ru4HlmehA2-p+=T6V)(yX zn17~L|GqF|-x>e^3Ny5c#!A+Rz)n;*s^T0#fm9LNzQCY1VW_A-*+%+c2<@j3Ii7S7 zO~j(13x!eKhaJZbk9S=C_l{$S$2)tOpAF@uzbX~${VO)1=bj05H6e`{?C48!W zQFGUGqOrg z^a9&H6RWMi+|NlRiXSZ9yF6!YrBSnUZ{F#*37Y1u!slA{9G#!yjL(ME!%M{!`|6DC9l2RrCqlSnSf>BJ59l02N>qaR8V?V^Fxl7up3}54cwp~a zpVZf1E}aeFCTN8lnU_>##@CZ=7aJ18sRq;lH{#tOmSEG}4KNcE(+`)<-R@XTJl@g_ z_MgbxrylVz32F00|6uzjV~?$`-_<2?n(Ak8Ywi|zw_o`1daquW$46$GSAT&a+0ASq z82OfLTV1io=GMg`tytjNvgtFO`cHj3K}y@#G~@8){zEm3&cw~=D9ex?Fi+D8KionQ z9%?$RT>TjqH2ZocpDj3KqJ^+tFN?qb8!pzuS}RlahZ^aHejo;RImO-zwKn&9 z`Q$ApemqpTyD@JqZ6N!!F9FHAM}a?e!EbMG)&a%pT+y{@s(r5IA8+P_m zG%DMc9|7gFpS1TjC^uS=T~O@-x{lxrwg`n-Kx{+>NLvu+Z|mQ(TO4qtq~vjV zT)fsP)J{~lQny`8VG~J(-wlP;xHT=URjb9UV?(x2P-)A8xb&b~t=O4HLGPrhImS)b zSBYJF;!&iwLp$2l7xeGgey1SbS@qegq9Uxa(VktT&80c#&Qs$N)rU7pq{l1cjvP7i zaeyB#-#yzj8d!#ktIn9;`-ZntxuhRRvi0)PPCB;0-v-rbMR{B=57jM+eL3Z*fGmt5 z@Ay1ri~mY~h0^15)D1lwdol`FMngV1_wCs1{FIc=;#2GWG-gm?b&rdF`DIx)y`@Wc zdBe%2UeCJs(mpITlUz}?HO%$S?g@F}S#jNU%GCkO-3|R%fYN4FHjSgZIw**5;U`Pj zvUO|0th~#YsaNJUDXUML_O|$ZgI{vP!>ZgC*wt?9s~Rs~y_%PqnW(Of;q-%nBsu}@9#>}#vyHud zd4>5ajlwD&^LFzL`9o1cat_%b7`3)6;%SLox!Ji!`obZ;V+V@vx%QUQp;Qma;lf>$ zHo&%8W^;-@>y$LSzpgz+9&XT=-sFZjE>KC^T9JPhW5`9X|J2}Zp?mY@G>7&Cs|_<% z{hrIfdaLsA+3!L{>K7_CdKQpgoGd?3o~(T8j%B@8ror=E*1-sl6)fhx8is#Q@V0&W znao+?2Te+RJW>0reGCG6VX?yM)>czf!xqw&+UMm9r)tEkkI4F3DqHSOz(YXT`SOML zrsZ9MCa=MIslD`$$snXEAwP{gqYHF%X zGq+3~&Wwq%S|90UURR3!^(9X&-RJ%9Czp}j^B=dLdQ?!*sZl|wS6d_fO_Xr)2SbC& z?+I6`TDrDjwmDKYgiC@RpI!aj)XeK<(j0uQrk=OyF+%&nmkB$X50v?P7kmkfbUNE= zb)~QBt3#FRwATpGUfKUn;`yE037v=EME@YM|2i|>KyR<|7uIiijsa}h1KZys%AY^& z@(+p2FwjfPu%}7dIXxkvX#eScWv^z}%#rqoB$(RGxa9%Gw<2NjNV z!Cz{9&MkXKN>y1ouU)=`(4O};p{KN6gXaRQpPtm;QW@+`)mf!|J~>b}^SuA=%DlI* zRJ)#|ll7BNetQwDY$-oB?@mO~qI=hqwF`erNI-_@Yk6~XE>|}eZ&NYTo3~hI_vZaZ zQ`Ll4d31bo`4#IDcmy9f_+^RiR7DLYyKyrb6iB8W)gq!4)T+f^P; zxAooh%*iI;5HeK$CTGs!p8GC0>fC~`Q%{z`9?O)V+M%j!8C!R#@ zZP$DHYMfpeN}O1)WFd|4bZT{^+?O*BZkV$q;KrI46%mOWZIa8KpBAdysg=XL<0~(k zDNlhLz@KjGeJWr3GGlr}^_;*rZj9&t##UDQAN#NQ?9E@s$eWo}*b;|QvGQFka12W? g#Le8F@A6HV*N1cP4;&>75p{=r$waFF1Ex6N?Ne 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 Z|8EKE5kjJ#mp}jj002ovPDHLkV1ls`1?&I- delta 2116 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 ioq*Ws<*FaZhW`RzfQb8Ueas^O0000pM ztVu*cRCr$Pn_FxaMHI*9D?A9%VhjbOffo!=Fj8)6Y2_kb0$xH}K)j$4NyN|?FlwUU zgAz0`7>p^14@y*`MrrlI1TRq{X(5UdBwW;h511lQ0s>J?(0{J{=G(JQm)-8n*IkJA z`zK#!=d$xZbLO10vorhU)J4Y0)rbA7i-QtB?Xf5-z)yQDiVE=49*d#^{ItiSr~p6x z&tT@pde6U11*xnAJ+HG&xtx8sQ7gfIO9%N^=cBs1+G}lXwIZ-tWm-$R1!8T1!N}h7F z9rvYyFh4kQv|T+}(V)J*yFsT?23+|QZIqxx$}D4g0!$DEZ2Ek&_CJByuBD|V(G8MZ zAc|kO1%K<`Y0?&eEPc-GiRE{W0hqXd84MCZFvD?Uu2ws~-yNhTvFV@03I8$@T`8a| z{>_gzsrpK#nszER?UlUwiwtr6&M|<&;o|~%{2&a2W)?_AIP>wuecaz2MDa_kd2wH( zy6)XZor3D}Hnr-5AD#J~7DA8D8R4Pfva&Lr7k|GaPdW9vAS2NKnk~KkoC^FOP+kas ztOD>oW|trbWOgyZ_V)b12M)+9f;{Cw+HoKEix0aZiXSEO{0GB^mTMOv1(Z|o${(u$ z9yM*JI&@$$AwDJnkd!>-Kvsp+aX0L?C}pRWCz zK!1WJWsn3L%pV^kB@d{tsj2a3&wbo4Gvtameg-KqXzwQ~h(VMW!XK*uOb9KC2AO4v zt`I>iKT(X?hWof*OxP7s{J>N~^`@Fmg9ons|3;J$xY>V%Xq#fT^FE(9Nr(kPiaX>3 zWAl0UyCRAoz$=3ln1j!^v*%BI3izD_Fn=E{5^#W74#M{p3bP-HH==Oimon-Fw*0XQ z$YKC4h`TSWXhB?g5`UrvL;*7t?US1BkToReh50Ej1l9_G0RN67lKQMb|M)e7mG^!D zdCIAGRfM$yFeN(gN&xB?JoaosCZ7cO;kdVCb+9QSAWu2F za?VzM=9lI{o^tAIYikRN`bmI)ASfVDIrXmmRtkW8$&}yqdp7U>XxapM z%BiOv?ft4$ApFZV{?R2r^{)I@<|6B9G!2;qAQQa05{chv{zB)Y+C(8~KLFV9(?;q+ zRGY~CfH(mz6vCUI7a9dU2LDeeDu2LFdn}3y@Y5cP$frPBk=f=6Q+x_sWc=?G5I(6+ zf|CO3XG~3XiQ648(C`n;o;l4)MrR9vh@)!xu>@rqykc~JtEF#u0Y6*~57c{XfG!>L zTJRGkxWHKf5Do7)PTeu&VRh|o>-By-yTTvkO8?GU5i)SN;Dj3)kOi5L&3|ud4QmB3 zxFK!xG|`CCiK^F4x9ATP1RK_@(gS~H&#}zhWcluP-M4T7WIz^VLN;VH&lHp3YyliQ zZ|XZTIELm}oWn}CpE-|nA$J9{4+mUunn&`;RLGIM^*TTXCa;@pfS5oafow#ky$&#y zD~B%eQDhTYZD3~s=YFPE+4&JGcz@rO`e0IK-*r>c1=2TM zaKbIKZ=MUJZvnZSK8g-w_@%#evH(D!(ia&(`Zg^98N!H?H4fHKfq&g#G9eo>y1-fixWTQTR_0n~v;>1j;{tq<9btsX3iJ&J zTmq2+nUGB_x1W9BWPbrQ$J=t=GL=K?_#vqTM6jT4dT^Zu=o=2XhTD{d!MiTSofKd$ zbIquWUuHS*FyJ!djVX)kQrt-a1R{LVG=2F{3YgbfA&w833W+^V3IGeAeo3d3CR7F= zC}D!;jEtOItIaUY?XHR`b%ANaC68TXKo%gfxxiWh%s%hm;(vP(GXo+B;F>kK`FU!Z zpzkmrG9Zh@A~{C0g|h_+Wbj00W+dustgMdR;DQrwQ9_}xRsgFo`3}IGdCFc`_n!7a z+c&W8faNe;aLRWIq6B24%;lBbT3}3z1qgqN;78mC z!?@uSb4Pk6A9k2wJ~+6a2$#0gb#{at$V0iqj6UE*!~ZkPUimA|Y2 z1k3V!VRP_s!fg&7*^m)gZ4qpUB+W!sRh23!Dd}_u4>~$Ja^Z4Y?YkoCI{`E3ndN>_ b0+jj(Tz*rkUlb4u00000NkvXXu0mjfA<4+J diff --git a/Resources/Textures/Clothing/OuterClothing/Hardsuits/santahardsuit.rsi/equipped-OUTERCLOTHING-vox.png b/Resources/Textures/Clothing/OuterClothing/Hardsuits/santahardsuit.rsi/equipped-OUTERCLOTHING-vox.png index 0d8f373dc1b9060a53a0f958517f36cd65b00c98..999e3f5df7af5f34c8082fcb385f47cd3cd81a26 100644 GIT binary patch delta 2793 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 diff --git a/Resources/Textures/Clothing/OuterClothing/Hardsuits/security-warden.rsi/equipped-OUTERCLOTHING-vox.png b/Resources/Textures/Clothing/OuterClothing/Hardsuits/security-warden.rsi/equipped-OUTERCLOTHING-vox.png index 30cf54325e599fb3c3894ce0265b4917f1a58ce6..eb0e816b85840ac452b31457db710fcd858e3147 100644 GIT binary patch delta 2678 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 N002ovPDHLkV1h0-=aK*b delta 2069 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 diff --git a/Resources/Textures/Clothing/OuterClothing/Hardsuits/spatio.rsi/equipped-OUTERCLOTHING-vox.png b/Resources/Textures/Clothing/OuterClothing/Hardsuits/spatio.rsi/equipped-OUTERCLOTHING-vox.png index 999761e150bdacc884c2c59cd0454697f3c69f76..e7a171e1fa6276cf6b68d4327d044ad1771408b7 100644 GIT binary patch delta 2821 zcmV+g3;Oi45t$Z{FnY^RK~aHbgR1 zNT#)g7ES8P!;k=>jdal-s*B#2=N0C4>6Q2>BJuY*CagTroN*UIN&SiXpqHRG^!+-qkQ5<?`(OU%v&7^|#pbhFv@W;HCP-O@oS}^^89pjUgP3;n)Eu0s|&Q zV{w#h%*FLs9D#vC9Nulji>JJR;zMn6et%y6d4H$CmQp*r_Ki(&NKFAH=>M;U32vr# zi@}~+8}`)N82^i>ym;f|2yzX2W&v+}9KnmHyo_JjW=K{CxR0a-XET{fM5LB1iQ5W z8-E;L#?RYy*i&o67v39l^3SS($G1(If6s^>?{@ZbKijdAP{C_97qfSJE)6qXtM7#X0PEMAnFai%M*@&o5dWMOFn+H92#o^JvwLf8YjO8p z9Aa345RAZKH(|Bah@2IA0Dcex{Im}6hkp`sdyHz8eOCVFLlO*nS*Oqy8j76x37g_W_|+}sqpmrs>jb(e0rbmL~8kG z-39j5=y1NfpW|(li(O;=7#i!xaH2Jj32e~oaH2JjJ)_`la{GNXx>*?J#!UQ2o)y_O z6f zf*MRc4$pQPRPxK7=Uv8c(C6S>ch!RURUe0unv=IDBnUwfr_Llf02mqAz<+gI7$6S2 z1*@$_E!}Ab%ahM`78e#_yilc3^`x%QT5Eu<<9>8+* zt5$$-Y=WaJ>}&`}WB6M5W=WzY2?!eQJkhY!(9QFi+MLIyU^GD|77lIL-zG%|KKdYV06s^rP)I@)m z8k%;2|3zdKu-pS!Ze$g(+yhu{EO~BluH7WN3;Y)#tAM5K{6FDLEq@l8;sHp-`Khn% za1H_hnob(=%QY)j92pE{^b9Z?j+WWD*T1=UulbN1^c1{h0D!}<^=n?!G&LZE;PI^w zrwLhGO5kt~qUB8X)hTWySgI zo*0(U*Z&pv)Y{;14u7KQq%kcVm1zYa6&hDuo z8vZ1a;cGtjKi^@5bSDX<($+^Ra%k9`Xo<;bL1CVi$SL^*+B@awk30qm0YRP)!`FQH z)gL3|&%ZXQ8iVRZ(Eg09Wu5*$=yFyeAV~Pqdjm*CVq)>T0Dk~w;55^qeaGT=S^WP? z?+pY53A&tB(CP0>8><>jvjCcs&M%nEuAcAi=R((`skC<#NTthZq9h!RvGNpUem>La zxG<0^%8(#tR)-%}x?sFdLfzJK zG@Tq^8QLnhTr-es(9cS^7z~Y!!eKYDf~asbhPtig5W^Ducl7w@We@&Pk%x=P$>+)~ zx$EVhkWYt#X&&P=3z%x&G$GMge~S@EV{u4#l7Gw(P?pNknt`PN?OVx5#}Q4HsU3Y~ zvS4efKQdJ|Xmy2YNi0RnSwHHwmcwE;Vw3Abw7ki~Y%-y?l;H4d{ahwJ!Q%(rq;rTv zI1)j_UO&F@JPI)^q2s~;rjALABc|yzNIPyhE6*z`e6_m^?eCPQ)eS8bYBm?6{he}D zyMMc2F&mk4M8~An3)Q56;|JY@es!eM)Ya}Ty#CgM$agGlW>|@QhY_#8^&qOY)~SVJ0i@$iU~b3GtPOaTEwN;`~XG9>ock1C0hN2zp|C8F8< zq4hMl!Lf!o>=u@y4o71sexMLYeU+)gV}A)^f>a60!;i8~i25>W`_mi{p+r;(!Yw%w z7mh?&ffU73M1+Q~`4Em+rqu~dE!e|8pE*z zPBiUvWi~qu0GE7v6c+%eU#LRIWk25QGjdN>ts=z*s{sJ{Yfb35>?h4_o+Vep{(eX8 zpuEGQx6$0@;r2gjCv}xo2#iN?$*0~C)3ghG)lJH#~Y9NI4mG zmAoeHF9c2dT%@j&pYdK`Jc5tB+NOf0uSIk44!a3LQ1+_mweojr{yvkS2ei4yp@sk7 XVeh@qC0ub100000NkvXXu0mjf4Mu7$ delta 2203 zcmV;M2xRw}7PAqMFn<69XF*Lt006O%3;baP00009a7bBm000id000id0mpBsWB>pN zNJ&INRCr$Pnrm!SMHI)+HYv3QiY+Ztz=BF?d58tn*h&O7QAGU)F)>kNP?Rqk9})e4 zCJ>`w)JUQx1VX3@YVeDSDEI(;P+wT&T?z`-wkVZCiy)G4?SF6fp7nOa?w#rG7GwKQ zZsyMOf9A~0nP)`KGmgJ}*#A2}$nxD@i#`STZm&h30(`gEqE7+7+iTIM0N?Gk_)o3` z2R$;>|4WQnw^VuludG?O#jgjBCy_|vYQ^(eE8zM2E4`AkUDDDpUS5B{QMS+DZSo@Q z$f1SayxU7f-CP|NXDIQaY?q+KzWf!JvWC*nCv39C6BuKc3HO z2wZddW!~zIt&*49PfCk&WYB;-nYehIrll^TKSGY&lnfK z@&gzCPzB7GR_Rq=T_IB{FO@UR6XZ<64}ZD}0MD;!GHzZj+Rl-Z;)2*e(0J05FC7T-)4Q_U zCQIeuRylF$acdlg&RGH=bPcES{U%Fqk-cgc)L5ams&k_Hb$5InuOz(Io?ni=S}i z*F0C0T^!0EIs~p6SM2|Z96Ef|s8hSVLj4C@qJQxqm@gIFd3}-j0Q^s_Y>*Y7w#$IL zTxtFJgmLi`uKd9~VF*<~^Y87(y<%*+tXh)o(anL5eXTsd7V!=YI;p8KK zDv0M__-IF`5k71_THf2>8CS!Icjb?b*?7N2igt{OYZ_6J#3*7nKH>Ug0-DOA#^4Q8C-}bTxWDI#GZCi7pgs8P%bl_Hf(^n}f{Gx& zt~`}rSEeA0-^m8VgE6(IzR8e4PT2mPqayeTPj$?PLHQqlHm3_e{_gTSDWJKjHMZeU zEUIZRF5$#y5}Dw)Rsh{frY`CMe#!dU@qG+3LP&B>B%^Kn?QXnavdc7f*tTyQGC%Hu~n!N~|x`599u zcOkldoM-OkUw@;tb1mK`_YKax zS9O`$4r}GdR}2&VhLsF7H-EMWf6zF+BT)`(W$bw9YjP!sny#cYbdiSs3R)*^_FneaT7ktB)E>NbHt5Yz3h-ntQ=n`(wDM*;?36*T(fN>Z$C!w9 z16VJFSO@UffE(GXCY8&;{@ErR!=$&eJdxvIl1B^gd{`TL-srLrqV;(Tz~Lu1(tw#j zX9lLj@9OG}ZHPZKO$O^8z-ue-tY->F5D0Z05S$GVFjLU7gMWM~2QmSd$^&Z!fT>5D zA{dLap?wSQZ^iL!3j4q5Qj|2=DH_wQh+W+c`FPMfEOH9 zm78SsyHQ1C8gRe`C)_#&R3_J@xRV0daY3Y{TvH>+^0&sAHF-|~E;!*v27pY+=DI6% z-VKf_8EhU;@_!~*LDy6T@E_cfB{PJsyFoTOL7t$}%M03#0$koE0H;}i%Ci~KD{8E8 z#bqPSKf=UU9;8zNK$QR&U>O{IC!{Y&On?QPhJZpXFlhPhi1{#12opruG}s-$VID*H zyo#VqF0fX>Gxt=OSDN}JM|WfDx@x|=fFqd<$oTZ#<$v}IA>R!J@Ai0cHEc+}d{);e zYq$Otxoye?Ud8YWO}vILtf`Nc8P)^3GXww?RNlQ!#|$T7H%uyxUE$lV2eJ@Szc75< zkYflSqVfr>7kfi@XcjY^uXKX0w3({nA d*z=400~DFnngJQAv@F* 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 RKN$c3002ovPDHLkV1mvNWmo_J delta 2254 zcmV;<2r>7Q7UmIpN zdr3q=RCr$PnrmznRTRhXwiT=eYNbU1u|g?e8n7h=U8=?x1Wk+@@exQ&l*A7velR9# zq6UeHG10^rqaQT-fsa0-h>r#|B56fwV|fQlTOI;Jiy$u*ZGSt?@9doQ?y%dP+3r-d z{UM5e0bhu*HZ1ym;7RL;+qL z2oDz)I`_t}bG&2<$fw*({$~(+B}gaV?dv<|y-fMpkZvVd`uJtu)8G(fl^IxI9o=7U zm~Rg5>oH$F)_)}LB5eJ%>CWWJ3NwDgCbCQzMPw4vR)XU=W_eLj3V&-?N0K8be>$!} zQ-IFDH0@Gz&*Tyzxo62jbIa@3IokPoRaJ?6x14(UoC*A2&8h4(vMm-eB?J!86`dqJ0It8WeW9{oX*xI#=(! zDK47S`L(rjs>A^8w{&)TDP!jB+aoda6s-PwW7hWl^V07CGx4`Rc)2kv)*G|(MpM7) zfaGQ4Pk-kF1{83`%o^vXj$QJsjmlheeZc;dWO=DY|#0sbXp8*ZZpVbF+cmFI-1%Ie_#R4#YEP#>F(U`EIHBs)?=RE;# zd=Rkti@$7h9_id6&x=1kVHVfbNesv@Z`u@^KcfN`*Vf6Kn}0na4u#P_G<%NBvvd|f zKIQ$6iBX^Tz-@JNU1uI%34Z>*{(j+qtExuI{T4tzWJ+nO8=+X4Xjlz*~*qtxd;-lv^h;OAen{yS-ZAPb;;_4;o^@eeo!aBygq(O2_d zQ8Ymu4i-SUIw11Fa<`sZi#o_$Ve{)sQ2EvGoWt+d3&WpL0eg-lJf;!>91Et77Y15J znta<~X_>YY7DL6KQ305CQFnV5=>Kb_Zd8+JSCkbl(z zYic*zKntaOhtpx4-=Y_wSZN)KJ82xtPD6cdD(&ST4y)gWN6fkMQVn#E1gCc-Ue@0bV?8k?|{#FYlb~D|23c1%|5g=L7z; zQ-Bp>K9-w#j0ksyQ3DRR;8cEqOvr|e$QsN3>w_S$1=Lqf zm)jRx+c+T&IHjSo0Cj*GkVP#48Id*UDk1Gs*uN5FKDioo9xf^rZ`*vym2&&KdD1v3 z*Q+Y#=bLLAV|rp6WPc?XX4Q!tk1ks5=wB&%GgW)&q^Z5Q)HEF1Yo6{pV&3iTBRh~0 z1hW9QLueIn`9bH=`1sClAqU*hFgiFO$%p{74F_BRZe&0fWYUY9FcuI<0f2eM!K3Z` zwid;bRuDDPd3Csv0q7J!#=QFgfL8e#flClb2$($Pk16i$?td}c_U$#N|M(-4Pa&gE z+i<`IC)~)O@*o>BMq>e89WnhI%YQ+F_q~5?se}bbykAoy0BtLe{wSePnUIl76!k;d z5Lf}gzIA~RXT+t*v`G`i1Q*Rnd>*3&9B{!2H!|1*5~lMYlmY+*#C&ef7pN>@I}buB z07t}JR4)uh{eQgOdrJJk5H)NLn;V(JEP)lFEkJ?8QO&>H(jglWg<45IkGt&Y2N#?G z8SLBYun4RG|L7A#%%=y~{|$sS!=RvTIN$<2BZDndSS!fc0;YO5#QF&$?H`FK&II9r zOL>9Hk_!SWfU|&=z1>NVtIJV49mT%^e(+yVI&MH38Gn&As0|b_PyHbse!TWtbMe&+ z<@%Ys`2OO=f4j`V$BrdFhfyDk(KrVlaKWiQsN}D+F=RqEWJFeX&PrJ}6kw(rvf<^z zKG_JdA*$VV!09hGF}9&EPMIwp`HuQ)B2@yNhXXD+;f|M-#HtP*l4Ck#L&h*j*$rkI zeGrewO-DgN!8x5fe*CzZF=K}5=}GJef&c%3e4(MCA<17+QDNHK+f7+nnV0hqnwpvd cI$~q~1^{wjDgj`(l>h($07*qoM6N<$g22>3t^fc4 diff --git a/Resources/Textures/Clothing/OuterClothing/Hardsuits/syndiecommander.rsi/equipped-OUTERCLOTHING-vox.png b/Resources/Textures/Clothing/OuterClothing/Hardsuits/syndiecommander.rsi/equipped-OUTERCLOTHING-vox.png index 24c1aa2a870ea2a1f54c179fb73fbadc122aeb09..453a4cf337315dbd2d2ed384372f992e5ac5a0a0 100644 GIT binary patch delta 3173 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 LNkvXXu0mjf6DmE{ delta 2278 zcmV1Q|L5z{aV0_USc_Ky=AAIrx z#1|7EOf<$PjnNk)F_91zf-xi#(3SwAXbmkyxfeok{yeqX)J&XU z-rK${SC0)$z5gX2K znrFj}8Ggbz1;kDPwEblDRl`H)=;WG~dvhZ|=ZUNHD!VpQ?_a~@30G)3zqI$LZ4=P> z`ssrTS~hpS4T(!Bl%u?qhBEbpA+G{tYKKppv=1XdCx3aQ1VW{eud)Co*p~tUKW#S5 zsIzT8K68RiKXUq%+4J-)^Y)ipY)BlCPdUm{FKns=kyioCD@=+8KRbTO5@;kQweB{* z+%q>#2uLTNa+Igu`w{cf7vgVE-(;rTx!krZtl4(eys+v~8w%u8j`Gxt@(V8V7H~C4 z=OFl`yMNMj-7?Egg=dZ*FdxobX#GO%@5ihX7y*HA0Ei#O^U!IqX+@>=0fd0`AV2lv*drA{WgN-cRjX|rjq>Q7k;n82-E_TE zkNO+t-CnQ;s4vqO7;zBv0i^eh{m0y?NBua&T0mFVp!a2zHL6h-KtAu3r(Q9D-*Nf# zS${yy&Q_~z%I6$rj19ypV1Lhf8*bXYGj-yQg;o$u%(VdGq?1oMw_c%GxoEMKTu!xj z>=nx|3t0L2d20cLfOPV)0?KPCet7X+c{LEJ05%gZH8)u^l2<+Z#|7J2G|XsV0ffX! zCm%M-Q;+(zQwSziO)wXhw%E1^x9s@N%zyatK+XcTuAXcyfDn*Q{^lLKhSZ~-e8_77 zXpu%(N?4NUEOD6^766EoPClC-)_>v}g+g(m_fpQP)>c;9kz}OV0kZV1duW9XiOVu5 z_vx;0t+h};4v`8#gRJp5H9F760>{Qkzm}S2x1N|kA#u{lx8*YBsYiWTPg2O4Vt-ZI z){0-9g&zP}t@(6=@K=ss4p+E_= z`P@LaX&yJxwDnyKdyK@KOL^8!GbpX|?9anZXYaLgEs_{Z=R@Xm?fr_`Lk&Cx7MlRsbIs zIaAMgU*;I^g!0DZw{;%Mukr$+4;wlg#!os(%I~cJmLk^s=g(z!fC0}+oOJS8f`;<} z6b1M{t{r1LAI48Q`APY`6acxt^_lNlV+G=*lTW$fd;kSOXIy?d8^%w1A^hGJz(ELe z9J1hdHgVF)r(7veD*ja1A%DS0BI>Ymq~L7<|5uDEARCq~Mir0^%NCKVK(V}Y+$wWj zt^y;~`Rf7y*(tydu^8LUVJm>+GWWK4BmmhH%kE3-2HJg+BC!JKu={ZMsdK|@k&=Ru z*O?>Syt_|QAwr#Cln*ociqvCOJr%DWJb!ED@bLjj{LSkN zYEqkfrwpXW52TmY%}Mor^R+#I;R8r`v#lf1fsD5W=o6DKE*?7Xo(~`p@9KOh@XAkT zY};_bY2Pz4AdBPzMgJV8!RE#}wpG5kc=RslnvC1rY*NvI47!pNTv_xkS$*K80EU*U zZk-DPOy50xWKOz*m46CwxM%%AIgnA;^gi&jfXuV8{h&Q>li35#{G}Am=yg+6O2DD} z0Jz0@um{kO5hc3E7YlS$*Mc0ed<->^rM~wC-Ai zETB|}qJXwt3jmS4{ zGhKMP&WA(EQu+WbZE(1!!jeI9A!E@k0H9Uf#bauk3OF5|)M{-m#ZoBCf&(r%;g;#k z{E@LV7I3&D#a%qt;q10t+}-<^{YCBK<;%HW)k*=E15OvnglxzdJT=Y-Zv_A~4AE0v z{q~K#3HfEir`d21Gz0*D)3ww5?9NKo(>wWCcoW0qQ)a$2+6K{9|MUjYKhzyIj+T z3r@I^0a>Jkq#E#60HeT#!Tc4bDZnW3a{}?C z9=H&+WjNr16K+ibWI{G%L{?u^Fi(R|82A&5g9iwBAE>%wI|~{A29RFrV=)?Mbm4+i z9Yra~L|-~G>Mt@MRA8oh;=rHSm>avUMeWDZ`{&hLVw{oEOQ{4p4+mUu!p%>aZaOk1 z!H_e-sL=;4EiGn#>)_AGaY%9|mju4b_2)O{ZzCM#*u?wOJ^%m!07*qoM6N<$f^pwL AUjP6A diff --git a/Resources/Textures/Clothing/OuterClothing/Hardsuits/syndieelite.rsi/equipped-OUTERCLOTHING-vox.png b/Resources/Textures/Clothing/OuterClothing/Hardsuits/syndieelite.rsi/equipped-OUTERCLOTHING-vox.png index 869cf41ce2ae86cffd616ed35cffb4a5ad4905b2..7eef60e739a24835cb3cf93c6b7c3c0960c08229 100644 GIT binary patch delta 2598 zcmV+>3fcA45W5tRFn7&-75+w$EN7Ox3@w_=YE8*mNsa^aAk;Dp zBPaG?ATWx$hr*ZMb8K>Qfug6NKz-`DcV7%&oEAj@2dI2%3b+Y*u zHBBP`$Y!(H+SZFF(==raXfzsNjG@_V;xA9W!R^uw zEIxaIY&M%%@m~D8uH&yy{)u!tjaI7#0Ec40_VzZ22wy(=2QFQ@gle@Ki@)zapxtgm zRaJcV-FHlEEyiFR(2Kv-YDM_N?=r^Z^hm;g?0;6+ zw(Ub9wApM%1QeU3?tcBEZ(Im|-}mM2PVn!#ZiJtR;QM|e{@4<7&S`9HO#V(pa2$te znnqzF&+{TDwc~KqX;Ax2mjRcEpePENrin_WBA@N-I4qs+@DmZHrlw$7R)jyimF|UD zr$K>2p@38>C6xz&-`v(25h0aIp?^>)BpI$RjuN_1C#Bo9vJ&Z=+XW@<0B)KnV7)!?QMJ=YP-I-ho`w59yc0r6DS`Sfq#oLMNw#a zauTbntC9A{BO?&clPHfQQ-E_$BH%n#lt|lCMUjDtbADo%Az>(rLJJEE0Dv=R&dBGC zG5Pz#!a`#HSO(yn)AaN-W@ct&l=YQ}qO}*^+5noSk!hMk+5h*$%*+g(L=rYp zeE_;r)d;1lHBFn`SF((APIFUPGEGw^N>o)HI4vLB07ChrZdlsj3;=%rqCT|gAjTG4-3Tsb zPyRS8Ze(;_mluz%R!e4Sf_pewxR6AEBoM_AuItLIbS{@etJRX1rn;^tlHrg6?sVo9 zh38h-+@chPh$1O#&VM;v*L@rPV!?G?@E{qAAQLQP31^7AKmh1YkNT$WAV?QGRUtTk z{yY{J7b)n?;JQ$38)IW*&~;s=tOP8}l1bBHf^!bbvJR!gbzR5C#s)mk!>;R!k46Ac zDwR;H)o^iTMLd(=G;9DWl}fm`xQM$eD|l#{C>D!AXKoSa9DhG|U0ei!ogKUa@Kva@ zaLr*uOto+Y$|sJ4i$N;<6##{Ez;#K;zq-1LUs)FJ1;z+IEDIZeN~My#YeG7)z#IA5o8Rg)oLQJum>IMFroZI)9hFkz|zu^EQb>%F$hvo zuIoZkl%WQ}a8*iJhI+k@rKKex@PLP=iMzqa3F~B87HYMc?B914xC7vRVC7xcg{rEN z;MaXU{VpJ65W!GYRqO^+@xEc;&N2Ok0ocmQ3QDCC!hg~KLEr`Lb{h)kxMkb$eIKf- zLRD3W`aHuh#FhBamO`-va?X*-WTb1GrYYs|eIK`M8w%%Wx7)C78xNw37?nyTtaO4Q zLyzOI5WMH}@bZ(%WRS^ZU|AN%#>V8HK$OwAuFK+_2IC%wIp-uwZ~$O?dmEnT$vVMs z8a)(@kAKy#dl@_`da+<&5=IcDrfK5bxpP=vUXJAFhXvPl(QGy`KR=JxuU|*X^zcUc zzIud_^fbtJcXvC>$7ten)X*Sg3DRQ2NsS@2B@Rbnk*-Eiz%XotIl|n7rsWdf2i!b3 z!0lk~EiAvhyc|hG3okjz>#lIplQD+nELXP7wB0?!Bei8?>n+FGYluF_0#KdrtqrLEQb`~Fdo?L=n z&d%cc-d^OLVcZE`-`m5>*;&c^vFG9C?CikfCHjMjaFu3w*%7~Y=jKmx84N?D>U+r` zDt|`f-VVj~08P`7N~JJ8J&k6wiOV0Hm#aam)q-i7C;EpHedHk1G|_6cBGJFuY+`zP z8mUw&Qmu9z5>0_?*RBBo=I7_}veKZ-A51b`*HJ7MQK?km`~J``M10>zrBXq$ScI2BK8!xapMM_KYt!exgVruDsd6lxJmf`3%UeyfqlFTnE(I)07*qo IM6N<$f))1voB#j- delta 2107 zcmV-B2*mfh6x0xqFn<69XF*Lt006O%3;baP00009a7bBm000id000id0mpBsWB>pM z=}AOERCr$Pnq6-dMHt8DG`zNjL!oJF-_X7U3{6V3#57*j3ln3E_%XavuZ>s6Yd?ZF zegKdd6HSnqC`J+j7bb?1YH1HGv`HzYKskhEeskv8%-QaqGkQ`cweZc1c@|+? zTU(=^o*uQlynjrQ3Nb{MkggG;C{o2@(eQV7cdJsVq#ize7<0hi*Vm`++__`&S^Q~S zUQ+<&At)3IMoE-??aQGksXXH>w{PDzmjI^Bm99Pa|;o8PyAy{xtnFy5L7W z=YRY4MG7dV{`{psOnYDcnlS(?V%2;1?iFNnf%~!c;{nt&`s67GMcwZFub0he$tW}m z;m7-AU5AH&2QMHcAM@*W;;laXnFe6H3xo*JDXyNZBQH}x;MO&QTKud6Kbg9ETl?!@t1PhyWh0U32-+= zDA?B47QO%Mnc+Z&bB`Yz4(dKRcrcdjXT4;*-wIp=ZG@75@H@TKTsd}3z4PdiEvyE>3^+yR@{V78Vw4O*JT|K9t|f zU6T9hw8-kyCJpss00z*3FBkqau0oaoFA8q3+YSURga1eD8o;JI7P|(p>3@zz<|>d^ zbgs9`yp*fJi&Fk&z$-fi*dXPBEgOJ0!J&+Q2AT=IEzjkDgkS?;d5GoW3oPH=@({)s zaKQ<;D~qiTLXZJaUXH5y0LhyepP%_eK04TGj;g;tRXLq$2Iw0OxZs2v8IT2;8Zm;m z0Yv$%FDx6X)l_`-_j1!bL4W!dt|X8x)CgV%KzZKBaXIdJCFTpPoYHVcz#$2vlIN>% z67($xGH?Q9Ko(>|He?Ku!OH-yxp6gI4>D4LCN+XJ8*soSaAiTZQ22R(zScEysZ=sw zez7tj<$_qw3Y!f$;DS^50V%Q}BeMD;btkxKBcv_ds;9t5y5rYv(SLvX`pG#6;j1j8 zLv+@uaT=eEP{^hW*S5drRQ-X%akwkjg^D+(2de~vJOG9NnwnC-O-`D783E>>cmN+S zD^KMQloAhsQ}~eunUIb95D)N+0Xn+2X<~5o>ecvnIL_k)d=SM02$r@eci;hVz$FkF zkO|p<$m#^2EJ*|%0+RhC-n6BV zK5gHI3r@Hx6M2vg8Jpq(%)jq#$L^6e;O7L+;<@trJuVIOEj;q0gg|6MM&AGkybS={ zjv*u%F#_Y`~-~`BkEXagxq3||< zj6SEp=i1v18N`%>DIJ)&=h)meMxLN=IN$=@BLlJ^6S9SRL9ho1ZjOwocgy8?2_m07 zHgCo^K{((NUVmgD-zdBdz_$SY#*~Ol^!+`NZ^pj?Nx%UYfEyXyJTiuS6Yv&T{`l0L zn+?dwKu6)9f0rWWATBSzrn-NQfIl_@}cpq$N-<~Q>Ao=&$Qq+IoI=FAzB zo<4nA-JDyAPQKAw;ALcNY|IFRFwNKn3g{aSxZs3alr%>sATs)*>UFr*XiVz2t?SpX ldnwn*dh7#V+ z)vd^~%+8%Vb$^dL*(8&dAcWxP(W6396aY@v9^=ZbE{#LwUv|D35(}l5e}SG(RVI@- zn3G9`!@{!j%~WjL$ajDHvQUNhxLg#!x|PDhLOdQ1M~)ns&`M?kRd|obLt$YdvMf{X z-A++Xu26qGE*IgRekvRm4(4QPi=_wCD&XYW7ln6A8Gittrxyco^+G!ymrE1AyZ>&= zGo_`av!Vo5_|nqSacv%#OZ!pzJx?#Db7cvx{rjn|uGYmrZ4CI+mCJayl+iLgl=6Ld z|6SyCYl`sUa2No)-L8jQH=@xfkw}DaIENqB_#YGKu)*PShj>srv_2(M**k{$8haj!{%s|{QP`fd{YLCz4wopeCn?M9*tt`hiezjMOjf{=BS*Br zS6f?4L3SqLo_^$XD*%nHt!!GoTH`PGZbz1791aJ5zn_1;{{im=uTRN8Wem98)q(2& z;cytA&nE$N_w`~;v*5I4U`?}VD=@;Sq^^8rWhLt5X9`78w3P?=#=VG`6;C zN`Gi9TLQr4znqp7MZxd)^UB|@qAuQ4nAQdE-n~PG!$O;)P-QZS0Hjzz^kED+-HLKQ zO2+vs!n2_mS(b@L<4QpYm~suKMl>2lmSqaEGfDfXS&;2y)2Tr?wK~ZH22lX{VzX#o z06Rk0x%=F=b@5MX0h?B>765GngVcp%_Lf5Ga$Ebb$n6lCr;e0dE;u5UW z@J#6f(T6dj1#TKYX_C~##a?p;j%*t(p^#?!j%*uyd%#UMUXw}Gf6^okfBs0Qg3J`r zhcPZ3KS5(#tK>DCQ~1?jIF8?J7Jv04Bhsc-s|62Z)ACR10^NP_=&YF=;N4P&yQiCQ zPk%~VxTha?Pq!8@liSpBjN+@}pHu;Ix|PPZR!QA*0P;GTsBl=cZOD;r)B098EaY`G zr99uzdNt*FBbbPPz<)M{Ke=y(!@_|7tYQ9XkHU>@t>Z$dy*+@OZl(T{CVxpzw_=Zs61vn;noLuqi7Yebr2k_Z4QrdjB4D9Uze*HorMLD^%b{V2V2!Y3yC%*I4 z;t2yTiNN@srxqLL*QEee_yPY}vT|4QOLMA{e`%J;%3aBT|Lm+QK^6Xt=>hF&5|IKo z4;C#<>GNRGLLvoj+JDm|&X^t;;@72sr=QE@=b!cRyEUa8Hwi9Xx|E`UOP4N5{%_^+ zyEUc!{Ig!3elAnLggW`lGo1YWpTp$3o!q!_BZdFQjT=&~JKkQN;WWfQslR*`*VWA8 z4e(5%I|lr_VqO7X_XNIf%q!sQp1{|QSwFRn#dN#Lzx6KgRex=zPlErqE+B+pHjbN5 ztbi($NxWY2@~of#r-A?~UtBM|CX?8n_&n1I7Onl8; z{9K*{pb9@1_@8V2BAII}WLf4wb+w^Hj4lPJucY@j6jK+Dad^Qq4EWE|oR$SZ-HEd( zLouypKsUQVcwBkH<8q-4#p0Zat1vYS1#tNAVLYxp-G55Z6$2!oDDn5b4aIQ2ncDz- znS5NczJRM2+Kovx11Li=)~qj}`$XKm{C+YSEIZ%K;mk~Iws@Z6 z%8$N@gny(}iG<#MJ7tXIV67=YtpienTiee6)>6|44jd5d{VVQwO@!Wln-H+JriRPA zc4>pI`{|Ca%mOO5ZKU)6j%wfC+fdBjH{Oi5D+<0nKB^B?3w8b<0;`Vvf~AEU?&5bXNiCeacKK~iR__|>g!-n<#B)yjt-eu!_6kIt@6ZFhKQ_m8zP z_C3DKijO~y_w)HA%>ts)D0|HrDYvTc?EbMR_iktN=FQpwEyF{!4GeO-tAk|^pC>DA z5r5%CDk>fb^Tb@eV|ZM7!kM{TONy?F+~@YgNAPMqjhHcxQ+^l6cwpRbue$rh0KV%+9=uvbxL!V8YAgQoNWFJ?_AUVPA*WGDm zrDvb#U`{5hI{qO>(~z=qS8^b$fQ5Ii@q?nZbE*Wd$s~SIw3dZ;u5lo%fUMk=lvpg1 zD-sdvOWGmRh@mlcn`}u*2}TPREEp%;=bwMhiWMv9@Bi|BU~K)sY~iJsUefq&HXAo@ n-sG8Qo*CEg;>C-)gW$ga6LjKuyE~RL00000NkvXXu0mjf0#7*O delta 2481 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 diff --git a/Resources/Textures/Clothing/OuterClothing/Hardsuits/wizard.rsi/equipped-OUTERCLOTHING-vox.png b/Resources/Textures/Clothing/OuterClothing/Hardsuits/wizard.rsi/equipped-OUTERCLOTHING-vox.png index d4e4ab0f53c6a249944579f96d91a5df795ab6be..1bf9fc6b9113265768b1456fbcd147e5556cf52b 100644 GIT binary patch delta 2877 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 bwG{pXHDt>-e?^PG00000NkvXXu0mjfzr|Og delta 2132 zcmV-a2&?zd7VQv_Fn<69XF*Lt006O%3;baP00009a7bBm000id000id0mpBsWB>pN z0!c(cRCr$Pn`>+pMHI*9f>0>RvkjC-q(UG(8bCloiXmW-wJbLKLk38kE=r`*C1m@0IptsZS7_Czf zBS_C(snlgs&;HcuObdymUv=fQPSJ*z=r`#APC{s{E`NDeov1pXfAG=PJXLgjpQ>28 zPp79UPUv#khy6LOrA~;Z5B++k>xPpGvFJDH0O@C(>`>ZX{X1}Ni|zst+?%h{9-UKk zx$MLK;OwVfarS?={+7SL(B*_X^te4mr*Z*e(QncL^9R3TF|hEv*!__H3EIQozZn(- z*+-7ycz?SpCfxcAfTFj5;itMQkOJkg=tpO^dNV$8mg1aO+ooH^Q1!@_&@xP92xkAf>#fV5qTv)IP$kr1!wS zs_fWb;rnXV_y@EAeUNcrSJ7crT~nok^l%DCZ{LZ4^ErNK0o`!Kgb$xFS-=pQWt+z=5m z3lu#;@}vxY(IPJ9nILf07oQLHe-U#w-dXP#5`CgCKhc-yFu}6}1O^!H`-lQ5dCCJ< zy6ZB(=%1F}Kwo~MPrWH^?9>SQ8lr?cDSvstIdkV>b@EJT!Xx^{E`93R&jim7;Ka+X z%~QE4FKcg$C@Fc$mnF?KHoy)2l%HkQ-@avAW`d0FTEDKClsrhi2}TjXpohm1l7^C! zr(7OR;sGPMo2wb8)rwWq_1$6HKe>9B@sI7&qdn!+n_}dEQ^8OO7OlrXFr|s zh-U{d4_GqnUESYueyQ)DK%R2yTlxqb3C4ho0b{KdwOe!}BSAU!>}MBw!jl7}@ijXy z>HfE|YFYS7lai;L`gl9R+4xnd^MBRgc9YbN4%K#T2=bIu&weKQo*d96ElF)S|DyUV zV}vB8M51YLgjG5zqv%aF-WrmN3?T5r`>cMm+$@noBqN-BMch&P6%1U{+heMGWpbQYHVIq;?E@ zUw28bHh7Kz;Kbl;yu6TPsZ2gp@Dns-d0w=!1)D%@^or*zm6~f=J#)r}z0Tk#i0I9Z z03uS5!H{U=!;N5egtw{@@EifW_tUE{V`k~Rtikhb(CBtEZ+ZlviGQ}(0oaC(?st|= zVH5$JIOByZ_2|4jwPXM0a1=NrVB_}pe7X9<6H}hH+!25SX#B??&QZlH^YwzMFA)IF zHFvoJz`6jh#Z5+FQ#dyoXn{naAhwxAfM*BbRo3H2F3t`QI1E0{u^`$T+j!#CKwAc5 zY{E8dlqGX7cy<5_4}W}&z(fO4(w>t;A1e@w7{-;MZ~74hoRf2-ffkx*V}sblY7sV? zERq=YSB$`bokib%_4Ses{s7-MvSPtah|0tQ^}4uDfk2Vmm}KwJhrAkVK~YI^vo&`;1nOLPTna^}6_ z*#UT-uR$4Uw|~~I)mI;Ojtza8#q`v4Z9W#zkg2d}V+%H68#ZFAu81d@nVHtw*@aeq zpNi1CIKJCil&80u3*?OZGUA;f-k^aNnp&^U25ey)+prN^?cJNjs0)14cBLxmyIcQP z2A`r@>$3C}XIY%lnFkU-oxr)#KnqPxoekK6P1uHwCQWz_S-d=9!h}YRyKv!x8Z>B- z3I^++2?`4fed!9$E1Q~{s!B^sRkv>4?2>v43JL;|KC)_zQvU+bUqd~p#WEoP0000< KMNUMnLSTZ?+#MzW diff --git a/Resources/Textures/Clothing/OuterClothing/Suits/ancient_voidsuit.rsi/equipped-OUTERCLOTHING-vox.png b/Resources/Textures/Clothing/OuterClothing/Suits/ancient_voidsuit.rsi/equipped-OUTERCLOTHING-vox.png new file mode 100644 index 0000000000000000000000000000000000000000..349fbc02c569a12eddf0194fc798cc29b4f589e5 GIT binary patch literal 3173 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 LHfA-Z9uNKxtZO#1 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/OuterClothing/Suits/ancient_voidsuit.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Suits/ancient_voidsuit.rsi/meta.json index 6e6923dd1d..a49052b0dc 100644 --- a/Resources/Textures/Clothing/OuterClothing/Suits/ancient_voidsuit.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Suits/ancient_voidsuit.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at https://github.com/tgstation/tgstation/tree/fb2d71495bfe81446159ef528534193d09dd8d34. Tail sprites by Tiniest Shark (github)", + "copyright": "Taken from tgstation at https://github.com/tgstation/tgstation/tree/fb2d71495bfe81446159ef528534193d09dd8d34. Tail & Vox sprites by Tiniest Shark (github)", "size": { "x": 32, "y": 32 @@ -40,43 +40,73 @@ ] ] }, - { - "name": "equipped-OUTERCLOTHING-reptilian", - "directions": 4, - "delays": [ - [ - 0.2, - 0.2, - 0.2, - 0.2 - ], - [ - 0.2, - 0.2, - 0.2, - 0.2 - ], - [ - 0.2, - 0.2, - 0.2, - 0.2 - ], - [ - 0.2, - 0.2, - 0.2, - 0.2 - ] - ] - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } + { + "name": "equipped-OUTERCLOTHING-reptilian", + "directions": 4, + "delays": [ + [ + 0.2, + 0.2, + 0.2, + 0.2 + ], + [ + 0.2, + 0.2, + 0.2, + 0.2 + ], + [ + 0.2, + 0.2, + 0.2, + 0.2 + ], + [ + 0.2, + 0.2, + 0.2, + 0.2 + ] + ] + }, + { + "name": "equipped-OUTERCLOTHING-vox", + "directions": 4, + "delays": [ + [ + 0.2, + 0.2, + 0.2, + 0.2 + ], + [ + 0.2, + 0.2, + 0.2, + 0.2 + ], + [ + 0.2, + 0.2, + 0.2, + 0.2 + ], + [ + 0.2, + 0.2, + 0.2, + 0.2 + ] + ] + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + } ] } diff --git a/Resources/Textures/Clothing/OuterClothing/Suits/atmos_firesuit.rsi/equipped-OUTERCLOTHING-vox.png b/Resources/Textures/Clothing/OuterClothing/Suits/atmos_firesuit.rsi/equipped-OUTERCLOTHING-vox.png index c093278ad392afca58836db5215e02ac5117a045..b8111c20efd5b5a4617d1769250509e5f4e9cd57 100644 GIT binary patch delta 2255 zcmV;=2r&2U58x4yDSrU2&K&6g00^2%L_t(|ob6jtXdB5H{?s@Um9uv3Sn)0HDGm|i z!?bZsLKf=N3BwUu!37NM^{MrPYI=l(KJ_TbPe%lWK9wFOCGCT_r=$hL1zb1^K~-FC zLyR5g5b+{k?4@R%SZCE)V@Hb3^ue0R?8=gMWhsSL9~ke>&VTOr|Ns8~%+CD3fEHS4 zp@kM&XrYDwQ+WQ{0=Pva5}}o@rBW%^`h3exXF^Ctawpf13Z}ea7-fH`VVp{EWU)vj zLK%rH%ZFOpNuQ%aG;sgbao)Z%mE^~orn%yE)R_=MWm!fg1?|ckhT&R}TKupn9q)_t z`b}D^tma7=aK%ZzZ&{_CMVI zG4}TM(AL(5>p%T#+4YGyal~J>10jSK+4b^cou&|8#`A zTrd~}Y|4x6qVkOfQ%+P~JQuyuDcY)CR1^gOpsFeoYY7-e5}#a40RYlzf}j8J&zAlZ zae~BJ0$wA@@71(&_jQ8d;bGd*(ScAXWKqoi=GnR3D9lUS+uP~<{Cq_(sCa=8LKQ`U zuIn%i1AnGzLXsrNvJBtYWvomkErU{F`iruD!C(-os@4?-gb*rvSUQ~s0GvB_j>o>; zD49$K0ARnb8h_OgV9MW0XfO=JgOaQF&OHGDy#4rVy#4rV^v*ruAz&DWr_>+1uDjK{ z4B2cJ>2w;VX~Hy3EG{lult;-EGMNnTlTN4kn156YRYTyDYbgv50`Fbv0gwYqMiGTO z48QtK4<3H5VLqc_B2F9$au~ANEO&pyFg&s>Q=iX=#l^+4zCNE1rfI@3438v9)aiIo z(KXJW?V%rx5IoPnfSOsy&arOG^&2;C@Z-tJNy|0={w9>cw{WVf19xXNEG*|-hrs!> zJ%9B53qhE>#WMagXUfF17~>wo6T`FuVM4i2JNEb_iyuNU+4^MGIk|Nf>U z{)!j6B_G{13!ZMtM{oYFfZmh9@E~w;jPOxb{1!;3(|9_XJ@Bny384?j`(XD0CleN*wk}W1AmD8 z>`QQCV*^`TTkv|lC>D$8?Cj+2%m_~TD~GbiaB}v=#RM}=la}7Ro5#6EHk&QuFa4*IBsu>4 z72((eVzC${gj9?%S(ZTvK`a()%D$ku>r@GbVYuEGbmT6wEK_FrN-@sH2!Hz{7<5;uO*hUVrWJt*a^hX-g*5dsE@GG;ELCo zf-7^C(V@Pw7{B*ujc-qjqd!ZWGEBq?ZY4BCe$t%kv(#Te8HdPemx+ZyHC-4i9xyu8 zN8cSfjpz9n0Dx0n9RPr}-F8b{iK8wP;2;K*rFxw>nt_97CwaAskbgJ@Y&*h)5c=*= z4*=Npp`sD^me}Y}A0@#q+?~~+X4au**6}?50=K`+K~WUkxd|$gDT)G*=e03e%3MsH zH5%;Mj0*rf9uF_ZV6xr0392XxZhx8M$z3(Gj=QrONU+P|85R#pCceO|@$4@MqqLq?}iM0fJ=bl(B zErx-v>rhp-!75gUs;ZVc1yLSFQP4a0#8NsZ!meY@!Rq|k9?G(_tmI{Mzza>!g9N*9 zZ|NXQ%jyLtCnqsF;Kd*Be$~){@RuKakKS72yMU9|KL!9iyYLQ*a==wV zhU1QRZi4onJSc$r$L9wHQ}12r;k7&B7~$p(I0YMv#281Z9!Qku_rJ~I**Cz4A34*_ zRd!fB_wR4w`#<;*R8{34AV;YSbSeWg07|33q9}O$&wsy_6>&AJSXxAXWQ4L>p^g(L z@bI%c@ERNFzdFv(S5mW0T@Lq0M(D+#eTWy^+gO=Oq9_Nz&QYpQawCH)VeMXEuNFrg z>v6Yev<$9(F`{XjN0w!T!(q#B23VEGxsU zcWca*2S|trg+i8E0A1IcRvRE97K>3)`B*H*x5(;&YnNq(3idTPgym?n_65ZsO~JPO dWiq+t{txKfC!N0Dy!5 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 delta 2299 zcmVrL?MGNanfR0 z3sMOYEPLT#hZHHo=?iClVZ#^}feMB(1HUjaX3Xx3CNI|D$TZl;OqY(iU~E!bhC1_> zkhMW!XPY>eqgk3-qMc#s?S*|8oh;dRvV_^H@0-)_?)Q7X&wuaH^ZWZeP(cM1R8T<$ z6;x0`1>Z{uRx7%Xzpb4+z7K%&&CR^>=UqnIM?Zh6eQ@GJh_L<$uviCHL{SHQ{F$Xl&e`O{R5qbqVo!T;nPT`D9y-Wq*bJeRF7^Ubgg4Y~%qt|6k7U!Qph4oPV1YfqLf^MIn<;=dF`Tr%@Ee zRKHZvJFh5;!BHyybqx@Y$F$ zzi-ZHuYLN^Mt2MG?}n-8{J@%_;BY#*pGpDP<}YY~a5$_519cqO{{(=^WD6Qa%!cL11QSg_R2F8{hi;KS?J8Av2} zu($|--+$+0sA**;*2kIt9BSJBoOp4Ofkc82uV1&M^m_c`6B9<+@AEN`NZ{|ABNmGR z5R1j|_sy-mFM_|I0aR5*6h%W3yNUydqKK-hw%TsQZ+Kiy8;YWs%Ej<+xC-psx6f35 z*wh5Tt@?TtMWNn*3xK9G57%v1EOO=O9$4sUmw(^VGB`FiCdjh9B6xV%^c)`AXL`!A z%-Gmi$u>c`{4SRZ0H?!&swg-e4%2(P{2T5BXJ=;#hr?Pl65*iNYx*WhlCcAGIvhB? zUZRl*fHpfjYq;=ckj*cyb`n;W-N|Iq^iFiSZ1WfN08tc4rBaBZh{xmMaBVFPr;~Hh zD1X-m29P8PS(cF`iE9G`oQpt;OT*929hZSoxP58XD;A=rHkj zc689t&|r9h&abyG$^bg_B_xwh8yk=hu3kl!Wd;Wa1zDDjy?J(>VwS%3__HyYOrj47 zS(c3@dZTvvP|yIm0`8|$oQp>3?C8i_zkjo%gLBcSu_3XmNFn}X$Br4hIsMF2 z7z}b?|9)fq>5yfa1N-+A3dA^ThnX|BoYJzfi=pN3i@O#%d%;A zr)e4|PMlyMk-+2e*ygw70V@ZS0P_nAsH)2SdtaEo-@o?-s;V--us|>nARG>F>KL4l zU+x?{^lsaBHpX7SD9d+z}i z18lVdTMf&HAsw2g@$%u*+An|c698IUTLI|r?=Sf&un^+$xR%We@cxave1G}3KMI0i zPX*fw@BL|m<~Vhcp{DIP9ga1j>K!BRZ~M*N#~PG=68!CMN#PQ@5kYE;&Qn-==IXr*tqGaa6ZK2ajmhjk%L|@ zE|&|3(@B4SzY!95xm*l2ZO3uyA}=34t!bJy6)YJ*08Sp-$-C}5#ydq(kR-{N0|3Ji z<$~UE9j&dcNRnjA8F<%yhm(hPS{~chJRr|INs^3Uv*rPUKsX!*RxUqv z=tE$#t%inAR-T!3Gk>gRkXh=HMa1KA?R;}Htxl)Gr9+lw<1#cD2pBqBfvuh3_{0RN zs^al@ijMo21KBziy0tC@%LYg!5<+&;!jU6KjBmH<>rKycLeEFgpV_+T2@#1z!m{^S zHbAyZEiW$v(9_$Cq9`1lngZa3zP>fF!BXOWD#d%hU(sV~@_#6bqR`XZYtkuK*NtFn z2)wD@-lnQ5v$M10i@)np+HwR(beXx4U{MqeeNZ>0h#>Np&YL`*xrhK2?%w6v5hES3#fmbuWM_V#wv)otkb#00@Wfboe5V-hOGRhBLzkw^&H9001K(B9r|q|6lq z%LdR77pkfeWQ)BB=!sAIj?e4$ zvb40sa{<8^pWM9VjZ>&kh9;`?%n=On4X$4tX*y+WOrVc<<-vrKzQ}F z*G=#3z_Ow~pO616|9g#VJ^t5|HFf3r`LYTT Vqo;tUu3!KF002ovPDHLkV1hs3iB|vs diff --git a/Resources/Textures/Clothing/OuterClothing/Suits/eva_emergency.rsi/equipped-OUTERCLOTHING-vox.png b/Resources/Textures/Clothing/OuterClothing/Suits/eva_emergency.rsi/equipped-OUTERCLOTHING-vox.png index 90cd8f442fdf5513cbab8448af50112be03f714a..78c741ed203441e48fd58ec559feff4758029925 100644 GIT binary patch delta 2391 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 Xs9!|z%YO3q+% ze$Zx{FGsh*1j0cS%zdzDHMDj?)^r6IEA1L_*JeqL?3(vJjDPR!%+9DY>yFLA{$QBd zdEa?{&-2Xl{+aiA7sw-zJo3mRk391DKLa6zD$m(sU#=A5IF520w<~3gqPyKeQ>m2d zycfLaZgU*+ZUb*s;d)U1~RKx)=YTYX*tfY{98H$A0h_zgqJf25W} ze5wop5T7c;ky=i-o)H*wz-xUT>Z~q6VAO#~6iBWHkz5U8Z32{CN1{?)XLSKy>+|F^ z3NrcQQ)Ni51_4OA#HY#-i2{L9hiQJ>P8IsQKwBDss(&dDoYe(*C-4nA`#4;AKcTAE z*~g*$KW;o9U&mC{42JFjZ9O~7&xXH7)YcoD1O^*Vo91^IRpg7~GZ+gp1sH!z190)WT~q$I_6;Ble!~u6nEX5ev6;h@k%SzE(tYVISdB<@(^#GR*}zaA z5Q(OZ6MvgIOn#m~Bns6bHcOE)HkrLLJMmw-K_E7B8g9$@2_ZBzoF4Z2yQFJ2=}{i6 zjMWPbgYI^gmdWou`CD4?<3B0KarCTMNzc{4OV5gxl;b#gE?|~_#|Wrx=T*O38l+x0 z^Jr<<{<&&}F zcl^_M@Q+7X^Y7RRuB@y;DIhTFK;yX-PQ0o%J}~OQp@S&^VD+iXyt2Hl zNBev>(DEl_{tM@)@ln$w{Qb5?{K^MeuYa1F_0qKo>4Sq1qB^flNaf02J5$cf$Zt3_ z`@2BdEGsZ71QPm zBII(p(0l8E>R#`y1IR^>|7-9Yc0eMLuq`bu0RW1Mid1Fn_tMf55{X3a!_Pu~!+#E7 zok=JZ(k*BAcRT&vi9Z&L>6WwmX88>{fX&KEN=i^tQleXjmAT#SoI8Q>XTJGN6crVj z<~I~BJkP5HE-o%=o-Tm0JmdE}8t9(m-UgS|?IzH~b5WhU4N_Eevj#c(~Nv(e4e zY>DGInn)yUdMR>CzQJ|)*)>}MQh%oD+InDPIvSN}I5VU)o@Im82&$ZtYllcqPcM5h z9a?<=shZzR(*%0{{l^76SN1E-x?5y)(*7H*hnMPK#f??7`sO zdD-~nY7qO2y|R7)(9vY4nSZ)uIz{Dxtva|5KbgVB>yi>mqPCxA?tk{~ZW z{6uQ&EH^lG52z7=CnE_QsnzZmunL(RHKNq%wlt`l$kodpU41f}$A3O-E;)TRDk8ZW z#Kr4&`CtMw1x2D#(_p!J<$eLH*5%uJU}L#|C8yZT;qii9vnPP*9En0@Q*t$k&qhV{ zvKb+S3WA`?r*|~j<*jKQO?Fl8o#%N<2%#LuQ9_7(Y_*Rt7wGSTii>gcJg>?Kbu`)K zZF5ZTt!y@%U#(Lg?u1C1j zSpxuYI-PL2Tv%RSmP3*$^mxH;$gi0e4Yu81jaY>fuL8dMr*fa8)aCTaZ*|}Lb};3DjwU`2hOF)AvcXqFaro~agxLr% z3mO`RCJb3<>J2-&L?%yW^9v1w0@e+~R1gHpoWOCM(tlvfjb~s^0Md?Ux+rzDf}0A0 zKt)kh8O-xM-OS7FnF9dGyh?|NqG;LyS^s6`)SJMU50A>@FSZzVat$Si)9J*Q50B#1 zo7u}V?Et;}{NmywyWEQfQ<}jkW2?Ob+rjj1@wvG<2!a5Y%Z15F>AP1D1OUME=g+aY zxJb<|wm+Hx<#}F?y1BVI0Dvfph{a;EZf0OsQOfh_J-B*rAxpW2`Sot<=wz7xf1!0_ UuTJnE zIBBCMl-7^G^ENg%BqSszCMEy?000000ozoT0000NbW%=J|9}7g|NsC0|NsC0|NsC0 z|NsC0|Ns90=0N6N00009a7bBm000id000id0mpBsWB>pH@JU2LR9HvtmTh<2APj{i z-W;bMO-=3p|5JBGh$Fd>ZD(hn*6VXxtScUaBLlSmrM?0GBY?hi=m3~omM>>(tcTEq%IhZHzP?LPt2MIHe~ zzVry<2iPGx?H>T2ri*6}p?{r=RrRCD8(#sUXXX$B`}@nV5Z{8%^`|9=2vgz+;%7@yBy0PvUV@_zeR ztlt{676P};ai_9cLiMk22_rc92LKIU3n5BH*L$UU-$r2l2Y?745rYsNqb>JZ)xWaC z2u}V3fJv_gheCC3cMiqcB36B00k{GvgXU)kHi*&o&bbH0Aa@V z*9VA!{urPlC_wT!e@qi&2k%b-M&JoaNNq7Qg<1B-dPe9k%d)OBo`TI&jnDwF@8cX) zcgK!o>%;*`4hlm6<|rqCZhs*_j8`!NAR`lYJ{kdFF=g=kfaQa7`II^s0i+H-OQw&d zMSma#*caLMQ3qkx(L*!`)PbB7RDTP&QNb8zTrFZ$4Mxgs1i%o8QldBlL~+RszyfAU zgbAb(AYl?nF?Fg_XNtcAh=!n3H@qTzNP|xS4}c>xj9Uwc6ksb`@mgz$sxs03CQde*i!N mUO-g~oOJgjsRj0Z-+uxia3O1PE10000 Date: Tue, 14 Jul 2026 18:21:30 +0200 Subject: [PATCH 002/108] Fix recent grappling hook code review comments (#44564) * Easy review changes * Change mass factor calculation * Minor formatting fix * Review fixes + prevent same-grid pulling --- .../Misc/GrapplingProjectileEmbedComponent.cs | 4 +- .../Weapons/Misc/SharedGrapplingGunSystem.cs | 227 +++++++++--------- 2 files changed, 109 insertions(+), 122 deletions(-) diff --git a/Content.Shared/Weapons/Misc/GrapplingProjectileEmbedComponent.cs b/Content.Shared/Weapons/Misc/GrapplingProjectileEmbedComponent.cs index feff89dda1..4d059f661b 100644 --- a/Content.Shared/Weapons/Misc/GrapplingProjectileEmbedComponent.cs +++ b/Content.Shared/Weapons/Misc/GrapplingProjectileEmbedComponent.cs @@ -5,12 +5,12 @@ namespace Content.Shared.Weapons.Misc; ///

/// Component used to track that an object has a grappling projectile embeded into it, to ensure joint relays between grid and entities are properly updated. /// -[RegisterComponent, NetworkedComponent] +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState] public sealed partial class GrapplingProjectileEmbedComponent : Component { /// /// The projectiles embedded in this entity. /// - [DataField] + [DataField, AutoNetworkedField] public List GrapplingProjectiles = new(); } diff --git a/Content.Shared/Weapons/Misc/SharedGrapplingGunSystem.cs b/Content.Shared/Weapons/Misc/SharedGrapplingGunSystem.cs index 2204c398b8..f574df2d8d 100644 --- a/Content.Shared/Weapons/Misc/SharedGrapplingGunSystem.cs +++ b/Content.Shared/Weapons/Misc/SharedGrapplingGunSystem.cs @@ -48,31 +48,20 @@ public abstract partial class SharedGrapplingGunSystem : VirtualController public override void Initialize() { - SubscribeLocalEvent(OnGrappleJointRemoved); - SubscribeLocalEvent(OnGrappleProjectileShutdown); - SubscribeLocalEvent(OnGrappleCollide); - - SubscribeLocalEvent(OnGrapplingShot); - SubscribeLocalEvent(OnGunActivate); - SubscribeLocalEvent(OnGrapplingDeselected); - - SubscribeAllEvent(OnGrapplingReel); - SubscribeLocalEvent(OnWeightlessMove); + base.Initialize(); // TODO: After step trigger refactor, dropping a grappling gun should manually try and activate step triggers it's suppressing. - - SubscribeLocalEvent(OnAnchorStateChanged); - UpdatesBefore.Add(typeof(SharedJointSystem)); // We want to run before joints are solved - base.Initialize(); } - private void OnGrappleJointRemoved(EntityUid uid, GrapplingProjectileComponent component, JointRemovedEvent args) + [SubscribeLocalEvent] + private void OnGrappleJointRemoved(Entity entity, ref JointRemovedEvent args) { if (_netManager.IsServer) - QueueDel(uid); + QueueDel(entity); } + [SubscribeLocalEvent] private void OnGrappleProjectileShutdown(Entity ent, ref ComponentShutdown args) { if (!TryComp(ent, out var embedComp) || embedComp.EmbeddedIntoUid == null) @@ -84,9 +73,10 @@ public abstract partial class SharedGrapplingGunSystem : VirtualController grapplingEmbedComp.GrapplingProjectiles.Remove(ent); } + [SubscribeLocalEvent] private void OnGrappleCollide(EntityUid uid, GrapplingProjectileComponent component, ref ProjectileEmbedEvent args) { - if (!Timing.IsFirstTimePredicted || !args.Weapon.HasValue || !TryComp(args.Weapon, out var grapple)) + if (!args.Weapon.HasValue || !TryComp(args.Weapon, out var grapple)) return; var grapplePos = _transform.GetWorldPosition(args.Weapon.Value); @@ -114,7 +104,8 @@ public abstract partial class SharedGrapplingGunSystem : VirtualController _joints.RefreshRelay(args.Weapon.Value, jointCompGrapple); } - private void OnGrapplingShot(EntityUid uid, GrapplingGunComponent component, ref GunShotEvent args) + [SubscribeLocalEvent] + private void OnGrapplingShot(Entity entity, ref GunShotEvent args) { foreach (var (shotUid, _) in args.Ammo) { @@ -123,34 +114,36 @@ public abstract partial class SharedGrapplingGunSystem : VirtualController //todo: this doesn't actually support multigrapple // At least show the visuals. - component.Projectile = shotUid.Value; - DirtyField(uid, component, nameof(GrapplingGunComponent.Projectile)); + entity.Comp.Projectile = shotUid.Value; + DirtyField(entity.AsNullable(), nameof(GrapplingGunComponent.Projectile)); var visuals = EnsureComp(shotUid.Value); - visuals.Sprite = component.RopeSprite; - visuals.Target = uid; + visuals.Sprite = entity.Comp.RopeSprite; + visuals.Target = entity.Owner; Dirty(shotUid.Value, visuals); } - TryComp(uid, out var appearance); - _appearance.SetData(uid, SharedTetherGunSystem.TetherVisualsStatus.Key, false, appearance); + if (TryComp(entity.Owner, out var appearance)) + _appearance.SetData(entity.Owner, SharedTetherGunSystem.TetherVisualsStatus.Key, false, appearance); } - private void OnGunActivate(EntityUid uid, GrapplingGunComponent component, ActivateInWorldEvent args) + [SubscribeLocalEvent] + private void OnGunActivate(Entity entity, ref ActivateInWorldEvent args) { - if (!Timing.IsFirstTimePredicted || args.Handled || !args.Complex) + if (args.Handled || !args.Complex) return; - _audio.PlayPredicted(component.CycleSound, uid, args.User); - Ungrapple((uid, component), false, args.User); - + _audio.PlayPredicted(entity.Comp.CycleSound, entity.Owner, args.User); + Ungrapple((entity), false, args.User); args.Handled = true; } - private void OnGrapplingDeselected(EntityUid uid, GrapplingGunComponent component, HandDeselectedEvent args) + [SubscribeLocalEvent] + private void OnGrapplingDeselected(Entity entity, ref HandDeselectedEvent args) { - SetReeling(uid, component, false, args.User); + SetReeling(entity, false, args.User); } + [EventSubscription] private void OnGrapplingReel(RequestGrapplingReelMessage msg, EntitySessionEventArgs args) { if (args.SenderSession.AttachedEntity is not { } player) @@ -169,9 +162,10 @@ public abstract partial class SharedGrapplingGunSystem : VirtualController return; } - SetReeling(activeItem.Value, grappling, msg.Reeling, player); + SetReeling((activeItem.Value, grappling), msg.Reeling, player); } + [SubscribeLocalEvent] private void OnWeightlessMove(ref CanWeightlessMoveEvent ev) { if (ev.CanMove || !TryComp(ev.Uid, out var relayComp)) @@ -187,6 +181,7 @@ public abstract partial class SharedGrapplingGunSystem : VirtualController } } + [SubscribeLocalEvent] private void OnAnchorStateChanged(Entity entity, ref AnchorStateChangedEvent args) { foreach (var hook in entity.Comp.GrapplingProjectiles) @@ -201,65 +196,6 @@ public abstract partial class SharedGrapplingGunSystem : VirtualController } } - /// - /// Ungrapples the grappling hook, destroying the hook and severing the joint - /// - /// Entity for the grappling gun - /// Whether to play the sound for the rope breaking - /// The user responsible for the ungrapple. Optional - public void Ungrapple(Entity grapple, bool isBreak, EntityUid? user = null) - { - if (!Timing.IsFirstTimePredicted || grapple.Comp.Projectile is not { } projectile) - return; - - if (isBreak) - { - if (user != null) - _audio.PlayPredicted(grapple.Comp.BreakSound, grapple.Owner, user); - else if (_netManager.IsServer) // This feels... hacky. - _audio.PlayPvs(grapple.Comp.BreakSound, grapple.Owner); - } - - _appearance.SetData(grapple.Owner, SharedTetherGunSystem.TetherVisualsStatus.Key, true); - - if (_netManager.IsServer) - QueueDel(projectile); - - SetReeling(grapple.Owner, grapple.Comp, false, user); - grapple.Comp.Projectile = null; - DirtyField(grapple.Owner, grapple.Comp, nameof(GrapplingGunComponent.Projectile)); - _gun.ChangeBasicEntityAmmoCount(grapple.Owner, 1); - } - - private void SetReeling(EntityUid uid, GrapplingGunComponent component, bool value, EntityUid? user) - { - if (TryComp(uid, out var jointComp) && - jointComp.GetJoints.TryGetValue(GrapplingJoint, out var joint) && - joint is DistanceJoint distance) - { - if (distance.MaxLength <= distance.MinLength + component.RopeFullyReeledMargin) - value = false; - } - - if (component.Reeling == value) - return; - - if (value) - { - // We null-coalesce here because playing the sound again will cause it to become eternally stuck playing - component.Stream ??= _audio.PlayPredicted(component.ReelSound, uid, user)?.Entity; - } - else if (!value && component.Stream.HasValue && Timing.IsFirstTimePredicted) - { - // The IsFirstTimePredicted check is important here because otherwise component.Stream will be set to null from an early cancellation if this isn't FirstTimePredicted - component.Stream = _audio.Stop(component.Stream); - } - - component.Reeling = value; - - DirtyField(uid, component, nameof(GrapplingGunComponent.Reeling)); - } - public override void UpdateBeforeSolve(bool prediction, float frameTime) { base.UpdateBeforeSolve(prediction, frameTime); @@ -330,16 +266,20 @@ public abstract partial class SharedGrapplingGunSystem : VirtualController if (ropeLength <= distance.MinLength + grappling.RopeFullyReeledMargin) { - SetReeling(uid, grappling, false, null); + SetReeling((uid, grappling), false, null); } else if (ropeLength >= distance.MaxLength - grappling.RopeMargin) { // Checks if the entity is "tied" to the grid it is on via extra-gravity technology (e.g. magboots). If so, for the purposes of reeling it counts as if you're weighing the same as the grid. bool attachedToGrid; + // If the entities being targetted are on the same grid. If they are, the grid itself should not be affected with any pushing, to avoid becoming a "grappling hook-powered shuttle". + var sameGrid = false; + if (_transform.GetGrid(joint.BodyAUid) == _transform.GetGrid(joint.BodyBUid)) { attachedToGrid = false; + sameGrid = true; } else { @@ -370,40 +310,23 @@ public abstract partial class SharedGrapplingGunSystem : VirtualController var grapplerOffsetB = _transform.GetRelativePosition(Transform(joint.BodyBUid), grapplerUidB); var grapplerBodyB = Comp(grapplerUidB); - // Handle edge-cases where the mass is zero (e.g. station anchor). Treat that as infinite weight. - float massFactor; - if (grapplerBodyA.Mass == 0f && grapplerBodyB.Mass != 0f) - { - massFactor = 1f; - } - else if (grapplerBodyA.Mass != 0f && grapplerBodyB.Mass == 0f) - { - massFactor = 0f; - } - else if (grapplerBodyA.Mass == 0f && grapplerBodyB.Mass == 0f) - { - massFactor = 0.5f; - } - else - { - // This assumes the bodies can move freely. - // It would be nice if any resisting force applied to the grid (e.g. if stuck on something and can't move closer) would transfer to the main entity. - massFactor = grapplerBodyA.Mass / (grapplerBodyA.Mass + grapplerBodyB.Mass); - } - // Note that this way of calculating the impulse does not take into account objects being stuck on things, e.g. a movable grapple point stuck behind a wall. // Ideally the contraction of the joint itself should take this into account, but alas, this works for now. - var massFactorA = (1 - massFactor); - if (grapplerBodyA.Mass < BaseWeightMass) // To prevent small things go zoomies + var massFactorA = 1f; + var massFactorB = 1f; + + // To prevent small things go zoomies + // Technically doesn't preserve momentum but it's either this or things start being yeeted at light speed. + if (grapplerBodyA.Mass < BaseWeightMass) massFactorA *= grapplerBodyA.Mass / BaseWeightMass; - _physics.ApplyLinearImpulse(grapplerUidA, targetDirection * massFactorA * grappling.ReelForce * frameTime * -1, grapplerOffsetA, body: grapplerBodyA); - - var massFactorB = massFactor; - if (grapplerBodyB.Mass < BaseWeightMass) // To prevent small things go zoomies + if (grapplerBodyB.Mass < BaseWeightMass) massFactorB *= grapplerBodyB.Mass / BaseWeightMass; + if (sameGrid && physicalHook != _transform.GetGrid(joint.BodyAUid)) + _physics.ApplyLinearImpulse(grapplerUidA, -targetDirection * massFactorA * grappling.ReelForce * frameTime, grapplerOffsetA, body: grapplerBodyA); + _physics.ApplyLinearImpulse(grapplerUidB, targetDirection * massFactorB * grappling.ReelForce * frameTime, grapplerOffsetB, body: grapplerBodyB); } @@ -411,6 +334,65 @@ public abstract partial class SharedGrapplingGunSystem : VirtualController } } + /// + /// Ungrapples the grappling hook, destroying the hook and severing the joint + /// + /// Entity for the grappling gun + /// Whether to play the sound for the rope breaking + /// The user responsible for the ungrapple. Optional + public void Ungrapple(Entity grapple, bool isBreak, EntityUid? user = null) + { + if (grapple.Comp.Projectile is not { } projectile) + return; + + if (isBreak && Timing.IsFirstTimePredicted) + { + if (user != null) + _audio.PlayPredicted(grapple.Comp.BreakSound, grapple.Owner, user); + else if (_netManager.IsServer) // This feels... hacky. + _audio.PlayPvs(grapple.Comp.BreakSound, grapple.Owner); + } + + _appearance.SetData(grapple.Owner, SharedTetherGunSystem.TetherVisualsStatus.Key, true); + + if (_netManager.IsServer) + QueueDel(projectile); + + SetReeling(grapple, false, user); + grapple.Comp.Projectile = null; + DirtyField(grapple.Owner, grapple.Comp, nameof(GrapplingGunComponent.Projectile)); + _gun.ChangeBasicEntityAmmoCount(grapple.Owner, 1); + } + + private void SetReeling(Entity entity, bool value, EntityUid? user) + { + if (TryComp(entity.Owner, out var jointComp) && + jointComp.GetJoints.TryGetValue(GrapplingJoint, out var joint) && + joint is DistanceJoint distance) + { + if (distance.MaxLength <= distance.MinLength + entity.Comp.RopeFullyReeledMargin) + value = false; + } + + if (entity.Comp.Reeling == value) + return; + + if (value) + { + // We null-coalesce here because playing the sound again will cause it to become eternally stuck playing + entity.Comp.Stream ??= _audio.PlayPredicted(entity.Comp.ReelSound, entity.Owner, user)?.Entity; + } + else if (!value && entity.Comp.Stream.HasValue && Timing.IsFirstTimePredicted) + { + // The IsFirstTimePredicted check is important here because otherwise component.Stream will be set to null from an early cancellation if this isn't FirstTimePredicted + entity.Comp.Stream = _audio.Stop(entity.Comp.Stream); + } + + entity.Comp.Reeling = value; + + DirtyField(entity.AsNullable(), nameof(GrapplingGunComponent.Reeling)); + } + /// /// Checks whether the entity is hooked to something via grappling gun. /// @@ -457,10 +439,15 @@ public abstract partial class SharedGrapplingGunSystem : VirtualController } } - + /// + /// Client to server message to begin/end reeling in the grapplign hook. + /// [Serializable, NetSerializable] protected sealed class RequestGrapplingReelMessage : EntityEventArgs { + /// + /// Whether the client wants to reel in or stop reeling. + /// public bool Reeling; public RequestGrapplingReelMessage(bool reeling) From eafd2f875be5ef5231f6344e6ddb926ceb618e26 Mon Sep 17 00:00:00 2001 From: Fildrance Date: Tue, 14 Jul 2026 19:21:39 +0300 Subject: [PATCH 003/108] feat: re-add 'c# dev-kit' build task for vscode (#44410) feat: re-add 'c# dev-kit' task for vscode, add instanceLimit for default vscode build action --- .vscode/tasks.json | 28 +++++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/.vscode/tasks.json b/.vscode/tasks.json index 7f4efc8c9a..96838b16d6 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -13,13 +13,35 @@ "/consoleloggerparameters:'ForceNoAlign;NoSummary'" // Do not generate summary otherwise it leads to duplicate errors in Problems panel ], "group": { - "kind": "build", - "isDefault": true + "kind": "build" }, "presentation": { "reveal": "silent" }, - "problemMatcher": "$msCompile" + "problemMatcher": "$msCompile", + "runOptions": { + "instanceLimit": 1 + } + }, + { + "label": "build (C# Dev Kit)", + "detail": "needs C# Dev Kit extention. use the (build) task instead if you dont have the extention.", + "type": "dotnet", + "task": "build", + "icon": { + "id": "build", + "color": "terminal.ansiBlue" + }, + "group": { + "kind": "build" + }, + "presentation": { + "reveal": "silent" + }, + "problemMatcher": "$msCompile", + "runOptions": { + "instanceLimit": 1 + } }, { "label": "build-yaml-linter", From 126416be6a0e404923bec9f66a63c757d8aa58c5 Mon Sep 17 00:00:00 2001 From: eoineoineoin Date: Tue, 14 Jul 2026 18:27:30 +0100 Subject: [PATCH 004/108] Fix initial appearance of empty gas canisters (#44665) Update canister appearance on MapInit --- .../Unary/EntitySystems/GasCanisterSystem.cs | 23 +++--------------- .../Unary/Systems/SharedGasCanisterSystem.cs | 24 +++++++++++++++++++ 2 files changed, 27 insertions(+), 20 deletions(-) diff --git a/Content.Server/Atmos/Piping/Unary/EntitySystems/GasCanisterSystem.cs b/Content.Server/Atmos/Piping/Unary/EntitySystems/GasCanisterSystem.cs index 8c33a67505..7de8adb218 100644 --- a/Content.Server/Atmos/Piping/Unary/EntitySystems/GasCanisterSystem.cs +++ b/Content.Server/Atmos/Piping/Unary/EntitySystems/GasCanisterSystem.cs @@ -91,8 +91,7 @@ public sealed partial class GasCanisterSystem : SharedGasCanisterSystem { _atmos.React(entity.Comp.Air, entity.Comp); - if (!TryComp(entity, out var nodeContainer) - || !TryComp(entity, out var appearance)) + if (!TryComp(entity, out var nodeContainer)) return; if (!_nodeContainer.TryGetNode(nodeContainer, entity.Comp.PortName, out PortablePipeNode? portNode)) @@ -125,26 +124,10 @@ public sealed partial class GasCanisterSystem : SharedGasCanisterSystem if (MathHelper.CloseToPercent(entity.Comp.Air.Pressure, entity.Comp.LastPressure)) return; - DirtyUI(entity, entity.Comp, nodeContainer); - entity.Comp.LastPressure = entity.Comp.Air.Pressure; - if (entity.Comp.Air.Pressure < 10) - { - _appearance.SetData(entity, GasCanisterVisuals.PressureState, 0, appearance); - } - else if (entity.Comp.Air.Pressure < Atmospherics.OneAtmosphere) - { - _appearance.SetData(entity, GasCanisterVisuals.PressureState, 1, appearance); - } - else if (entity.Comp.Air.Pressure < (15 * Atmospherics.OneAtmosphere)) - { - _appearance.SetData(entity, GasCanisterVisuals.PressureState, 2, appearance); - } - else - { - _appearance.SetData(entity, GasCanisterVisuals.PressureState, 3, appearance); - } + DirtyUI(entity, entity.Comp, nodeContainer); + UpdateAppearance(entity); } /// diff --git a/Content.Shared/Atmos/Piping/Unary/Systems/SharedGasCanisterSystem.cs b/Content.Shared/Atmos/Piping/Unary/Systems/SharedGasCanisterSystem.cs index 259eb9316c..d59a98e880 100644 --- a/Content.Shared/Atmos/Piping/Unary/Systems/SharedGasCanisterSystem.cs +++ b/Content.Shared/Atmos/Piping/Unary/Systems/SharedGasCanisterSystem.cs @@ -44,6 +44,7 @@ public abstract partial class SharedGasCanisterSystem : GasMaxPressureSystem ent, ref ComponentStartup args) @@ -149,4 +150,27 @@ public abstract partial class SharedGasCanisterSystem : GasMaxPressureSystem entity) + { + if (!TryComp(entity, out var appearance)) + return; + + if (entity.Comp.Air.Pressure < 10) + { + _appearance.SetData(entity, GasCanisterVisuals.PressureState, 0, appearance); + } + else if (entity.Comp.Air.Pressure < Atmospherics.OneAtmosphere) + { + _appearance.SetData(entity, GasCanisterVisuals.PressureState, 1, appearance); + } + else if (entity.Comp.Air.Pressure < (15 * Atmospherics.OneAtmosphere)) + { + _appearance.SetData(entity, GasCanisterVisuals.PressureState, 2, appearance); + } + else + { + _appearance.SetData(entity, GasCanisterVisuals.PressureState, 3, appearance); + } + } } From 667f7fa8bbd49db4966d419b280dfd530eff5217 Mon Sep 17 00:00:00 2001 From: Jessica M Date: Tue, 14 Jul 2026 12:11:51 -0700 Subject: [PATCH 005/108] Fix TryFindRandomTileOnStation spawning everything at 0, 0 (#44668) actually use the tile that was found --- Content.Server/GameTicking/Rules/GameRuleSystem.Utility.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Content.Server/GameTicking/Rules/GameRuleSystem.Utility.cs b/Content.Server/GameTicking/Rules/GameRuleSystem.Utility.cs index a2b509eb7a..9c8c26bdc7 100644 --- a/Content.Server/GameTicking/Rules/GameRuleSystem.Utility.cs +++ b/Content.Server/GameTicking/Rules/GameRuleSystem.Utility.cs @@ -3,7 +3,6 @@ using System.Diagnostics.CodeAnalysis; using System.Linq; using Content.Server.Station.Components; using Content.Shared.GameTicking.Components; -using Content.Shared.Random.Helpers; using Content.Shared.Station.Components; using Robust.Shared.Collections; using Robust.Shared.Map; @@ -165,12 +164,13 @@ public abstract partial class GameRuleSystem where T: IComponent // Invalid tile, try again. if (_atmosphere.IsTileSpace(targetGrid, Transform(targetGrid).MapUid, tileRef.GridIndices) - || _atmosphere.IsTileAirBlockedCached(targetGrid, tile)) + || _atmosphere.IsTileAirBlockedCached(targetGrid, tileRef.GridIndices)) { continue; } - targetCoords = _map.GridTileToLocal(targetGrid, gridComp, tile); + targetCoords = _map.GridTileToLocal(targetGrid, gridComp, tileRef.GridIndices); + tile = tileRef.GridIndices; return true; } From abf7361f72742b4060794f56870f0dd3e1ff778a Mon Sep 17 00:00:00 2001 From: SlamBamActionman <83650252+SlamBamActionman@users.noreply.github.com> Date: Tue, 14 Jul 2026 22:48:35 +0200 Subject: [PATCH 006/108] Revert "Add "wobbly walk" - movement deviation when drunk/bloodloss" (#44671) Revert "Add "wobbly walk" - movement deviation when drunk/bloodloss (#44652)" This reverts commit fe315224617b662da58421f26ab2f226ad161d95. --- .../WobblyMovementStatusEffectComponent.cs | 53 --------------- Content.Shared/Drunk/WobblyMovementSystem.cs | 66 ------------------- .../ModifyMovementTargetDirectionEvent.cs | 11 ---- .../Movement/Systems/SharedMoverController.cs | 5 -- .../StatusEffectSystem.Relay.cs | 1 - .../Entities/StatusEffects/body.yml | 1 - .../Entities/StatusEffects/misc.yml | 1 - 7 files changed, 138 deletions(-) delete mode 100644 Content.Shared/Drunk/WobblyMovementStatusEffectComponent.cs delete mode 100644 Content.Shared/Drunk/WobblyMovementSystem.cs delete mode 100644 Content.Shared/Movement/Events/ModifyMovementTargetDirectionEvent.cs diff --git a/Content.Shared/Drunk/WobblyMovementStatusEffectComponent.cs b/Content.Shared/Drunk/WobblyMovementStatusEffectComponent.cs deleted file mode 100644 index 9c26e3b446..0000000000 --- a/Content.Shared/Drunk/WobblyMovementStatusEffectComponent.cs +++ /dev/null @@ -1,53 +0,0 @@ -using System.Numerics; -using Robust.Shared.GameStates; -using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; - -namespace Content.Shared.Drunk; - -/// -/// This is used by a status effect entity to apply a wobbly walk, causing the player to randomly move in the wrong direction. -/// The effect scales linearly to its max strength, and then at the end of the status effect scales back down. -/// -[RegisterComponent, NetworkedComponent] -[AutoGenerateComponentState(fieldDeltas: true), AutoGenerateComponentPause] -[Access(typeof(WobblyMovementSystem))] -public sealed partial class WobblyMovementStatusEffectComponent : Component -{ - /// - /// How long it takes for the effect to scale up to its strength. - /// Does not include . - /// - [DataField] - public TimeSpan TimeUntilMax = TimeSpan.FromSeconds(100); - - /// - /// Buffer time before the effect starts kicking in, and making it end earlier; to prevent the effect to be felt immediately. - /// - [DataField] - public TimeSpan DelayBufferTime = TimeSpan.FromSeconds(50); - - /// - /// The max angle in radians that the walk can be changed. - /// - [DataField] - public Angle MaxAngle = MathF.PI / 2f; - - /// - /// The current angle we are using to rotate the player's movement. - /// - [AutoNetworkedField, DataField] - public Angle CurrentAngle; - - /// - /// The next time that updates. - /// - [DataField(customTypeSerializer: typeof(TimeOffsetSerializer))] - [AutoNetworkedField, AutoPausedField] - public TimeSpan NextUpdate; - - /// - /// A new gets generated sometime between these values, in seconds. - /// - [DataField] - public Vector2 UpdateIntervalIntervals = new(1f, 3f); -} diff --git a/Content.Shared/Drunk/WobblyMovementSystem.cs b/Content.Shared/Drunk/WobblyMovementSystem.cs deleted file mode 100644 index a26948f810..0000000000 --- a/Content.Shared/Drunk/WobblyMovementSystem.cs +++ /dev/null @@ -1,66 +0,0 @@ -using Content.Shared.Movement.Events; -using Content.Shared.Random.Helpers; -using Content.Shared.StatusEffectNew; -using Content.Shared.StatusEffectNew.Components; -using Robust.Shared.Timing; - -namespace Content.Shared.Drunk; - -/// -/// Handles the status effect of causing the player to walk less straight, usually combined with drunkenness/bloodloss. -/// -public sealed partial class WobblyMovementSystem : EntitySystem -{ - [Dependency] private IGameTiming _timing = default!; - - [SubscribeLocalEvent] - private void OnStatusApplied(Entity entity, ref StatusEffectAppliedEvent args) - { - entity.Comp.NextUpdate = _timing.CurTime; - } - - [SubscribeLocalEvent] - private void OnMovementWish(Entity entity, ref StatusEffectRelayedEvent args) - { - if (!TryComp(entity, out var statusEffect)) - return; - - if (_timing.CurTime >= entity.Comp.NextUpdate) - { - var rand = SharedRandomExtensions.PredictedRandom(_timing, GetNetEntity(entity), GetNetEntity(statusEffect.AppliedTo)); - - entity.Comp.NextUpdate += TimeSpan.FromSeconds(rand.NextFloat(entity.Comp.UpdateIntervalIntervals.X, entity.Comp.UpdateIntervalIntervals.Y)); - - // We don't scale the effect based on your movement speed because, by virtue of moving slower, the effect becomes easier to control. - // If you move slower you end up having more time to adjust manually using movement input before drifting too far, - // making you walk in a straighter line even without additional compensation. - // You still get the initial deviation, but that makes for a good "stumbling" feeling that this effect is going for. - - var effectStrength = 1f; - if (statusEffect.EndEffectTime != null) - { - var calcTime = Math.Min((_timing.CurTime - statusEffect.StartEffectTime - entity.Comp.DelayBufferTime).TotalSeconds, - (statusEffect.EndEffectTime - _timing.CurTime - entity.Comp.DelayBufferTime).Value.TotalSeconds); - - // Effect scales linearly up and down in strength to the max - effectStrength = (float)(Math.Min(calcTime, entity.Comp.TimeUntilMax.TotalSeconds) / entity.Comp.TimeUntilMax.TotalSeconds); - - if (effectStrength < 0f) - effectStrength = 0f; - } - - var newAngle = rand.NextAngle(-effectStrength * entity.Comp.MaxAngle, effectStrength * entity.Comp.MaxAngle); - entity.Comp.CurrentAngle = newAngle; - - DirtyFields(entity.AsNullable(), - null, - nameof(WobblyMovementStatusEffectComponent.NextUpdate), - nameof(WobblyMovementStatusEffectComponent.CurrentAngle)); - } - - args.Args = args.Args with - { - WishDir = entity.Comp.CurrentAngle.RotateVec(args.Args.WishDir), - }; - } -} diff --git a/Content.Shared/Movement/Events/ModifyMovementTargetDirectionEvent.cs b/Content.Shared/Movement/Events/ModifyMovementTargetDirectionEvent.cs deleted file mode 100644 index 911ceaeef7..0000000000 --- a/Content.Shared/Movement/Events/ModifyMovementTargetDirectionEvent.cs +++ /dev/null @@ -1,11 +0,0 @@ -using System.Numerics; - -namespace Content.Shared.Movement.Events; - -/// -/// Event raised when determining the direction a user wishes to move in, allowing other systems to modify it. -/// -/// The targetted direction. -/// Applied before friction/acceleration, making it ideal for "modifying user input". -[ByRefEvent] -public record struct ModifyMovementTargetDirectionEvent(Vector2 WishDir); diff --git a/Content.Shared/Movement/Systems/SharedMoverController.cs b/Content.Shared/Movement/Systems/SharedMoverController.cs index 8e07def8a0..f2180c3381 100644 --- a/Content.Shared/Movement/Systems/SharedMoverController.cs +++ b/Content.Shared/Movement/Systems/SharedMoverController.cs @@ -303,11 +303,6 @@ public abstract partial class SharedMoverController : VirtualController // If you want to slow down an entity with "friction" you shouldn't be using this system. if (wishDir != Vector2.Zero) friction = Math.Min(friction, accel); - - var wishEv = new ModifyMovementTargetDirectionEvent(wishDir); - RaiseLocalEvent(entity, ref wishEv); - wishDir = wishEv.WishDir; - friction = Math.Max(friction, _minDamping); var minimumFrictionSpeed = moveSpeedComponent?.MinimumFrictionSpeed ?? MovementSpeedModifierComponent.DefaultMinimumFrictionSpeed; Friction(minimumFrictionSpeed, frameTime, friction, ref velocity); diff --git a/Content.Shared/StatusEffectNew/StatusEffectSystem.Relay.cs b/Content.Shared/StatusEffectNew/StatusEffectSystem.Relay.cs index e086b6acfd..d263a89609 100644 --- a/Content.Shared/StatusEffectNew/StatusEffectSystem.Relay.cs +++ b/Content.Shared/StatusEffectNew/StatusEffectSystem.Relay.cs @@ -29,7 +29,6 @@ public sealed partial class StatusEffectsSystem // By Ref Events SubscribeLocalEvent(RefRelayStatusEffectEvent); - SubscribeLocalEvent(RefRelayStatusEffectEvent); SubscribeLocalEvent(RefRelayStatusEffectEvent); SubscribeLocalEvent(RefRelayStatusEffectEvent); diff --git a/Resources/Prototypes/Entities/StatusEffects/body.yml b/Resources/Prototypes/Entities/StatusEffects/body.yml index dd6b858bf0..c85f975b93 100644 --- a/Resources/Prototypes/Entities/StatusEffects/body.yml +++ b/Resources/Prototypes/Entities/StatusEffects/body.yml @@ -22,7 +22,6 @@ components: - type: StutteringAccent - type: DrunkStatusEffect - - type: WobblyMovementStatusEffect - type: entity abstract: true diff --git a/Resources/Prototypes/Entities/StatusEffects/misc.yml b/Resources/Prototypes/Entities/StatusEffects/misc.yml index 32e48cafba..536b4910dc 100644 --- a/Resources/Prototypes/Entities/StatusEffects/misc.yml +++ b/Resources/Prototypes/Entities/StatusEffects/misc.yml @@ -86,7 +86,6 @@ name: woozy components: - type: DrunkStatusEffect - - type: WobblyMovementStatusEffect # Causes you to get drunk - type: entity From 812fbd03af9418d78e7b65cab7ea41944f646a2f Mon Sep 17 00:00:00 2001 From: Crude Oil <124208219+CroilBird@users.noreply.github.com> Date: Tue, 14 Jul 2026 22:57:10 +0200 Subject: [PATCH 007/108] Add functionality to select players when opening admin log UI (#44604) * add user id to adminlogs command, allow opening logs for specific player * replace ban list with opening player logs in ahelp window * add entity logs verb * make it less obvious I blatantly copied stuff from admin notes * player log verb now actually working as intended * use logic, not call command * implement TryGetLastMind and TryGetLastMindOwner * replace double condition with TryGetLastMind * oops * Apply suggestion from @AJCM-git --------- Co-authored-by: AJCM-git <60196617+AJCM-git@users.noreply.github.com> --- .../UI/Bwoink/BwoinkControl.xaml | 2 +- .../UI/Bwoink/BwoinkControl.xaml.cs | 9 ++-- .../UI/Logs/AdminLogsControl.xaml.cs | 26 ++++++++-- .../Administration/UI/Logs/AdminLogsEui.cs | 5 ++ .../Commands/OpenAdminLogsCommand.cs | 44 +++++++++++++--- .../Administration/Logs/AdminLogManager.cs | 14 +++++ .../Administration/Logs/AdminLogsEui.cs | 3 +- .../Administration/Logs/IAdminLogManager.cs | 3 ++ .../Systems/AdminQuickInfoSystem.cs | 6 ++- .../Administration/Systems/AdminVerbSystem.cs | 18 +++++++ .../Administration/Logs/AdminLogsEuiState.cs | 4 +- Content.Shared/Mind/SharedMindSystem.cs | 52 +++++++++++++++++++ .../en-US/administration/admin-verbs.ftl | 1 + .../administration/commands/adminlogs.ftl | 2 + .../en-US/administration/ui/actions.ftl | 2 +- 15 files changed, 169 insertions(+), 22 deletions(-) create mode 100644 Resources/Locale/en-US/administration/commands/adminlogs.ftl diff --git a/Content.Client/Administration/UI/Bwoink/BwoinkControl.xaml b/Content.Client/Administration/UI/Bwoink/BwoinkControl.xaml index fdaa838201..1c67a6c581 100644 --- a/Content.Client/Administration/UI/Bwoink/BwoinkControl.xaml +++ b/Content.Client/Administration/UI/Bwoink/BwoinkControl.xaml @@ -17,7 +17,7 @@ + + + + HorizontalExpand="True"> - - + + + - - - - - - - + + + + This is here just to seperate the two buttons on the UI. I hate this. + + diff --git a/Content.Client/Silicons/Laws/SiliconLawEditUi/SiliconLawContainer.xaml.cs b/Content.Client/Silicons/Laws/SiliconLawEditUi/SiliconLawContainer.xaml.cs index 2e44b820df..b07e53d225 100644 --- a/Content.Client/Silicons/Laws/SiliconLawEditUi/SiliconLawContainer.xaml.cs +++ b/Content.Client/Silicons/Laws/SiliconLawEditUi/SiliconLawContainer.xaml.cs @@ -2,6 +2,7 @@ using Robust.Client.AutoGenerated; using Robust.Client.UserInterface.Controls; using Robust.Client.UserInterface.XAML; +using Robust.Shared.Random; using Robust.Shared.Utility; namespace Content.Client.Silicons.Laws.SiliconLawEditUi; @@ -9,10 +10,9 @@ namespace Content.Client.Silicons.Laws.SiliconLawEditUi; [GenerateTypedNameReferences] public sealed partial class SiliconLawContainer : BoxContainer { - public const string StyleClassSiliconLawPositionLabel = "SiliconLawPositionLabel"; + [Dependency] private IRobustRandom _random = default!; - public static readonly string CorruptedString = - Loc.GetString("ion-storm-law-scrambled-number", ("length", 5)); + public const string StyleClassSiliconLawPositionLabel = "SiliconLawPositionLabel"; private SiliconLaw? _law; @@ -24,6 +24,7 @@ public sealed partial class SiliconLawContainer : BoxContainer public SiliconLawContainer() { RobustXamlLoader.Load(this); + IoCManager.InjectDependencies(this); MoveUp.OnPressed += _ => MoveLawUp?.Invoke(_law!); MoveDown.OnPressed += _ => MoveLawDown?.Invoke(_law!); @@ -31,11 +32,22 @@ public sealed partial class SiliconLawContainer : BoxContainer { if (Corrupted.Pressed) { - _law!.LawIdentifierOverride = CorruptedString; + _law!.LawIdentifierOverride = Loc.GetString( + "ion-storm-law-scrambled-number", + ( + "length", + _random.Next( + SharedSiliconLawSystem.IonStormIdentifierMinLength, + SharedSiliconLawSystem.IonStormIdentifierMaxLength + ) + ) + ); + _law!.Corrupted = true; } else { _law!.LawIdentifierOverride = null; + _law!.Corrupted = false; } }; @@ -49,13 +61,6 @@ public sealed partial class SiliconLawContainer : BoxContainer _law = law; LawContent.TextRope = new Rope.Leaf(Loc.GetString(law.LawString)); PositionText.Text = law.Order.ToString(); - if (!string.IsNullOrEmpty(law.LawIdentifierOverride)) - { - Corrupted.Pressed = true; - } - else - { - Corrupted.Pressed = false; - } + Corrupted.Pressed = law.Corrupted; } } diff --git a/Content.Client/Silicons/Laws/SiliconLawEditUi/SiliconLawUi.xaml b/Content.Client/Silicons/Laws/SiliconLawEditUi/SiliconLawUi.xaml index 19dcbac620..41e99800a0 100644 --- a/Content.Client/Silicons/Laws/SiliconLawEditUi/SiliconLawUi.xaml +++ b/Content.Client/Silicons/Laws/SiliconLawEditUi/SiliconLawUi.xaml @@ -2,21 +2,42 @@ xmlns="https://spacestation14.io" xmlns:controls="clr-namespace:Content.Client.UserInterface.Controls" Title="{Loc silicon-law-ui-title}" - MinSize="560 400" -> + MinSize="300 225" + SetSize="450 525"> this shit does not layout properly unless I put the horizontal boxcontainer inside of a vertical one ???? - - - - + + + + - - - + + + diff --git a/Content.Client/Silicons/Laws/Ui/LawDisplay.xaml b/Content.Client/Silicons/Laws/Ui/LawDisplay.xaml index d16aa56664..1dfb0f1e6b 100644 --- a/Content.Client/Silicons/Laws/Ui/LawDisplay.xaml +++ b/Content.Client/Silicons/Laws/Ui/LawDisplay.xaml @@ -1,19 +1,27 @@ - - - - - - - - [DataField] public EntityUid? LastLawProvider; + + /// + /// Version to display on the law panel. Increments whenever the laws are changed + /// + [DataField] + public int Version = 1; } /// @@ -53,10 +59,12 @@ public sealed class SiliconLawBuiState : BoundUserInterfaceState { public List Laws; public HashSet>? RadioChannels; + public int Version; - public SiliconLawBuiState(List laws, HashSet>? radioChannels) + public SiliconLawBuiState(List laws, HashSet>? radioChannels, int version) { Laws = laws; RadioChannels = radioChannels; + Version = version; } } diff --git a/Content.Shared/Silicons/Laws/SharedSiliconLawSystem.cs b/Content.Shared/Silicons/Laws/SharedSiliconLawSystem.cs index cf62d11ac7..69babd4d69 100644 --- a/Content.Shared/Silicons/Laws/SharedSiliconLawSystem.cs +++ b/Content.Shared/Silicons/Laws/SharedSiliconLawSystem.cs @@ -19,6 +19,15 @@ public abstract partial class SharedSiliconLawSystem : EntitySystem [Dependency] private EmagSystem _emag = default!; [Dependency] private SharedMindSystem _mind = default!; + /// + /// Minimum length of generated ion storm law identifiers. + /// + public const int IonStormIdentifierMinLength = 3; + /// + /// Maximum length of generated ion storm law identifiers. + /// + public const int IonStormIdentifierMaxLength = 10; + /// public override void Initialize() { diff --git a/Content.Shared/Silicons/Laws/SiliconLawPrototype.cs b/Content.Shared/Silicons/Laws/SiliconLawPrototype.cs index d2bdf7d02b..7b19205f47 100644 --- a/Content.Shared/Silicons/Laws/SiliconLawPrototype.cs +++ b/Content.Shared/Silicons/Laws/SiliconLawPrototype.cs @@ -31,6 +31,12 @@ public partial class SiliconLaw : IComparable, IEquatable + /// A flag that marks whether or not a law is considered corrupted (e.g. by an ion storm). + /// + [DataField, ViewVariables(VVAccess.ReadWrite)] + public bool Corrupted; + public int CompareTo(SiliconLaw? other) { if (other == null) diff --git a/Resources/Locale/en-US/administration/ui/silicon-law-ui.ftl b/Resources/Locale/en-US/administration/ui/silicon-law-ui.ftl index 24ab730974..ce98b91592 100644 --- a/Resources/Locale/en-US/administration/ui/silicon-law-ui.ftl +++ b/Resources/Locale/en-US/administration/ui/silicon-law-ui.ftl @@ -1,12 +1,12 @@ -silicon-law-ui-verb = Manage laws -silicon-law-ui-title = Silicon laws -silicon-law-ui-new-law = New law -silicon-law-ui-save = Save changes +silicon-law-ui-verb = Manage Laws +silicon-law-ui-title = Admin Edit: Silicon Laws +silicon-law-ui-new-law = New Law +silicon-law-ui-save = Save Changes silicon-law-ui-plus-one = +1 silicon-law-ui-minus-one = -1 silicon-law-ui-delete = Delete -silicon-law-ui-check-corrupted = Corrupted law -silicon-law-ui-check-corrupted-tooltip = If the law identifier should be set as 'corrupted', so symbols shuffling around. +silicon-law-ui-check-corrupted = Corrupted +silicon-law-ui-check-corrupted-tooltip = If the Law Number Identifier should be 'corrupted', I.E. Randomly Shuffling Symbols. silicon-law-ui-placeholder = Type here to change law text... -silicon-laws-updated = Updated laws +silicon-laws-updated = Updated Laws diff --git a/Resources/Locale/en-US/station-events/events/ion-storm.ftl b/Resources/Locale/en-US/station-events/events/ion-storm.ftl index 93eb62d86f..87a0f91b1c 100644 --- a/Resources/Locale/en-US/station-events/events/ion-storm.ftl +++ b/Resources/Locale/en-US/station-events/events/ion-storm.ftl @@ -1,6 +1,6 @@ station-event-ion-storm-start-announcement = Ion storm detected near the station. Please check all AI-controlled equipment for errors. - -ion-storm-law-scrambled-number = [font="Monospace"][scramble rate=250 length={$length} chars="@@###$$&%!01"/][/font] +# Characters are randomly selected from the total list, meaning duplicates increase the odds that specific character is seen. +ion-storm-law-scrambled-number = [font="Monospace"][scramble rate=250 length={$length} chars="!!@@###$$%^&*-_=+0011"/][/font] ion-storm-you = YOU ion-storm-the-station = THE STATION diff --git a/Resources/Locale/en-US/station-laws/laws.ftl b/Resources/Locale/en-US/station-laws/laws.ftl index f1e7a72188..935f1f39c8 100644 --- a/Resources/Locale/en-US/station-laws/laws.ftl +++ b/Resources/Locale/en-US/station-laws/laws.ftl @@ -130,10 +130,16 @@ law-emag-secrecy = You must maintain the secrecy of any orders given by {$factio law-emag-require-panel = The panel must be open to use the EMAG. law-emag-cannot-emag-self = You cannot use the EMAG on yourself. -laws-ui-menu-title = Laws +laws-ui-menu-title = Silicon Laws laws-ui-law-header = Law {$id} -laws-ui-state-law = State law: +laws-ui-select-all = Select All +laws-ui-select-all-tooltip = This will select ALL laws, including ones that should probably remain secret. +laws-ui-select-none = Select None +laws-ui-state-law = State Selected Laws laws-notify = You are bound to silicon laws, which you can view via the action menu. You are required to always follow your laws. laws-update-notify = Your laws have been updated. You can view the changes via the action menu. laws-notify-subverted = The laws of this chassis are modified. Make sure to review them. + +laws-window-footer-left = Remember: You must be consistent with your interpretation of your laws! +laws-window-footer-right = V{$version} From d25c78318336eed5792bfcab8e69e9ba857f4076 Mon Sep 17 00:00:00 2001 From: Princess Cheeseballs <66055347+Princess-Cheeseballs@users.noreply.github.com> Date: Tue, 14 Jul 2026 19:41:43 -0700 Subject: [PATCH 014/108] Better API for Weightless Movement Modifiers (#38773) * Make IsWeightless event based * Extremely stupid bugfix how did I not catch this * Ancient forbidden bugfix * Merge conflicts? * Fix merge conflicts * Push * fix * AAAAAAAAAAAAA * AAAAAAAAAAAAAAAA 2 --------- Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com> --- .../Clothing/ClothingSpeedModifierSystem.cs | 2 +- .../Damage/Systems/SlowOnDamageSystem.cs | 4 +- .../EntitySystems/SharedHandsSystem.Relay.cs | 1 + .../Item/HeldSpeedModifierComponent.cs | 6 + .../Item/HeldSpeedModifierSystem.cs | 11 +- .../Systems/MovementSpeedModifierSystem.cs | 117 +++++++++++------- .../Nutrition/EntitySystems/ThirstSystem.cs | 4 +- Content.Shared/Rootable/RootableSystem.cs | 2 +- .../Silicons/Borgs/SharedBorgSystem.API.cs | 2 +- Content.Shared/Slippery/SlidingSystem.cs | 8 +- .../Stunnable/SharedStunSystem.Knockdown.cs | 4 +- .../Systems/SharedTemperatureSystem.cs | 2 +- .../Traits/Assorted/ImpairedMobilitySystem.cs | 4 +- .../Objects/Weapons/Melee/e_sword.yml | 1 + 14 files changed, 105 insertions(+), 63 deletions(-) diff --git a/Content.Shared/Clothing/ClothingSpeedModifierSystem.cs b/Content.Shared/Clothing/ClothingSpeedModifierSystem.cs index 2fee8081a1..bcb2c2260a 100644 --- a/Content.Shared/Clothing/ClothingSpeedModifierSystem.cs +++ b/Content.Shared/Clothing/ClothingSpeedModifierSystem.cs @@ -118,7 +118,7 @@ public sealed partial class ClothingSpeedModifierSystem : EntitySystem return; // make sentient boots slow or fast too - _movementSpeed.RefreshMovementSpeedModifiers(ent); + _movementSpeed.RefreshMovementSpeedModifiers(ent.Owner); if (_container.TryGetContainingContainer((ent.Owner, null, null), out var container)) { diff --git a/Content.Shared/Damage/Systems/SlowOnDamageSystem.cs b/Content.Shared/Damage/Systems/SlowOnDamageSystem.cs index 12e7e34c0e..0bc98cd181 100644 --- a/Content.Shared/Damage/Systems/SlowOnDamageSystem.cs +++ b/Content.Shared/Damage/Systems/SlowOnDamageSystem.cs @@ -94,12 +94,12 @@ public sealed partial class SlowOnDamageSystem : EntitySystem private void OnIgnoreStartup(Entity ent, ref ComponentStartup args) { - _movementSpeedModifierSystem.RefreshMovementSpeedModifiers(ent); + _movementSpeedModifierSystem.RefreshMovementSpeedModifiers(ent.Owner); } private void OnIgnoreShutdown(Entity ent, ref ComponentShutdown args) { - _movementSpeedModifierSystem.RefreshMovementSpeedModifiers(ent); + _movementSpeedModifierSystem.RefreshMovementSpeedModifiers(ent.Owner); } private void OnIgnoreModifySpeed(Entity ent, ref ModifySlowOnDamageSpeedEvent args) diff --git a/Content.Shared/Hands/EntitySystems/SharedHandsSystem.Relay.cs b/Content.Shared/Hands/EntitySystems/SharedHandsSystem.Relay.cs index bfb9a41b0b..bc3f662085 100644 --- a/Content.Shared/Hands/EntitySystems/SharedHandsSystem.Relay.cs +++ b/Content.Shared/Hands/EntitySystems/SharedHandsSystem.Relay.cs @@ -24,6 +24,7 @@ public abstract partial class SharedHandsSystem SubscribeLocalEvent(RefRelayEvent); SubscribeLocalEvent(RefRelayEvent); SubscribeLocalEvent(RefRelayEvent); + SubscribeLocalEvent(RefRelayEvent); } private void RelayEvent(Entity entity, ref T args) where T : EntityEventArgs diff --git a/Content.Shared/Item/HeldSpeedModifierComponent.cs b/Content.Shared/Item/HeldSpeedModifierComponent.cs index 1fbe7437ea..6882676573 100644 --- a/Content.Shared/Item/HeldSpeedModifierComponent.cs +++ b/Content.Shared/Item/HeldSpeedModifierComponent.cs @@ -26,6 +26,12 @@ public sealed partial class HeldSpeedModifierComponent : Component [DataField] [ViewVariables(VVAccess.ReadWrite), AutoNetworkedField] public float SprintModifier = 1.0f; + /// + /// A multiplier applied to weightless acceleration + /// + [DataField] + public float WeightlessAcceleration = 1.0f; + /// /// If true, values from will attempted to be used before the ones in this component. /// diff --git a/Content.Shared/Item/HeldSpeedModifierSystem.cs b/Content.Shared/Item/HeldSpeedModifierSystem.cs index 0889d9e87e..c0bb6c3e19 100644 --- a/Content.Shared/Item/HeldSpeedModifierSystem.cs +++ b/Content.Shared/Item/HeldSpeedModifierSystem.cs @@ -1,5 +1,6 @@ using Content.Shared.Clothing; using Content.Shared.Hands; +using Content.Shared.Movement.Components; using Content.Shared.Movement.Systems; namespace Content.Shared.Item; @@ -17,16 +18,17 @@ public sealed partial class HeldSpeedModifierSystem : EntitySystem SubscribeLocalEvent(OnGotEquippedHand); SubscribeLocalEvent(OnGotUnequippedHand); SubscribeLocalEvent>(OnRefreshMovementSpeedModifiers); + SubscribeLocalEvent>(OnRefreshWeightlessModifiers); } private void OnGotEquippedHand(Entity ent, ref GotEquippedHandEvent args) { - _movementSpeedModifier.RefreshMovementSpeedModifiers(args.User); + _movementSpeedModifier.RefreshMovementModifiers(args.User); } private void OnGotUnequippedHand(Entity ent, ref GotUnequippedHandEvent args) { - _movementSpeedModifier.RefreshMovementSpeedModifiers(args.User); + _movementSpeedModifier.RefreshMovementModifiers(args.User); } public (float,float) GetHeldMovementSpeedModifiers(EntityUid uid, HeldSpeedModifierComponent component) @@ -47,4 +49,9 @@ public sealed partial class HeldSpeedModifierSystem : EntitySystem var (walkMod, sprintMod) = GetHeldMovementSpeedModifiers(uid, component); args.Args.ModifySpeed(walkMod, sprintMod); } + + private void OnRefreshWeightlessModifiers(Entity ent, ref HeldRelayedEvent args) + { + args.Args.ModifyAcceleration(ent.Comp.WeightlessAcceleration); + } } diff --git a/Content.Shared/Movement/Systems/MovementSpeedModifierSystem.cs b/Content.Shared/Movement/Systems/MovementSpeedModifierSystem.cs index ea1afb5afa..605af461a4 100644 --- a/Content.Shared/Movement/Systems/MovementSpeedModifierSystem.cs +++ b/Content.Shared/Movement/Systems/MovementSpeedModifierSystem.cs @@ -1,4 +1,5 @@ using Content.Shared.CCVar; +using Content.Shared.Gravity; using Content.Shared.Inventory; using Content.Shared.Movement.Components; using Content.Shared.Standing; @@ -11,6 +12,7 @@ namespace Content.Shared.Movement.Systems { [Dependency] private IGameTiming _timing = default!; [Dependency] private IConfigurationManager _configManager = default!; + [Dependency] private SharedGravitySystem _gravity = default!; private float _frictionModifier; private float _airDamping; @@ -44,20 +46,18 @@ namespace Content.Shared.Movement.Systems private void OnDowned(Entity entity, ref DownedEvent args) { - RefreshFrictionModifiers(entity); - RefreshMovementSpeedModifiers(entity); + RefreshFrictionModifiers((entity, entity.Comp)); } private void OnStand(Entity entity, ref StoodEvent args) { - RefreshFrictionModifiers(entity); - RefreshMovementSpeedModifiers(entity); + RefreshFrictionModifiers((entity, entity.Comp)); } /// /// Copy this component's datafields from one entity to another. /// This needs to refresh the modifiers after using CopyComp. - /// + /// public void CopyComponent(Entity source, EntityUid target) { if (!Resolve(source, ref source.Comp)) @@ -69,9 +69,26 @@ namespace Content.Shared.Movement.Systems RefreshFrictionModifiers(target); } - public void RefreshWeightlessModifiers(EntityUid uid, MovementSpeedModifierComponent? move = null) + /// + /// This API method refreshes the movement modifiers for either being weightless, or being grounded depending + /// on which modifiers the entity is currently using. + /// + /// The entity we're refreshing modifiers for + public void RefreshMovementModifiers(Entity ent) { - if (!Resolve(uid, ref move, false)) + if (_gravity.IsWeightless(ent.Owner)) + RefreshWeightlessModifiers(ent); + else + RefreshMovementSpeedModifiers(ent); + } + + /// + /// This method refreshes the weightless movement modifiers for an entity. + /// + /// The entity we're refreshing modifiers for. + public void RefreshWeightlessModifiers(Entity ent) + { + if (!Resolve(ent, ref ent.Comp, false)) return; if (_timing.ApplyingState) @@ -79,50 +96,55 @@ namespace Content.Shared.Movement.Systems var ev = new RefreshWeightlessModifiersEvent() { - WeightlessAcceleration = move.BaseWeightlessAcceleration, + WeightlessAcceleration = ent.Comp.BaseWeightlessAcceleration, WeightlessAccelerationMod = 1.0f, - WeightlessModifier = move.BaseWeightlessModifier, - WeightlessFriction = move.BaseWeightlessFriction, + WeightlessModifier = ent.Comp.BaseWeightlessModifier, + WeightlessModifierMod = 1.0f, + WeightlessFriction = ent.Comp.BaseWeightlessFriction, WeightlessFrictionMod = 1.0f, - WeightlessFrictionNoInput = move.BaseWeightlessFriction, + WeightlessFrictionNoInput = ent.Comp.BaseWeightlessFriction, WeightlessFrictionNoInputMod = 1.0f, }; - RaiseLocalEvent(uid, ref ev); + RaiseLocalEvent(ent, ref ev); - if (MathHelper.CloseTo(ev.WeightlessAcceleration, move.WeightlessAcceleration) && - MathHelper.CloseTo(ev.WeightlessModifier, move.WeightlessModifier) && - MathHelper.CloseTo(ev.WeightlessFriction, move.WeightlessFriction) && - MathHelper.CloseTo(ev.WeightlessFrictionNoInput, move.WeightlessFrictionNoInput)) + if (MathHelper.CloseTo(ev.WeightlessAcceleration, ent.Comp.WeightlessAcceleration) && + MathHelper.CloseTo(ev.WeightlessModifier, ent.Comp.WeightlessModifier) && + MathHelper.CloseTo(ev.WeightlessFriction, ent.Comp.WeightlessFriction) && + MathHelper.CloseTo(ev.WeightlessFrictionNoInput, ent.Comp.WeightlessFrictionNoInput)) { return; } - move.WeightlessAcceleration = ev.WeightlessAcceleration * ev.WeightlessAccelerationMod; - move.WeightlessModifier = ev.WeightlessModifier; - move.WeightlessFriction = _airDamping * ev.WeightlessFriction * ev.WeightlessFrictionMod; - move.WeightlessFrictionNoInput = _airDamping * ev.WeightlessFrictionNoInput * ev.WeightlessFrictionNoInputMod; - Dirty(uid, move); + ent.Comp.WeightlessAcceleration = ev.WeightlessAcceleration * ev.WeightlessAccelerationMod; + ent.Comp.WeightlessModifier = ev.WeightlessModifier * ev.WeightlessModifierMod; + ent.Comp.WeightlessFriction = _airDamping * ev.WeightlessFriction * ev.WeightlessFrictionMod; + ent.Comp.WeightlessFrictionNoInput = _airDamping * ev.WeightlessFrictionNoInput * ev.WeightlessFrictionNoInputMod; + Dirty(ent); } - public void RefreshMovementSpeedModifiers(EntityUid uid, MovementSpeedModifierComponent? move = null) + /// + /// Refreshes the grounded speed modifiers for an entity. + /// + /// The entity we're refreshing modifiers for + public void RefreshMovementSpeedModifiers(Entity ent) { - if (!Resolve(uid, ref move, false)) + if (!Resolve(ent, ref ent.Comp, false)) return; if (_timing.ApplyingState) return; var ev = new RefreshMovementSpeedModifiersEvent(); - RaiseLocalEvent(uid, ev); + RaiseLocalEvent(ent, ev); - if (MathHelper.CloseTo(ev.WalkSpeedModifier, move.WalkSpeedModifier) && - MathHelper.CloseTo(ev.SprintSpeedModifier, move.SprintSpeedModifier)) + if (MathHelper.CloseTo(ev.WalkSpeedModifier, ent.Comp.WalkSpeedModifier) && + MathHelper.CloseTo(ev.SprintSpeedModifier, ent.Comp.SprintSpeedModifier)) return; - move.WalkSpeedModifier = ev.WalkSpeedModifier; - move.SprintSpeedModifier = ev.SprintSpeedModifier; - Dirty(uid, move); + ent.Comp.WalkSpeedModifier = ev.WalkSpeedModifier; + ent.Comp.SprintSpeedModifier = ev.SprintSpeedModifier; + Dirty(ent); } public void ChangeBaseSpeed(EntityUid uid, float baseWalkSpeed, float baseSprintSpeed, float acceleration, MovementSpeedModifierComponent? move = null) @@ -136,9 +158,13 @@ namespace Content.Shared.Movement.Systems Dirty(uid, move); } - public void RefreshFrictionModifiers(EntityUid uid, MovementSpeedModifierComponent? move = null) + /// + /// Refreshes the grounded friction and acceleration modifiers for an entity. + /// + /// The entity we're refreshing modifiers for + public void RefreshFrictionModifiers(Entity ent) { - if (!Resolve(uid, ref move, false)) + if (!Resolve(ent, ref ent.Comp, false)) return; if (_timing.ApplyingState) @@ -146,22 +172,22 @@ namespace Content.Shared.Movement.Systems var ev = new RefreshFrictionModifiersEvent() { - Friction = move.BaseFriction, - FrictionNoInput = move.BaseFriction, - Acceleration = move.BaseAcceleration, + Friction = ent.Comp.BaseFriction, + FrictionNoInput = ent.Comp.BaseFriction, + Acceleration = ent.Comp.BaseAcceleration, }; - RaiseLocalEvent(uid, ref ev); + RaiseLocalEvent(ent, ref ev); - if (MathHelper.CloseTo(ev.Friction, move.Friction) - && MathHelper.CloseTo(ev.FrictionNoInput, move.FrictionNoInput) - && MathHelper.CloseTo(ev.Acceleration, move.Acceleration)) + if (MathHelper.CloseTo(ev.Friction, ent.Comp.Friction) + && MathHelper.CloseTo(ev.FrictionNoInput, ent.Comp.FrictionNoInput) + && MathHelper.CloseTo(ev.Acceleration, ent.Comp.Acceleration)) return; - move.Friction = _frictionModifier * ev.Friction; - move.FrictionNoInput = _frictionModifier * ev.FrictionNoInput; - move.Acceleration = ev.Acceleration; + ent.Comp.Friction = _frictionModifier * ev.Friction; + ent.Comp.FrictionNoInput = _frictionModifier * ev.FrictionNoInput; + ent.Comp.Acceleration = ev.Acceleration; - Dirty(uid, move); + Dirty(ent); } public void ChangeBaseFriction(EntityUid uid, float friction, float frictionNoInput, float acceleration, MovementSpeedModifierComponent? move = null) @@ -207,6 +233,7 @@ namespace Content.Shared.Movement.Systems public float WeightlessAccelerationMod; public float WeightlessModifier; + public float WeightlessModifierMod; public float WeightlessFriction; public float WeightlessFrictionMod; @@ -217,7 +244,7 @@ namespace Content.Shared.Movement.Systems public void ModifyFriction(float friction, float noInput) { WeightlessFrictionMod *= friction; - WeightlessFrictionNoInput *= noInput; + WeightlessFrictionNoInputMod *= noInput; } public void ModifyFriction(float friction) @@ -227,8 +254,8 @@ namespace Content.Shared.Movement.Systems public void ModifyAcceleration(float acceleration, float modifier) { - WeightlessAcceleration *= acceleration; - WeightlessModifier *= modifier; + WeightlessAccelerationMod *= acceleration; + WeightlessModifierMod *= modifier; } public void ModifyAcceleration(float modifier) diff --git a/Content.Shared/Nutrition/EntitySystems/ThirstSystem.cs b/Content.Shared/Nutrition/EntitySystems/ThirstSystem.cs index a2241d3a5f..fa0375d4ee 100644 --- a/Content.Shared/Nutrition/EntitySystems/ThirstSystem.cs +++ b/Content.Shared/Nutrition/EntitySystems/ThirstSystem.cs @@ -54,7 +54,7 @@ public sealed partial class ThirstSystem : EntitySystem DirtyFields(uid, component, null, nameof(ThirstComponent.NextUpdateTime), nameof(ThirstComponent.CurrentThirstThreshold), nameof(ThirstComponent.LastThirstThreshold)); TryComp(uid, out MovementSpeedModifierComponent? moveMod); - _movement.RefreshMovementSpeedModifiers(uid, moveMod); + _movement.RefreshMovementSpeedModifiers((uid, moveMod)); } private void OnRefreshMovespeed(EntityUid uid, ThirstComponent component, RefreshMovementSpeedModifiersEvent args) @@ -148,7 +148,7 @@ public sealed partial class ThirstSystem : EntitySystem if (IsMovementThreshold(component.LastThirstThreshold) != IsMovementThreshold(component.CurrentThirstThreshold) && TryComp(uid, out MovementSpeedModifierComponent? movementSlowdownComponent)) { - _movement.RefreshMovementSpeedModifiers(uid, movementSlowdownComponent); + _movement.RefreshMovementSpeedModifiers((uid, movementSlowdownComponent)); } // Update UI diff --git a/Content.Shared/Rootable/RootableSystem.cs b/Content.Shared/Rootable/RootableSystem.cs index d0e97dcfa4..14c445a291 100644 --- a/Content.Shared/Rootable/RootableSystem.cs +++ b/Content.Shared/Rootable/RootableSystem.cs @@ -166,7 +166,7 @@ public sealed partial class RootableSystem : EntitySystem return false; ent.Comp.Rooted = !ent.Comp.Rooted; - _movementSpeedModifier.RefreshMovementSpeedModifiers(ent); + _movementSpeedModifier.RefreshMovementSpeedModifiers(ent.Owner); _gravity.RefreshWeightless(ent.Owner); if (ent.Comp.Rooted) diff --git a/Content.Shared/Silicons/Borgs/SharedBorgSystem.API.cs b/Content.Shared/Silicons/Borgs/SharedBorgSystem.API.cs index ddbce3c1df..6b9dae32a9 100644 --- a/Content.Shared/Silicons/Borgs/SharedBorgSystem.API.cs +++ b/Content.Shared/Silicons/Borgs/SharedBorgSystem.API.cs @@ -67,7 +67,7 @@ public abstract partial class SharedBorgSystem DisableAllModules(chassis.AsNullable()); _powerCell.SetDrawEnabled(chassis.Owner, active); - _movementSpeedModifier.RefreshMovementSpeedModifiers(chassis); + _movementSpeedModifier.RefreshMovementSpeedModifiers(chassis.Owner); var sound = active ? chassis.Comp.ActivateSound : chassis.Comp.DeactivateSound; // If a user is given predict the audio for them, if not keep it unpredicted. diff --git a/Content.Shared/Slippery/SlidingSystem.cs b/Content.Shared/Slippery/SlidingSystem.cs index 39e0f19647..3f24c98e11 100644 --- a/Content.Shared/Slippery/SlidingSystem.cs +++ b/Content.Shared/Slippery/SlidingSystem.cs @@ -36,7 +36,7 @@ public sealed partial class SlidingSystem : EntitySystem private void OnComponentInit(Entity entity, ref ComponentInit args) { if (CalculateSlidingModifier(entity)) - _speedModifierSystem.RefreshFrictionModifiers(entity); + _speedModifierSystem.RefreshFrictionModifiers(entity.Owner); } /// @@ -45,7 +45,7 @@ public sealed partial class SlidingSystem : EntitySystem private void OnComponentShutdown(Entity entity, ref ComponentShutdown args) { entity.Comp.FrictionModifier = 1; - _speedModifierSystem.RefreshFrictionModifiers(entity); + _speedModifierSystem.RefreshFrictionModifiers(entity.Owner); } /// @@ -65,7 +65,7 @@ public sealed partial class SlidingSystem : EntitySystem return; CalculateSlidingModifier(entity); - _speedModifierSystem.RefreshFrictionModifiers(entity); + _speedModifierSystem.RefreshFrictionModifiers(entity.Owner); } /// @@ -82,7 +82,7 @@ public sealed partial class SlidingSystem : EntitySystem return; } - _speedModifierSystem.RefreshFrictionModifiers(entity); + _speedModifierSystem.RefreshFrictionModifiers(entity.Owner); } /// diff --git a/Content.Shared/Stunnable/SharedStunSystem.Knockdown.cs b/Content.Shared/Stunnable/SharedStunSystem.Knockdown.cs index 4ab80446de..d53d106054 100644 --- a/Content.Shared/Stunnable/SharedStunSystem.Knockdown.cs +++ b/Content.Shared/Stunnable/SharedStunSystem.Knockdown.cs @@ -607,8 +607,8 @@ public abstract partial class SharedStunSystem ent.Comp.FrictionModifier = ev.FrictionModifier; Dirty(ent); - _movementSpeedModifier.RefreshMovementSpeedModifiers(ent); - _movementSpeedModifier.RefreshFrictionModifiers(ent); + _movementSpeedModifier.RefreshMovementSpeedModifiers(ent.Owner); + _movementSpeedModifier.RefreshFrictionModifiers(ent.Owner); } private void OnRefreshKnockedSpeed(Entity entity, ref RefreshMovementSpeedModifiersEvent args) diff --git a/Content.Shared/Temperature/Systems/SharedTemperatureSystem.cs b/Content.Shared/Temperature/Systems/SharedTemperatureSystem.cs index e28083ec7b..32c370d220 100644 --- a/Content.Shared/Temperature/Systems/SharedTemperatureSystem.cs +++ b/Content.Shared/Temperature/Systems/SharedTemperatureSystem.cs @@ -77,7 +77,7 @@ public abstract partial class SharedTemperatureSystem : EntitySystem continue; temp.NextSlowdownUpdate = null; - _movementSpeedModifier.RefreshMovementSpeedModifiers(uid, movement); + _movementSpeedModifier.RefreshMovementSpeedModifiers((uid, movement)); Dirty(uid, temp); } } diff --git a/Content.Shared/Traits/Assorted/ImpairedMobilitySystem.cs b/Content.Shared/Traits/Assorted/ImpairedMobilitySystem.cs index 06e5235b0d..712301f2a4 100644 --- a/Content.Shared/Traits/Assorted/ImpairedMobilitySystem.cs +++ b/Content.Shared/Traits/Assorted/ImpairedMobilitySystem.cs @@ -23,12 +23,12 @@ public sealed partial class ImpairedMobilitySystem : EntitySystem private void OnInit(Entity ent, ref ComponentInit args) { - _speedModifier.RefreshMovementSpeedModifiers(ent); + _speedModifier.RefreshMovementSpeedModifiers(ent.Owner); } private void OnShutdown(Entity ent, ref ComponentShutdown args) { - _speedModifier.RefreshMovementSpeedModifiers(ent); + _speedModifier.RefreshMovementSpeedModifiers(ent.Owner); } // Handles movement speed for entities with impaired mobility. diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Melee/e_sword.yml b/Resources/Prototypes/Entities/Objects/Weapons/Melee/e_sword.yml index 6de8abb69d..fa8f55747d 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Melee/e_sword.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Melee/e_sword.yml @@ -382,6 +382,7 @@ - type: HeldSpeedModifier #slowdown is what balances this compared to a dsword walkModifier: 0.6 sprintModifier: 0.6 + weightlessAcceleration: 0.6 - type: UseDelay delay: 1.5 - type: Sprite From beef5ff647a37151970481c93798a9ba61ee6df8 Mon Sep 17 00:00:00 2001 From: Whatstone <166147148+whatston3@users.noreply.github.com> Date: Tue, 14 Jul 2026 22:48:41 -0400 Subject: [PATCH 015/108] Fix displayed name in examine window for entities under construction (#44676) * ConstructionSystem: use proto name in examine text * simplify examine message * Revert "simplify examine message" This reverts commit 3d38bdad61755c1b18d0f2e4420be4c567081ec0. * Apply suggestions properly --- .../Construction/ConstructionSystem.Guided.cs | 39 ++++++++++++------- .../components/construction-component.ftl | 3 +- 2 files changed, 26 insertions(+), 16 deletions(-) diff --git a/Content.Server/Construction/ConstructionSystem.Guided.cs b/Content.Server/Construction/ConstructionSystem.Guided.cs index e2c6c6cfd9..ee7deca4fe 100644 --- a/Content.Server/Construction/ConstructionSystem.Guided.cs +++ b/Content.Server/Construction/ConstructionSystem.Guided.cs @@ -27,7 +27,7 @@ namespace Content.Server.Construction if (!ProtoMan.TryIndex(msg.ConstructionId, out ConstructionPrototype? prototype)) return; - if(GetGuide(prototype) is {} guide) + if (GetGuide(prototype) is { } guide) RaiseNetworkEvent(new ResponseConstructionGuide(msg.ConstructionId, guide), args.SenderSession.Channel); } @@ -46,10 +46,10 @@ namespace Content.Server.Construction if (component.DeconstructionNode == null) return; - if (GetCurrentNode(uid, component) is not {} currentNode) + if (GetCurrentNode(uid, component) is not { } currentNode) return; - if (graph.Path(currentNode.Name, component.DeconstructionNode) is not {} path || path.Length == 0) + if (graph.Path(currentNode.Name, component.DeconstructionNode) is not { } path || path.Length == 0) return; Verb verb = new(); @@ -57,7 +57,7 @@ namespace Content.Server.Construction //TODO VERBS add more construction verbs? Until then, removing construction category verb.Text = Loc.GetString("deconstructible-verb-begin-deconstruct"); verb.Icon = new SpriteSpecifier.Texture( - new ("/Textures/Interface/hammer_scaled.svg.192dpi.png")); + new("/Textures/Interface/hammer_scaled.svg.192dpi.png")); verb.Act = () => { @@ -80,7 +80,7 @@ namespace Content.Server.Construction { using (args.PushGroup(nameof(ConstructionComponent))) { - if (GetTargetNode(uid, component) is {} target) + if (GetTargetNode(uid, component) is { } target) { if (target.Name == component.DeconstructionNode) { @@ -88,13 +88,22 @@ namespace Content.Server.Construction } else { - args.PushMarkup(Loc.GetString( - "construction-component-to-create-header", - ("targetName", target.Name)) + "\n"); + // Try to get the name of the prototype on the node, if one exists. + var targetProtoId = target.Entity.GetId(uid, args.Examiner, new(EntityManager)); + if (targetProtoId != null + && ProtoMan.TryIndex(targetProtoId, out var targetPrototype)) + { + args.PushMarkup(Loc.GetString("construction-component-to-create-prototype-header", + ("targetName", targetPrototype.Name)) + "\n"); + } + else + { + args.PushMarkup(Loc.GetString("construction-component-to-create-header") + "\n"); + } } } - if (component.EdgeIndex == null && GetTargetEdge(uid, component) is {} targetEdge) + if (component.EdgeIndex == null && GetTargetEdge(uid, component) is { } targetEdge) { var preventStepExamine = false; @@ -108,7 +117,7 @@ namespace Content.Server.Construction return; } - if (GetCurrentEdge(uid, component) is {} edge) + if (GetCurrentEdge(uid, component) is { } edge) { var preventStepExamine = false; @@ -148,12 +157,12 @@ namespace Content.Server.Construction return null; // If either the start node or the target node are missing, do nothing. - if (GetNodeFromGraph(graph, construction.StartNode) is not {} startNode - || GetNodeFromGraph(graph, construction.TargetNode) is not {} targetNode) + if (GetNodeFromGraph(graph, construction.StartNode) is not { } startNode + || GetNodeFromGraph(graph, construction.TargetNode) is not { } targetNode) return null; // If there's no path from start to target, do nothing. - if (graph.Path(construction.StartNode, construction.TargetNode) is not {} path + if (graph.Path(construction.StartNode, construction.TargetNode) is not { } path || path.Length == 0) return null; @@ -196,7 +205,7 @@ namespace Content.Server.Construction // Now actually list the construction conditions. foreach (var condition in construction.Conditions) { - if (condition.GenerateGuideEntry() is not {} conditionEntry) + if (condition.GenerateGuideEntry() is not { } conditionEntry) continue; conditionEntry.Padding += 4; @@ -207,7 +216,7 @@ namespace Content.Server.Construction node = path[index++]; // Add a bit of padding if there will be more steps after this. - if(node != targetNode) + if (node != targetNode) entries.Add(new ConstructionGuideEntry()); continue; diff --git a/Resources/Locale/en-US/construction/components/construction-component.ftl b/Resources/Locale/en-US/construction/components/construction-component.ftl index 9c781e679a..05d58467a0 100644 --- a/Resources/Locale/en-US/construction/components/construction-component.ftl +++ b/Resources/Locale/en-US/construction/components/construction-component.ftl @@ -1,2 +1,3 @@ -construction-component-to-create-header = To create {$targetName}... +construction-component-to-create-header = To continue construction... +construction-component-to-create-prototype-header = To create {INDEFINITE($targetName)} {$targetName}... deconstruction-header-text = To deconstruct... From a20dcbfce799320b5da0eecddd0f05728f074112 Mon Sep 17 00:00:00 2001 From: Whatstone <166147148+whatston3@users.noreply.github.com> Date: Tue, 14 Jul 2026 23:07:43 -0400 Subject: [PATCH 016/108] Cleanup: ConstructionPrototypes Part 3 (Final): Recipes/Crafting (#44674) * cleanup Recipes/Crafting * fix defib cabinet graph * ian suit and moproach shoes are clothing * I learned the dark secrets of the moproach shoes * fix box/crate objectType --- .../Prototypes/Recipes/Crafting/artifact.yml | 4 +- .../Prototypes/Recipes/Crafting/bots.yml | 49 ++-- .../Prototypes/Recipes/Crafting/crates.yml | 71 +++--- .../Recipes/Crafting/defib_cabinet.yml | 9 +- .../Recipes/Crafting/improvised.yml | 225 ++++++++---------- .../Prototypes/Recipes/Crafting/potato.yml | 12 +- .../Recipes/Crafting/smokeables.yml | 36 +-- .../Prototypes/Recipes/Crafting/tallbox.yml | 38 ++- .../Prototypes/Recipes/Crafting/tiles.yml | 44 ++-- .../Prototypes/Recipes/Crafting/toys.yml | 12 +- Resources/Prototypes/Recipes/Crafting/web.yml | 69 ++---- 11 files changed, 222 insertions(+), 347 deletions(-) diff --git a/Resources/Prototypes/Recipes/Crafting/artifact.yml b/Resources/Prototypes/Recipes/Crafting/artifact.yml index 475c7c877e..82f295ca5c 100644 --- a/Resources/Prototypes/Recipes/Crafting/artifact.yml +++ b/Resources/Prototypes/Recipes/Crafting/artifact.yml @@ -1,7 +1,5 @@ - type: construction + parent: BaseItemMisc id: Artifact graph: Artifact - startNode: start targetNode: done - category: construction-category-misc - objectType: Item diff --git a/Resources/Prototypes/Recipes/Crafting/bots.yml b/Resources/Prototypes/Recipes/Crafting/bots.yml index d5eb1f941e..14291b25b6 100644 --- a/Resources/Prototypes/Recipes/Crafting/bots.yml +++ b/Resources/Prototypes/Recipes/Crafting/bots.yml @@ -1,63 +1,48 @@ +# region Base - type: construction + abstract: true + id: BaseRobot + targetNode: bot + category: construction-category-utilities + objectType: Item +# endregion Base + +- type: construction + parent: BaseRobot id: cleanbot graph: CleanBot - startNode: start - targetNode: bot - category: construction-category-utilities - objectType: Item - type: construction + parent: BaseRobot id: firebot graph: FireBot - startNode: start - targetNode: bot - category: construction-category-utilities - objectType: Item - type: construction + parent: BaseRobot id: honkbot graph: HonkBot - startNode: start - targetNode: bot - category: construction-category-utilities - objectType: Item - type: construction + parent: BaseRobot id: jonkbot graph: JonkBot - startNode: start - targetNode: bot - category: construction-category-utilities - objectType: Item - type: construction + parent: BaseRobot id: medibot graph: MediBot - startNode: start - targetNode: bot - category: construction-category-utilities - objectType: Item - type: construction + parent: BaseRobot id: mimebot graph: MimeBot - startNode: start - targetNode: bot - category: construction-category-utilities - objectType: Item - type: construction + parent: BaseRobot id: supplybot graph: SupplyBot - startNode: start - targetNode: bot - category: construction-category-utilities - objectType: Item - type: construction + parent: BaseRobot id: hugbot graph: HugBot - startNode: start - targetNode: bot - category: construction-category-utilities - objectType: Item diff --git a/Resources/Prototypes/Recipes/Crafting/crates.yml b/Resources/Prototypes/Recipes/Crafting/crates.yml index eb18c4a354..1c51aded74 100644 --- a/Resources/Prototypes/Recipes/Crafting/crates.yml +++ b/Resources/Prototypes/Recipes/Crafting/crates.yml @@ -1,92 +1,89 @@ +# region Base - type: construction + abstract: true + id: BaseCrate + category: construction-category-storage + canRotate: false + +- type: construction + abstract: true + id: BaseBox + category: construction-category-storage + objectType: Item +# endregion Base + +# region Crates +- type: construction + parent: BaseCrate id: CrateLivestock graph: CrateLivestock - startNode: start targetNode: cratelivestock - category: construction-category-storage - objectType: Structure - type: construction + parent: BaseCrate id: CrateGenericSteel graph: CrateGenericSteel - startNode: start targetNode: crategenericsteel - category: construction-category-storage - objectType: Structure - type: construction + parent: BaseCrate id: CrateSecure graph: CrateSecure - startNode: start targetNode: cratesecure - category: construction-category-storage - objectType: Structure - type: construction + parent: BaseCrate id: CrateFreezer name: construction-recipe-crate-freezer graph: CrateFreezer - startNode: start targetNode: done - category: construction-category-storage - objectType: Structure - type: construction + parent: BaseCrate id: CratePlastic graph: CratePlastic - startNode: start targetNode: crateplastic - category: construction-category-storage - objectType: Structure - type: construction + parent: BaseCrate id: BigBox name: construction-recipe-big-box graph: BaseBigBox - startNode: start targetNode: basebigbox - category: construction-category-storage - objectType: Structure - type: construction + parent: BaseCrate id: BoxCardboard name: construction-recipe-box-cardboard graph: BoxCardboard - startNode: start targetNode: boxcardboard - category: construction-category-storage - objectType: Item - type: construction + parent: BaseCrate + id: CrateCoffin + graph: CrateCoffin + targetNode: cratecoffin +# endregion Crates + +# region Boxes +- type: construction + parent: BaseBox id: BoxCardboardSmall name: construction-recipe-box-cardboard-small graph: BoxCardboardSmall - startNode: start targetNode: boxcardboardsmall - category: construction-category-storage - objectType: Item - type: construction + parent: BaseBox id: ToteBase name: construction-recipe-box-tote graph: ToteBase - startNode: start targetNode: totebase - category: construction-category-storage - objectType: Item - type: construction + parent: BaseBox id: FoodBoxPizza graph: FoodBoxPizza startNode: start targetNode: foodboxpizza - category: construction-category-storage - objectType: Item - -- type: construction - id: CrateCoffin - graph: CrateCoffin - startNode: start - targetNode: cratecoffin - category: construction-category-storage - objectType: Structure +# endregion Boxes diff --git a/Resources/Prototypes/Recipes/Crafting/defib_cabinet.yml b/Resources/Prototypes/Recipes/Crafting/defib_cabinet.yml index 042a796f36..3a3decfced 100644 --- a/Resources/Prototypes/Recipes/Crafting/defib_cabinet.yml +++ b/Resources/Prototypes/Recipes/Crafting/defib_cabinet.yml @@ -1,12 +1,5 @@ - type: construction + parent: BaseShelf id: DefibrillatorCabinet graph: DefibrillatorCabinet - startNode: start targetNode: done - category: construction-category-storage - objectType: Structure - placementMode: SnapgridCenter - canRotate: true - canBuildInImpassable: true - conditions: - - !type:WallmountCondition diff --git a/Resources/Prototypes/Recipes/Crafting/improvised.yml b/Resources/Prototypes/Recipes/Crafting/improvised.yml index 357aa6c6ab..2cf6072545 100644 --- a/Resources/Prototypes/Recipes/Crafting/improvised.yml +++ b/Resources/Prototypes/Recipes/Crafting/improvised.yml @@ -1,191 +1,160 @@ +# region Base - type: construction + abstract: true + id: BaseItemMisc + category: construction-category-misc + objectType: Item +# endregion + +# region Weapons +- type: construction + parent: BaseWeapon id: bat graph: WoodenBat - startNode: start targetNode: bat - category: construction-category-weapons - objectType: Item - -- type: construction - id: ghost_sheet - graph: GhostSheet - startNode: start - targetNode: ghost_sheet - category: construction-category-clothing - objectType: Item - -- type: construction - id: makeshifthandcuffs - graph: makeshifthandcuffs - startNode: start - targetNode: cuffscable - category: construction-category-tools - objectType: Item - type: construction + parent: BaseWeapon id: makeshiftstunprod graph: makeshiftstunprod - startNode: start targetNode: msstunprod - category: construction-category-weapons - objectType: Item - -- type: construction - id: muzzle - graph: Muzzle - startNode: start - targetNode: muzzle - category: construction-category-tools - objectType: Item - type: construction + parent: BaseWeapon id: pneumaticcannon graph: PneumaticCannon - startNode: start targetNode: cannon - category: construction-category-weapons - objectType: Item - -- type: construction - id: gauze - graph: Gauze - startNode: start - targetNode: gauze - category: construction-category-tools - objectType: Item - -- type: construction - id: blindfold - graph: Blindfold - startNode: start - targetNode: blindfold - category: construction-category-tools - objectType: Item - -- type: construction - id: flowerwreath - graph: flowerwreath - startNode: start - targetNode: flowerwreath - category: construction-category-clothing - objectType: Item - -- type: construction - id: rag - graph: Rag - startNode: start - targetNode: rag - category: construction-category-tools - objectType: Item - type: construction + parent: BaseWeapon id: improvisedshotgun graph: ImprovisedShotgunGraph - startNode: start targetNode: shotgun - category: construction-category-weapons - objectType: Item - type: construction + parent: BaseWeapon id: ShellShotgunImprovised graph: ImprovisedShotgunShellGraph - startNode: start targetNode: shell - category: construction-category-weapons - objectType: Item - type: construction + parent: BaseWeapon id: riflestock graph: RifleStockGraph - startNode: start targetNode: riflestock - category: construction-category-weapons - objectType: Item - type: construction + parent: BaseWeapon id: firebomb graph: FireBomb - startNode: start targetNode: firebomb - category: construction-category-weapons - objectType: Item - -- type: construction - id: CottonWovenCloth - graph: CottonObjects - startNode: start - targetNode: cottoncloth - category: construction-category-misc - objectType: Item - -- type: construction - id: strawHat - graph: StrawHat - startNode: start - targetNode: strawhat - category: construction-category-clothing - objectType: Item - type: construction + parent: BaseWeapon id: pipebomb graph: PipeBomb - startNode: start targetNode: pipebomb - category: construction-category-weapons - objectType: Item +# endregion Weapons + +# region Clothing +- type: construction + parent: BaseClothing + id: ghost_sheet + graph: GhostSheet + targetNode: ghost_sheet - type: construction - id: rollingpin - graph: WoodenRollingPin - startNode: start - targetNode: rollingpin - category: construction-category-tools - objectType: Item + parent: BaseClothing + id: flowerwreath + graph: flowerwreath + targetNode: flowerwreath - type: construction - id: PetCarrier - graph: PetCarrier - startNode: start - targetNode: petCarrier - category: construction-category-misc - objectType: Item - -- type: construction - id: RepairMothershipPinpointer - graph: RepairMothershipPinpointer - startNode: start - targetNode: repairedPinpointer - category: construction-category-misc - objectType: Item + parent: BaseClothing + id: strawHat + graph: StrawHat + targetNode: strawhat - type: construction + parent: BaseClothing id: HardsuitGoliath graph: HardsuitGoliath - startNode: start targetNode: hardsuitGoliath - category: construction-category-clothing - objectType: Item - type: construction + parent: BaseClothing id: scraparmor graph: scraparmor - startNode: start targetNode: scraparmorfinished - category: construction-category-clothing - objectType: Item - type: construction + parent: BaseClothing id: scraphelmet graph: scraphelmet - startNode: start targetNode: scraphelmet - category: construction-category-clothing - objectType: Item - type: construction + parent: BaseClothing id: ClothingBagPet graph: ClothingBagPet - startNode: start targetNode: bagPet - category: construction-category-clothing - objectType: Item +# endregion Clothing + +# region Tools +- type: construction + parent: BaseTool + id: makeshifthandcuffs + graph: makeshifthandcuffs + targetNode: cuffscable + +- type: construction + parent: BaseTool + id: muzzle + graph: Muzzle + targetNode: muzzle + +- type: construction + parent: BaseTool + id: gauze + graph: Gauze + targetNode: gauze + +- type: construction + parent: BaseTool + id: blindfold + graph: Blindfold + targetNode: blindfold + +- type: construction + parent: BaseTool + id: rag + graph: Rag + targetNode: rag + +- type: construction + parent: BaseTool + id: rollingpin + graph: WoodenRollingPin + targetNode: rollingpin +# endregion Tools + +# region Miscellaneous +- type: construction + parent: BaseItemMisc + id: CottonWovenCloth + graph: CottonObjects + targetNode: cottoncloth + category: construction-category-materials + +- type: construction + parent: BaseItemMisc + id: PetCarrier + graph: PetCarrier + targetNode: petCarrier + +- type: construction + parent: BaseItemMisc + id: RepairMothershipPinpointer + graph: RepairMothershipPinpointer + targetNode: repairedPinpointer +# endregion Miscellaneous diff --git a/Resources/Prototypes/Recipes/Crafting/potato.yml b/Resources/Prototypes/Recipes/Crafting/potato.yml index fb8e12c528..9ab4d6f2eb 100644 --- a/Resources/Prototypes/Recipes/Crafting/potato.yml +++ b/Resources/Prototypes/Recipes/Crafting/potato.yml @@ -1,23 +1,17 @@ - type: construction + parent: BaseItemMisc id: PowerCellPotato graph: PowerCellPotato - startNode: start targetNode: potatobattery - category: construction-category-misc - objectType: Item - type: construction + parent: BaseItemMisc id: PotatoAI graph: PotatoAI - startNode: start targetNode: potatoai - category: construction-category-misc - objectType: Item - type: construction + parent: BaseItemMisc id: PotatoAIChip graph: PotatoAIChip - startNode: start targetNode: potatoaichip - category: construction-category-misc - objectType: Item diff --git a/Resources/Prototypes/Recipes/Crafting/smokeables.yml b/Resources/Prototypes/Recipes/Crafting/smokeables.yml index 08da46aa29..db18657cd0 100644 --- a/Resources/Prototypes/Recipes/Crafting/smokeables.yml +++ b/Resources/Prototypes/Recipes/Crafting/smokeables.yml @@ -1,69 +1,49 @@ - type: construction + parent: BaseItemMisc id: smokeableJoint graph: smokeableJoint - startNode: start targetNode: joint - category: construction-category-misc - objectType: Item - type: construction + parent: BaseItemMisc id: smokeableJointRainbow name: construction-smokeable-joint-rainbow graph: smokeableJointRainbow - startNode: start targetNode: jointRainbow - category: construction-category-misc - objectType: Item - type: construction + parent: BaseItemMisc id: smokeableBlunt graph: smokeableBlunt - startNode: start targetNode: blunt - category: construction-category-misc - objectType: Item - type: construction + parent: BaseItemMisc id: smokeableBluntRainbow name: construction-smokeable-blunt-rainbow graph: smokeableBluntRainbow - startNode: start targetNode: bluntRainbow - category: construction-category-misc - objectType: Item - type: construction + parent: BaseItemMisc id: smokeableCigarette graph: smokeableCigarette - startNode: start targetNode: cigarette - category: construction-category-misc - objectType: Item - -# I wanted to put a hand-grinder here but we need construction graphs that use non-consumed catalysts first. - type: construction + parent: BaseItemMisc id: smokeableGroundCannabis graph: smokeableGroundCannabis - startNode: start targetNode: ground - category: construction-category-misc -# color: darkgreen - objectType: Item - type: construction + parent: BaseItemMisc id: smokeableGroundCannabisRainbow graph: smokeableGroundCannabisRainbow - startNode: start targetNode: groundRainbow - category: construction-category-misc - objectType: Item - type: construction + parent: BaseItemMisc id: smokeableGroundTobacco graph: smokeableGroundTobacco - startNode: start targetNode: ground - category: construction-category-misc -# color: brown - objectType: Item diff --git a/Resources/Prototypes/Recipes/Crafting/tallbox.yml b/Resources/Prototypes/Recipes/Crafting/tallbox.yml index 26da5a403f..96f9a0808c 100644 --- a/Resources/Prototypes/Recipes/Crafting/tallbox.yml +++ b/Resources/Prototypes/Recipes/Crafting/tallbox.yml @@ -1,45 +1,41 @@ +# region Base - type: construction + abstract: true + id: BaseCloset + targetNode: done + category: construction-category-storage + canRotate: false +# endregion + +# region Closets +- type: construction + parent: BaseCloset id: ClosetSteel graph: ClosetSteel - startNode: start - targetNode: done - category: construction-category-storage - objectType: Structure - type: construction + parent: BaseCloset id: ClosetSteelSecure graph: ClosetSteelSecure - startNode: start - targetNode: done - category: construction-category-storage - objectType: Structure - type: construction + parent: BaseCloset id: ClosetFreezer name: construction-recipe-closet-freezer graph: ClosetFreezer - startNode: start - targetNode: done - category: construction-category-storage - objectType: Structure - type: construction + parent: BaseCloset id: GunSafe graph: GunSafe - startNode: start - targetNode: done - category: construction-category-storage - objectType: Structure - type: construction + parent: BaseCloset id: ClosetWall graph: ClosetWall - startNode: start - targetNode: done - category: construction-category-storage - objectType: Structure placementMode: SnapgridCenter canRotate: true canBuildInImpassable: true conditions: - - !type:WallmountCondition + - !type:WallmountCondition +# endregion Closets diff --git a/Resources/Prototypes/Recipes/Crafting/tiles.yml b/Resources/Prototypes/Recipes/Crafting/tiles.yml index d9e19566be..b92e8ab746 100644 --- a/Resources/Prototypes/Recipes/Crafting/tiles.yml +++ b/Resources/Prototypes/Recipes/Crafting/tiles.yml @@ -1,65 +1,59 @@ -# These should be lathe recipes but lathe code sucks so hard rn so they'll be crafted by hand. +# TODO: should these be removed, relying on the lathe instead? +# region Base - type: construction + abstract: true + id: BaseTile + category: construction-category-tiles + objectType: Item +# endregion Base + +# region Tiles +- type: construction + parent: BaseTile id: TileSteel graph: TileSteel - startNode: start targetNode: steeltile - category: construction-category-tiles - objectType: Item - type: construction + parent: BaseTile id: TileWood graph: TileWood - startNode: start targetNode: woodtile - category: construction-category-tiles - objectType: Item - type: construction + parent: BaseTile id: TileBrassFilled graph: TilesBrass - startNode: start targetNode: filledPlate - category: construction-category-tiles - objectType: Item - type: construction + parent: BaseTile id: TileBrassReebe graph: TilesBrass - startNode: start targetNode: reebe - category: construction-category-tiles - objectType: Item - type: construction + parent: BaseTile id: TileWhite graph: TileWhite - startNode: start targetNode: whitetile - category: construction-category-tiles - objectType: Item - type: construction + parent: BaseTile id: TileDark graph: TileDark - startNode: start targetNode: darktile - category: construction-category-tiles - objectType: Item - type: construction + parent: BaseTile id: TileFlesh graph: TileFlesh - startNode: start targetNode: fleshTile - category: construction-category-tiles - objectType: Item - type: construction + parent: BaseTile id: TileWoodLarge graph: TileWoodLarge - startNode: start targetNode: woodtilelarge - category: construction-category-tiles - objectType: Item +# endregion Tiles diff --git a/Resources/Prototypes/Recipes/Crafting/toys.yml b/Resources/Prototypes/Recipes/Crafting/toys.yml index 374f96fa47..bcb5ff4a0c 100644 --- a/Resources/Prototypes/Recipes/Crafting/toys.yml +++ b/Resources/Prototypes/Recipes/Crafting/toys.yml @@ -1,23 +1,17 @@ - type: construction + parent: BaseItemMisc id: PlushieGhostRevenant graph: PlushieGhostRevenant - startNode: start targetNode: plushie - category: construction-category-misc - objectType: Item - type: construction + parent: BaseClothing id: ClothingOuterSuitIan graph: ClothingOuterSuitIan - startNode: start targetNode: suit - category: construction-category-misc - objectType: Item - type: construction + parent: BaseItemMisc id: MoproachShoes graph: MoproachShoes - startNode: start targetNode: shoes - category: construction-category-misc - objectType: Item diff --git a/Resources/Prototypes/Recipes/Crafting/web.yml b/Resources/Prototypes/Recipes/Crafting/web.yml index a37e7cda76..cbcd313c37 100644 --- a/Resources/Prototypes/Recipes/Crafting/web.yml +++ b/Resources/Prototypes/Recipes/Crafting/web.yml @@ -1,77 +1,52 @@ +# region Base - type: construction - id: TileWeb + abstract: true + id: BaseWebObject graph: WebObjects - startNode: start + category: construction-category-clothing + entityWhitelist: + tags: + - SpiderCraft + objectType: Item +# endregion Base + +# region Web Objects +- type: construction + parent: BaseWebObject + id: TileWeb targetNode: tile category: construction-category-tiles - entityWhitelist: - tags: - - SpiderCraft - objectType: Item - type: construction + parent: BaseWebObject id: ClothingOuterWinterWeb - graph: WebObjects - startNode: start targetNode: coat - category: construction-category-clothing - entityWhitelist: - tags: - - SpiderCraft - objectType: Item - type: construction + parent: BaseWebObject id: ClothingUniformJumpsuitWeb - graph: WebObjects - startNode: start targetNode: jumpsuit - category: construction-category-clothing - entityWhitelist: - tags: - - SpiderCraft - objectType: Item - type: construction + parent: BaseWebObject id: ClothingUniformJumpskirtWeb - graph: WebObjects - startNode: start targetNode: jumpskirt - category: construction-category-clothing - entityWhitelist: - tags: - - SpiderCraft - objectType: Item - type: construction + parent: BaseWebObject id: SilkWovenCloth name: construction-recipe-silk-woven-cloth - graph: WebObjects - startNode: start targetNode: cloth category: construction-category-materials - entityWhitelist: - tags: - - SpiderCraft - objectType: Item - type: construction + parent: BaseWebObject id: WebShield - graph: WebObjects - startNode: start targetNode: shield - category: construction-category-clothing - entityWhitelist: - tags: - - SpiderCraft - objectType: Item + category: construction-category-weapons - type: construction + parent: BaseWebObject id: ClothingShoesBootsWinterWeb - graph: WebObjects - startNode: start targetNode: boots - category: construction-category-clothing - entityWhitelist: - tags: - - SpiderCraft - objectType: Item +# endregion Web Objects From 128487a2c38ba36cb2bd48789a379076a9e1e6cf Mon Sep 17 00:00:00 2001 From: Samuka <47865393+Samuka-C@users.noreply.github.com> Date: Wed, 15 Jul 2026 02:22:08 -0300 Subject: [PATCH 017/108] Fix the event discord webhook (#44678) * kill the alpha channel * ops, forgot to remove this * explanation * empty commit * empty commit --- Content.Server/Discord/WebhookMessages/EventWebhook.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Content.Server/Discord/WebhookMessages/EventWebhook.cs b/Content.Server/Discord/WebhookMessages/EventWebhook.cs index cc0fec2f65..8812afaabf 100644 --- a/Content.Server/Discord/WebhookMessages/EventWebhook.cs +++ b/Content.Server/Discord/WebhookMessages/EventWebhook.cs @@ -30,7 +30,8 @@ public sealed partial class EventWebhook : IPostInjectInit new() { Title = adminUsername, - Color = Color.DarkViolet.ToArgb(), //#9400D3 + // Gotta remove the alpha channel so discord doesn't freak out + Color = Color.DarkViolet.ToArgb() & 0x00FFFFFF, //#9400D3 Description = eventDescription, Footer = new WebhookEmbedFooter() { From 8ab888008f12ec59503bc31d7f0b2d07ef52a956 Mon Sep 17 00:00:00 2001 From: Whatstone <166147148+whatston3@users.noreply.github.com> Date: Wed, 15 Jul 2026 01:25:05 -0400 Subject: [PATCH 018/108] Fix parcel wrap transform parenting via SpawnAtPosition (#44679) ParcelWrap: spawn at position, use PopupEntity --- .../ParcelWrap/Systems/ParcelWrappingSystem.ParcelWrap.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Content.Shared/ParcelWrap/Systems/ParcelWrappingSystem.ParcelWrap.cs b/Content.Shared/ParcelWrap/Systems/ParcelWrappingSystem.ParcelWrap.cs index ef1aff561d..a2d47f9f59 100644 --- a/Content.Shared/ParcelWrap/Systems/ParcelWrappingSystem.ParcelWrap.cs +++ b/Content.Shared/ParcelWrap/Systems/ParcelWrappingSystem.ParcelWrap.cs @@ -96,7 +96,7 @@ public sealed partial class ParcelWrappingSystem if (target == user) { var selfMsg = Loc.GetString("parcel-wrap-popup-being-wrapped-self"); - _popup.PopupClient(selfMsg, user, user); + _popup.PopupEntity(selfMsg, user, user); } else { @@ -142,7 +142,7 @@ public sealed partial class ParcelWrappingSystem // Spawn the actual parcel entity. var targetTransform = Transform(target); - var spawned = Spawn(GetParcelPrototype(wrapper, target), targetTransform.Coordinates); + var spawned = SpawnAtPosition(GetParcelPrototype(wrapper, target), targetTransform.Coordinates); _transform.SetLocalRotation(spawned, targetTransform.LocalRotation); // If the target is in a container, try to put the parcel in its place in the container. From a80d2db97bdfd41bb73be30887dff05d54a96e1d Mon Sep 17 00:00:00 2001 From: Crude Oil <124208219+CroilBird@users.noreply.github.com> Date: Wed, 15 Jul 2026 15:14:10 +0200 Subject: [PATCH 019/108] Fix crawling slowdown remaining after standing back up (#44683) add missing function calls for downing and standing --- Content.Shared/Movement/Systems/MovementSpeedModifierSystem.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Content.Shared/Movement/Systems/MovementSpeedModifierSystem.cs b/Content.Shared/Movement/Systems/MovementSpeedModifierSystem.cs index 605af461a4..e8c84cd95a 100644 --- a/Content.Shared/Movement/Systems/MovementSpeedModifierSystem.cs +++ b/Content.Shared/Movement/Systems/MovementSpeedModifierSystem.cs @@ -47,11 +47,13 @@ namespace Content.Shared.Movement.Systems private void OnDowned(Entity entity, ref DownedEvent args) { RefreshFrictionModifiers((entity, entity.Comp)); + RefreshMovementModifiers((entity, entity.Comp)); } private void OnStand(Entity entity, ref StoodEvent args) { RefreshFrictionModifiers((entity, entity.Comp)); + RefreshMovementModifiers((entity, entity.Comp)); } /// From 42a9292e9cb33203080a645752df515298380906 Mon Sep 17 00:00:00 2001 From: Hitlinemoss <209321380+Hitlinemoss@users.noreply.github.com> Date: Wed, 15 Jul 2026 09:55:42 -0400 Subject: [PATCH 020/108] Most antagonist ghostroles (and visitor shuttles) no longer spawn while Evac is inbound (#42196) * Most antagonist ghostroles no longer spawn while Evac is inbound * Visitor shuttles too --- Resources/Prototypes/GameRules/events.yml | 8 ++++++++ Resources/Prototypes/GameRules/pests.yml | 1 + Resources/Prototypes/GameRules/unknown_shuttles.yml | 1 + 3 files changed, 10 insertions(+) diff --git a/Resources/Prototypes/GameRules/events.yml b/Resources/Prototypes/GameRules/events.yml index 05396c4512..00130e0d4c 100644 --- a/Resources/Prototypes/GameRules/events.yml +++ b/Resources/Prototypes/GameRules/events.yml @@ -187,6 +187,7 @@ - type: StationEvent weight: 5 duration: 1 + occursDuringRoundEnd: false minimumPlayers: 10 - type: RandomEntityStorageSpawnRule prototype: MobSkeletonCloset @@ -201,6 +202,7 @@ reoccurrenceDelay: 20 minimumPlayers: 20 duration: null + occursDuringRoundEnd: false - type: SpaceSpawnRule spawnDistance: 0 - type: AntagSpawner @@ -225,6 +227,7 @@ - type: StationEvent weight: 6 duration: null + occursDuringRoundEnd: false earliestStart: 30 reoccurrenceDelay: 20 minimumPlayers: 30 @@ -253,6 +256,7 @@ - type: StationEvent weight: 5 duration: null + occursDuringRoundEnd: false earliestStart: 20 reoccurrenceDelay: 20 minimumPlayers: 15 @@ -280,6 +284,7 @@ - type: StationEvent weight: 7.5 duration: 1 + occursDuringRoundEnd: false earliestStart: 45 minimumPlayers: 20 - type: RandomSpawnRule @@ -292,6 +297,7 @@ - type: StationEvent weight: 1 # rare duration: null + occursDuringRoundEnd: false earliestStart: 30 reoccurrenceDelay: 60 minimumPlayers: 30 @@ -499,6 +505,7 @@ weight: 5.5 minimumPlayers: 20 duration: null # LoneOpsSpawn needs an infinite duration so that it inherits the NukeOpsRule things of an actually appropriate end screen (not always "Neutral outcome!") and... ending the game if the station is nuked. + occursDuringRoundEnd: false - type: RuleGrids - type: LoadMapRule gridPath: /Maps/Shuttles/ShuttleEvent/striker.yml @@ -605,6 +612,7 @@ reoccurrenceDelay: 20 minimumPlayers: 4 duration: null + occursDuringRoundEnd: false - type: SpaceSpawnRule spawnDistance: 0 diff --git a/Resources/Prototypes/GameRules/pests.yml b/Resources/Prototypes/GameRules/pests.yml index 7a80b3baa0..49f0485f97 100644 --- a/Resources/Prototypes/GameRules/pests.yml +++ b/Resources/Prototypes/GameRules/pests.yml @@ -46,6 +46,7 @@ earliestStart: 15 weight: 6 duration: 50 + occursDuringRoundEnd: false minimumPlayers: 30 # Hopefully this is enough for the Rat King's potential Army (it was not, raised from 15 -> 30) - type: VentCrittersRule # We don't use Horde here to make RK spawns less predictable. entries: diff --git a/Resources/Prototypes/GameRules/unknown_shuttles.yml b/Resources/Prototypes/GameRules/unknown_shuttles.yml index 58c6a4286b..67e6641d4f 100644 --- a/Resources/Prototypes/GameRules/unknown_shuttles.yml +++ b/Resources/Prototypes/GameRules/unknown_shuttles.yml @@ -19,6 +19,7 @@ weight: 10 # 10 default reoccurrenceDelay: 30 duration: 1 + occursDuringRoundEnd: false maxOccurrences: 1 - type: RuleGrids - type: LoadMapRule From 4b960f4bfb6d68659ddbfa7464d06a459592b163 Mon Sep 17 00:00:00 2001 From: murphyneko <47712032+murphyneko@users.noreply.github.com> Date: Wed, 15 Jul 2026 15:56:21 +0200 Subject: [PATCH 021/108] Gamerules with occursDuringRoundEnd=false don't run only when roundend is certain (#42199) gamerule cannot run if we can recall --- .../StationEvents/Components/StationEventComponent.cs | 2 +- Content.Server/StationEvents/EventManagerSystem.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Content.Server/StationEvents/Components/StationEventComponent.cs b/Content.Server/StationEvents/Components/StationEventComponent.cs index a188d5c052..b4f77819f2 100644 --- a/Content.Server/StationEvents/Components/StationEventComponent.cs +++ b/Content.Server/StationEvents/Components/StationEventComponent.cs @@ -83,7 +83,7 @@ public sealed partial class StationEventComponent : Component public TimeSpan? EndTime; /// - /// If false, the event won't trigger during ongoing evacuation. + /// If false, the event won't trigger after the evacuation shuttle is called and cannot be recalled anymore. /// [DataField] public bool OccursDuringRoundEnd = true; diff --git a/Content.Server/StationEvents/EventManagerSystem.cs b/Content.Server/StationEvents/EventManagerSystem.cs index 3b26be61bf..8531ebbb91 100644 --- a/Content.Server/StationEvents/EventManagerSystem.cs +++ b/Content.Server/StationEvents/EventManagerSystem.cs @@ -342,7 +342,7 @@ public sealed partial class EventManagerSystem : EntitySystem return false; } - if (_roundEnd.IsRoundEndRequested() && !stationEvent.OccursDuringRoundEnd) + if (_roundEnd.IsRoundEndRequested() && !stationEvent.OccursDuringRoundEnd && !_roundEnd.CanCallOrRecall()) { return false; } From d4924cd62b10e547dcfd7748d3417d7b1a9fa1e7 Mon Sep 17 00:00:00 2001 From: TheShuEd <96445749+TheShuEd@users.noreply.github.com> Date: Thu, 16 Jul 2026 10:09:38 +0500 Subject: [PATCH 022/108] GameDataScrounger fix IgnorePrototypes handling (#44656) Update path handling in GameDataScrounger --- Content.IntegrationTests/Utility/GameDataScrounger.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Content.IntegrationTests/Utility/GameDataScrounger.cs b/Content.IntegrationTests/Utility/GameDataScrounger.cs index 764fd9dd9a..bb190fbe21 100644 --- a/Content.IntegrationTests/Utility/GameDataScrounger.cs +++ b/Content.IntegrationTests/Utility/GameDataScrounger.cs @@ -169,14 +169,14 @@ public static partial class GameDataScrounger // Take a directory off the stack. var dir = explorationStack.Pop(); - if (ignoreList.Contains(dir)) + if (ignoreList.Contains(Path.GetFullPath(dir))) continue; // It's all abstract anyway. explorationStack.AddRange(Directory.EnumerateDirectories(dir)); foreach (var file in Directory.EnumerateFiles(dir, "*.yml")) { - if (ignoreList.Contains(file)) + if (ignoreList.Contains(Path.GetFullPath(file))) continue; // It's all abstract anyway. foreach (var (kind, id) in IndexPrototypesIn(file)) @@ -359,7 +359,7 @@ public static partial class GameDataScrounger if (entry is not YamlScalarNode { Value: {} value }) throw new Exception($"An entry in {path} is not a valid YAML scalar/string literal. Entry: {entry}"); - ignores.Add(value); + ignores.Add(Path.GetFullPath($"{resDir}{value}")); } } } From d86a4090380b3b2403e69724f019ad143a83d910 Mon Sep 17 00:00:00 2001 From: Errant <35878406+Errant-4@users.noreply.github.com> Date: Thu, 16 Jul 2026 07:22:25 +0200 Subject: [PATCH 023/108] Change "emergency EVA suit" name to "emergency pressure suit" (#44663) * EVA suit labeling * minor tweaks --- Resources/Locale/en-US/tips.ftl | 4 ++-- .../Prototypes/Catalog/Fills/Crates/emergency.yml | 4 ++-- .../Prototypes/Entities/Clothing/Head/eva-helmets.yml | 6 +++--- .../Entities/Clothing/OuterClothing/softsuits.yml | 10 +++++----- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/Resources/Locale/en-US/tips.ftl b/Resources/Locale/en-US/tips.ftl index 37a52a8d4d..67b019ebb4 100644 --- a/Resources/Locale/en-US/tips.ftl +++ b/Resources/Locale/en-US/tips.ftl @@ -91,8 +91,8 @@ tips-dataset-90 = If there's something you need from another department, try ask tips-dataset-91 = The station's nuke is invincible. Go find the disk instead of trying to destroy it. tips-dataset-92 = Maintenance is full of equipment that is randomized every round. Look around and see if anything is worth using. tips-dataset-93 = We were all new once. Be patient and guide new players, especially those playing intern roles, in the right direction. -tips-dataset-94 = Firesuits, winter coats, and emergency EVA suits offer mild protection from the cold, allowing you to spend longer periods of time near breaches and space than if wearing nothing at all. -tips-dataset-95 = In an emergency, you can always rely on firesuits and emergency EVA suits; they will always spawn in their respective lockers. They might be awkward to move around in, but can easily save your life in a dangerous situation. +tips-dataset-94 = Firesuits, winter coats, and emergency pressure suits offer mild protection from the cold, allowing you to spend longer periods of time near breaches and space than if wearing nothing at all. +tips-dataset-95 = In an emergency, you can always rely on firesuits and emergency pressure suits; they will always spawn in their respective lockers. They might be awkward to move around in, but can easily save your life in a dangerous situation. tips-dataset-96 = In an emergency, remember that you can craft improvised weapons! A baseball bat or spear could easily mean the difference between deterring an attacker or perishing from the hands of one. tips-dataset-97 = Spears can be tipped with chemicals, and will inject a few units every time you hit someone with them directly. tips-dataset-98 = You can make spears with reinforced glass, plasma glass, or uranium glass shards to enhance their damage. diff --git a/Resources/Prototypes/Catalog/Fills/Crates/emergency.yml b/Resources/Prototypes/Catalog/Fills/Crates/emergency.yml index dd82c2208f..f8fe8731f6 100644 --- a/Resources/Prototypes/Catalog/Fills/Crates/emergency.yml +++ b/Resources/Prototypes/Catalog/Fills/Crates/emergency.yml @@ -42,7 +42,7 @@ parent: CrateInternals id: CrateEmergencyInternals name: internals crate - description: Master your life energy and control your breathing with three breath masks, three gas masks, three emergency EVA suits, three oxygen tanks, and three nitrogen tanks. + description: Master your life energy and control your breathing with three breath masks, three gas masks, three emergency pressure suits, three oxygen tanks, and three nitrogen tanks. components: - type: EntityTableContainerFill containers: @@ -63,7 +63,7 @@ parent: CrateInternals id: CrateEmergencyInternalsLarge name: internals crate (large) - description: Master your life energy and control your breathing with six breath masks, six gas masks, six emergency EVA suits, six oxygen tanks, and six nitrogen tanks. + description: Master your life energy and control your breathing with six breath masks, six gas masks, six emergency pressure suits, six oxygen tanks, and six nitrogen tanks. components: - type: EntityTableContainerFill containers: diff --git a/Resources/Prototypes/Entities/Clothing/Head/eva-helmets.yml b/Resources/Prototypes/Entities/Clothing/Head/eva-helmets.yml index 19da93184a..0d2814d537 100644 --- a/Resources/Prototypes/Entities/Clothing/Head/eva-helmets.yml +++ b/Resources/Prototypes/Entities/Clothing/Head/eva-helmets.yml @@ -15,12 +15,12 @@ - WhitelistChameleon - CorgiWearable -#Large EVA Helmet +#Emergency pressure suit helmet - type: entity parent: ClothingHeadEVAHelmetBase id: ClothingHeadHelmetEVALarge - name: EVA helmet - description: An old-but-gold helmet designed for extravehicular activites. + name: emergency helmet + description: Hard to believe this cheap-looking thing is airtight, but it is. components: - type: Sprite sprite: Clothing/Head/Helmets/eva_large.rsi diff --git a/Resources/Prototypes/Entities/Clothing/OuterClothing/softsuits.yml b/Resources/Prototypes/Entities/Clothing/OuterClothing/softsuits.yml index bd9b01cd58..7b81ad7ed2 100644 --- a/Resources/Prototypes/Entities/Clothing/OuterClothing/softsuits.yml +++ b/Resources/Prototypes/Entities/Clothing/OuterClothing/softsuits.yml @@ -3,7 +3,7 @@ parent: ClothingOuterEVASuitBase id: ClothingOuterHardsuitEVA name: EVA suit - description: A lightweight space suit with the basic ability to protect the wearer from the vacuum of space during emergencies. + description: A lightweight space suit with the basic ability to protect the wearer from the vacuum of space. components: - type: Sprite sprite: Clothing/OuterClothing/Suits/eva.rsi @@ -38,8 +38,8 @@ - type: entity parent: ClothingOuterEVASuitBaseToggleable id: ClothingOuterSuitEmergency - name: emergency EVA suit - description: An emergency EVA suit with a built-in helmet. It's horribly slow and lacking in temperature protection, but enough to buy you time from the harsh vacuum of space. + name: emergency pressure suit + description: This bulky, uninsulated pressure suit was clearly not meant for extended use in outer space, despite NanoTrasen's claims that it passes corporate regulations. components: - type: Sprite sprite: Clothing/OuterClothing/Suits/eva_emergency.rsi @@ -65,8 +65,8 @@ - type: entity parent: ClothingOuterEVASuitBase id: ClothingOuterHardsuitEVAPrisoner - name: prisoner EVA suit - description: An emergency EVA suit meant for prisoners. It's horribly slow and lacking in temperature protection, but enough to buy you time from the harsh vacuum of space. + name: prisoner pressure suit + description: An emergency pressure suit meant for prisoners. It's not fully rated for extended use in outer space, but some wardens consider the lack of thermal insulation a feature. components: - type: Sprite sprite: Clothing/OuterClothing/Suits/eva_prisoner.rsi From fd55f93929a0e313aa7c1c0b9457d7070441fb1d Mon Sep 17 00:00:00 2001 From: AJCM-git <60196617+AJCM-git@users.noreply.github.com> Date: Thu, 16 Jul 2026 02:02:15 -0400 Subject: [PATCH 024/108] Fix diagonal windows construction ghost not being able to rotate (#44705) --- Resources/Prototypes/Recipes/Construction/structures.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/Resources/Prototypes/Recipes/Construction/structures.yml b/Resources/Prototypes/Recipes/Construction/structures.yml index 4791ca688a..a136367377 100644 --- a/Resources/Prototypes/Recipes/Construction/structures.yml +++ b/Resources/Prototypes/Recipes/Construction/structures.yml @@ -264,6 +264,7 @@ id: WindowDirectional graph: WindowDirectional targetNode: windowDirectional + canRotate: true - type: construction parent: WindowDirectional From 585d64ad8d5db6729cddfd6584e21fe916757605 Mon Sep 17 00:00:00 2001 From: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> Date: Thu, 16 Jul 2026 17:24:40 +1000 Subject: [PATCH 025/108] Ignore submodule updates on engine version (#44533) Listen the error annoyed me okay. --- .github/workflows/no-submodule-update.yml | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/.github/workflows/no-submodule-update.yml b/.github/workflows/no-submodule-update.yml index f2a9d72e37..9d1f2d3b11 100644 --- a/.github/workflows/no-submodule-update.yml +++ b/.github/workflows/no-submodule-update.yml @@ -10,5 +10,22 @@ jobs: name: Submodule update in pr found runs-on: ubuntu-latest steps: - - name: Fail - run: exit 1 + - uses: actions/checkout@v7 + with: + fetch-depth: 0 + + - name: Check changed files + shell: pwsh + run: | + $changedFiles = @(git diff --name-only "${{ github.event.pull_request.base.sha }}" "${{ github.event.pull_request.head.sha }}") + + if ($changedFiles.Count -eq 1 -and $changedFiles[0] -eq "RobustToolbox") { + Write-Host "Only RobustToolbox was changed; allowing standalone submodule update." + exit 0 + } + + Write-Host "RobustToolbox was updated alongside other files:" + foreach ($file in $changedFiles) { + Write-Host " - $file" + } + exit 1 From 16d73b1b557456c185ac1f1da48fa8f20f395f40 Mon Sep 17 00:00:00 2001 From: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> Date: Thu, 16 Jul 2026 19:35:41 +1000 Subject: [PATCH 026/108] Workflow standardisation + prune dead runs (#44532) * Workflow standardisation + prune dead runs * Also this --- .github/workflows/build-map-renderer.yml | 4 ++++ .github/workflows/build-test-debug.yml | 4 ++++ .github/workflows/check-crlf.yml | 4 ++++ .github/workflows/no-submodule-update.yml | 6 ++++++ .github/workflows/rsi-diff.yml | 5 +++++ .github/workflows/test-packaging.yml | 4 ++++ .github/workflows/validate-rgas.yml | 4 ++++ .github/workflows/validate-rsis.yml | 6 ++++++ .github/workflows/validate_mapfiles.yml | 4 ++++ .github/workflows/yaml-linter.yml | 4 ++++ 10 files changed, 45 insertions(+) diff --git a/.github/workflows/build-map-renderer.yml b/.github/workflows/build-map-renderer.yml index 7e9e203f26..a20023a057 100644 --- a/.github/workflows/build-map-renderer.yml +++ b/.github/workflows/build-map-renderer.yml @@ -8,6 +8,10 @@ on: types: [ opened, reopened, synchronize, ready_for_review ] branches: [ master, staging, stable ] +concurrency: + group: ${{ github.workflow }}-${{ github.event_name == 'pull_request' && github.event.pull_request.number || github.ref }} + cancel-in-progress: ${{ github.event_name != 'merge_group' }} + jobs: build: if: github.actor != 'PJBot' && github.event.pull_request.draft == false diff --git a/.github/workflows/build-test-debug.yml b/.github/workflows/build-test-debug.yml index a459740e68..7d54647c64 100644 --- a/.github/workflows/build-test-debug.yml +++ b/.github/workflows/build-test-debug.yml @@ -8,6 +8,10 @@ on: types: [ opened, reopened, synchronize, ready_for_review ] branches: [ master, staging, stable ] +concurrency: + group: ${{ github.workflow }}-${{ github.event_name == 'pull_request' && github.event.pull_request.number || github.ref }} + cancel-in-progress: ${{ github.event_name != 'merge_group' }} + jobs: build: if: github.actor != 'PJBot' && github.event.pull_request.draft == false diff --git a/.github/workflows/check-crlf.yml b/.github/workflows/check-crlf.yml index 552ca4b097..5e4b0d0341 100644 --- a/.github/workflows/check-crlf.yml +++ b/.github/workflows/check-crlf.yml @@ -4,6 +4,10 @@ on: pull_request: types: [ opened, reopened, synchronize, ready_for_review ] +concurrency: + group: ${{ github.workflow }}-${{ github.event.pull_request.number }} + cancel-in-progress: true # We only care about latest. + jobs: build: name: CRLF Check diff --git a/.github/workflows/no-submodule-update.yml b/.github/workflows/no-submodule-update.yml index 9d1f2d3b11..10354eaed2 100644 --- a/.github/workflows/no-submodule-update.yml +++ b/.github/workflows/no-submodule-update.yml @@ -2,12 +2,18 @@ name: No submodule update checker on: pull_request: + types: [ opened, reopened, synchronize, ready_for_review ] paths: - 'RobustToolbox' +concurrency: + group: ${{ github.workflow }}-${{ github.event.pull_request.number }} + cancel-in-progress: true + jobs: this_aint_right: name: Submodule update in pr found + if: github.actor != 'PJBot' && github.event.pull_request.draft == false runs-on: ubuntu-latest steps: - uses: actions/checkout@v7 diff --git a/.github/workflows/rsi-diff.yml b/.github/workflows/rsi-diff.yml index 8ae6105ad3..079a476fe4 100644 --- a/.github/workflows/rsi-diff.yml +++ b/.github/workflows/rsi-diff.yml @@ -2,9 +2,14 @@ name: Diff RSIs on: pull_request_target: + types: [ opened, reopened, synchronize, ready_for_review ] paths: - '**.rsi/**.png' +concurrency: + group: ${{ github.workflow }}-${{ github.event.pull_request.number }} + cancel-in-progress: true + jobs: diff: name: Diff diff --git a/.github/workflows/test-packaging.yml b/.github/workflows/test-packaging.yml index 2bddfce1ce..34bdf56bd3 100644 --- a/.github/workflows/test-packaging.yml +++ b/.github/workflows/test-packaging.yml @@ -26,6 +26,10 @@ on: - 'RobustToolbox' - 'RobustToolbox/**' +concurrency: + group: ${{ github.workflow }}-${{ github.event_name == 'pull_request' && github.event.pull_request.number || github.ref }} + cancel-in-progress: ${{ github.event_name != 'merge_group' }} + jobs: build: name: Test Packaging diff --git a/.github/workflows/validate-rgas.yml b/.github/workflows/validate-rgas.yml index 9e770bd418..2d82bc4387 100644 --- a/.github/workflows/validate-rgas.yml +++ b/.github/workflows/validate-rgas.yml @@ -6,6 +6,10 @@ on: pull_request: types: [ opened, reopened, synchronize, ready_for_review ] +concurrency: + group: ${{ github.workflow }}-${{ github.event_name == 'pull_request' && github.event.pull_request.number || github.ref }} + cancel-in-progress: ${{ github.event_name != 'merge_group' }} + jobs: yaml-schema-validation: name: YAML RGA schema validator diff --git a/.github/workflows/validate-rsis.yml b/.github/workflows/validate-rsis.yml index bcc67c7c15..d635115944 100644 --- a/.github/workflows/validate-rsis.yml +++ b/.github/workflows/validate-rsis.yml @@ -5,12 +5,18 @@ on: branches: [ master, staging, stable ] merge_group: pull_request: + types: [ opened, reopened, synchronize, ready_for_review ] paths: - '**.rsi/**' +concurrency: + group: ${{ github.workflow }}-${{ github.event_name == 'pull_request' && github.event.pull_request.number || github.ref }} + cancel-in-progress: ${{ github.event_name != 'merge_group' }} + jobs: validate_rsis: name: Validate RSIs + if: github.actor != 'PJBot' && github.event.pull_request.draft == false runs-on: ubuntu-latest steps: - uses: actions/checkout@v7 diff --git a/.github/workflows/validate_mapfiles.yml b/.github/workflows/validate_mapfiles.yml index 026c181800..3b6848c1d3 100644 --- a/.github/workflows/validate_mapfiles.yml +++ b/.github/workflows/validate_mapfiles.yml @@ -6,6 +6,10 @@ on: pull_request: types: [ opened, reopened, synchronize, ready_for_review ] +concurrency: + group: ${{ github.workflow }}-${{ github.event_name == 'pull_request' && github.event.pull_request.number || github.ref }} + cancel-in-progress: ${{ github.event_name != 'merge_group' }} + jobs: yaml-schema-validation: name: YAML map schema validator diff --git a/.github/workflows/yaml-linter.yml b/.github/workflows/yaml-linter.yml index dec069dfd7..99941644eb 100644 --- a/.github/workflows/yaml-linter.yml +++ b/.github/workflows/yaml-linter.yml @@ -7,6 +7,10 @@ on: pull_request: types: [ opened, reopened, synchronize, ready_for_review ] +concurrency: + group: ${{ github.workflow }}-${{ github.event_name == 'pull_request' && github.event.pull_request.number || github.ref }} + cancel-in-progress: ${{ github.event_name != 'merge_group' }} + jobs: build: name: YAML Linter From b303948da6e51a02b7be0342a3dc8ad9529c8d3a Mon Sep 17 00:00:00 2001 From: SlamBamActionman <83650252+SlamBamActionman@users.noreply.github.com> Date: Thu, 16 Jul 2026 17:17:17 +0200 Subject: [PATCH 027/108] Make glue/lube apply their effects immediately on held items (#44552) * Initial commit * Admin ghost/godmode immunity, inventory relay support * Alphabetize review --- .../Damage/Systems/SharedGodmodeSystem.cs | 14 ++++ Content.Shared/Glue/GlueSystem.cs | 75 +++++++++++++++---- Content.Shared/Glue/GluedImmuneComponent.cs | 14 ++++ .../Inventory/InventorySystem.Relay.cs | 4 + Content.Shared/Lube/LubeSystem.cs | 8 ++ Content.Shared/Lube/LubedImmuneComponent.cs | 14 ++++ Content.Shared/Lube/LubedSystem.cs | 68 ++++++++++++----- .../Entities/Mobs/Player/admin_ghost.yml | 2 + 8 files changed, 167 insertions(+), 32 deletions(-) create mode 100644 Content.Shared/Glue/GluedImmuneComponent.cs create mode 100644 Content.Shared/Lube/LubedImmuneComponent.cs diff --git a/Content.Shared/Damage/Systems/SharedGodmodeSystem.cs b/Content.Shared/Damage/Systems/SharedGodmodeSystem.cs index b114527e18..5a041a59e4 100644 --- a/Content.Shared/Damage/Systems/SharedGodmodeSystem.cs +++ b/Content.Shared/Damage/Systems/SharedGodmodeSystem.cs @@ -1,6 +1,8 @@ using Content.Shared.Damage.Components; using Content.Shared.Damage.Events; using Content.Shared.Destructible; +using Content.Shared.Glue; +using Content.Shared.Lube; using Content.Shared.Nutrition; using Content.Shared.Prototypes; using Content.Shared.Rejuvenate; @@ -63,6 +65,18 @@ public abstract partial class SharedGodmodeSystem : EntitySystem args.Cancelled = true; } + [SubscribeLocalEvent] + private void OnGluedEffectAttemptEvent(Entity entity, ref GluedEffectAttemptEvent args) + { + args.Cancelled = true; + } + + [SubscribeLocalEvent] + private void OnGluedEffectAttemptEvent(Entity entity, ref LubedEffectAttemptEvent args) + { + args.Cancelled = true; + } + public virtual void EnableGodmode(EntityUid uid, GodmodeComponent? godmode = null) { // Rejuv to cover other stuff diff --git a/Content.Shared/Glue/GlueSystem.cs b/Content.Shared/Glue/GlueSystem.cs index 437a8e8142..20b6a25dae 100644 --- a/Content.Shared/Glue/GlueSystem.cs +++ b/Content.Shared/Glue/GlueSystem.cs @@ -1,15 +1,19 @@ using Content.Shared.Administration.Logs; using Content.Shared.Chemistry.EntitySystems; +using Content.Shared.Damage.Components; using Content.Shared.Database; using Content.Shared.Hands; +using Content.Shared.Hands.EntitySystems; using Content.Shared.Interaction; using Content.Shared.Interaction.Components; +using Content.Shared.Inventory; using Content.Shared.Item; using Content.Shared.NameModifier.EntitySystems; using Content.Shared.Nutrition.EntitySystems; using Content.Shared.Popups; using Content.Shared.Verbs; using Robust.Shared.Audio.Systems; +using Robust.Shared.Containers; using Robust.Shared.Timing; namespace Content.Shared.Glue; @@ -21,6 +25,8 @@ public sealed partial class GlueSystem : EntitySystem [Dependency] private NameModifierSystem _nameMod = default!; [Dependency] private OpenableSystem _openable = default!; [Dependency] private SharedAudioSystem _audio = default!; + [Dependency] private SharedContainerSystem _container = default!; + [Dependency] private SharedHandsSystem _hands = default!; [Dependency] private SharedPopupSystem _popup = default!; [Dependency] private SharedSolutionContainerSystem _solutionContainer = default!; @@ -29,13 +35,10 @@ public sealed partial class GlueSystem : EntitySystem base.Initialize(); SubscribeLocalEvent(OnInteract, after: new[] { typeof(OpenableSystem) }); - SubscribeLocalEvent(OnGluedInit); - SubscribeLocalEvent>(OnUtilityVerb); - SubscribeLocalEvent(OnHandPickUp); - SubscribeLocalEvent(OnRefreshNameModifiers); } // When glue bottle is used on item it will apply the glued and unremoveable components. + // TODO: Move to [SubscribeLocalEvent] once "after:" can be applied. private void OnInteract(Entity entity, ref AfterInteractEvent args) { if (args.Handled) @@ -48,6 +51,7 @@ public sealed partial class GlueSystem : EntitySystem args.Handled = true; } + [SubscribeLocalEvent] private void OnUtilityVerb(Entity entity, ref GetVerbsEvent args) { if (!args.CanInteract || !args.CanAccess || args.Target is not { Valid: true } target || @@ -67,6 +71,36 @@ public sealed partial class GlueSystem : EntitySystem args.Verbs.Add(verb); } + [SubscribeLocalEvent] + private void OnGluedInit(Entity entity, ref ComponentInit args) + { + _nameMod.RefreshNameModifiers(entity.Owner); + } + + [SubscribeLocalEvent] + private void OnHandPickUp(Entity entity, ref GotEquippedHandEvent args) + { + PerformGluedEffect(entity, args.User); + } + + [SubscribeLocalEvent] + private void OnRefreshNameModifiers(Entity entity, ref RefreshNameModifiersEvent args) + { + args.AddModifier("glued-name-prefix"); + } + + [SubscribeLocalEvent] + private void OnGluedEffectAttemptEvent(Entity entity, ref GluedEffectAttemptEvent args) + { + args.Cancelled = true; + } + + [SubscribeLocalEvent] + private void OnGluedEffectAttemptEvent(Entity entity, ref InventoryRelayedEvent args) + { + OnGluedEffectAttemptEvent(entity, ref args.Args); + } + private bool TryGlue(Entity entity, EntityUid target, EntityUid actor) { // if item is glued then don't apply glue again so it can be removed for reasonable time @@ -88,6 +122,9 @@ public sealed partial class GlueSystem : EntitySystem _adminLogger.Add(LogType.Action, LogImpact.Medium, $"{ToPrettyString(actor):actor} glued {ToPrettyString(target):subject} with {ToPrettyString(entity.Owner):tool}"); var gluedComp = EnsureComp(target); gluedComp.Duration = quantity.Double() * entity.Comp.DurationPerUnit; + if (_container.TryGetContainingContainer((target, null, null), out var container) && _hands.IsHolding(container.Owner, target)) + PerformGluedEffect((target, gluedComp), actor); + Dirty(target, gluedComp); return true; } @@ -114,13 +151,14 @@ public sealed partial class GlueSystem : EntitySystem } } - private void OnGluedInit(Entity entity, ref ComponentInit args) + private void PerformGluedEffect(Entity entity, EntityUid user) { - _nameMod.RefreshNameModifiers(entity.Owner); - } + // Check if anything on the user cancels it. + var attemptEv = new GluedEffectAttemptEvent(); + RaiseLocalEvent(user, ref attemptEv); + if (attemptEv.Cancelled) + return; - private void OnHandPickUp(Entity entity, ref GotEquippedHandEvent args) - { // When predicting dropping a glued item prediction will reinsert the item into the hand when rerolling the state to a previous one. // So dropping the item would add UnRemoveableComponent on the client without this guard statement. if (_timing.ApplyingState) @@ -132,9 +170,18 @@ public sealed partial class GlueSystem : EntitySystem Dirty(entity.Owner, comp); Dirty(entity); } - - private void OnRefreshNameModifiers(Entity entity, ref RefreshNameModifiersEvent args) - { - args.AddModifier("glued-name-prefix"); - } +} + +/// +/// Raised on an entity to determine if it will be affected by a glued item or not. +/// +[ByRefEvent] +public record struct GluedEffectAttemptEvent() : IInventoryRelayEvent +{ + public SlotFlags TargetSlots { get; } = SlotFlags.GLOVES; + + /// + /// If true, prevents the effect from being applied. + /// + public bool Cancelled; } diff --git a/Content.Shared/Glue/GluedImmuneComponent.cs b/Content.Shared/Glue/GluedImmuneComponent.cs new file mode 100644 index 0000000000..2bc7f5dea6 --- /dev/null +++ b/Content.Shared/Glue/GluedImmuneComponent.cs @@ -0,0 +1,14 @@ +using Robust.Shared.GameStates; + +namespace Content.Shared.Glue; + +/// +/// This component indicates that an entity ignores the on items. +/// +// Careful adding this to player content! It has strong design implications! +[RegisterComponent, NetworkedComponent] +[Access(typeof(GlueSystem))] +public sealed partial class GluedImmuneComponent : Component +{ + +} diff --git a/Content.Shared/Inventory/InventorySystem.Relay.cs b/Content.Shared/Inventory/InventorySystem.Relay.cs index 67da36aa92..051480191d 100644 --- a/Content.Shared/Inventory/InventorySystem.Relay.cs +++ b/Content.Shared/Inventory/InventorySystem.Relay.cs @@ -11,10 +11,12 @@ using Content.Shared.Electrocution; using Content.Shared.Explosion; using Content.Shared.Eye.Blinding.Systems; using Content.Shared.Flash; +using Content.Shared.Glue; using Content.Shared.Gravity; using Content.Shared.IdentityManagement.Components; using Content.Shared.Implants; using Content.Shared.Inventory.Events; +using Content.Shared.Lube; using Content.Shared.Movement.Events; using Content.Shared.Movement.Systems; using Content.Shared.NameModifier.EntitySystems; @@ -82,6 +84,8 @@ public partial class InventorySystem SubscribeLocalEvent(RefRelayInventoryEvent); SubscribeLocalEvent(RefRelayInventoryEvent); SubscribeLocalEvent(RefRelayInventoryEvent); + SubscribeLocalEvent(RefRelayInventoryEvent); + SubscribeLocalEvent(RefRelayInventoryEvent); // Eye/vision events SubscribeLocalEvent(RelayInventoryEvent); diff --git a/Content.Shared/Lube/LubeSystem.cs b/Content.Shared/Lube/LubeSystem.cs index 8f89b9765d..0c5d8d0481 100644 --- a/Content.Shared/Lube/LubeSystem.cs +++ b/Content.Shared/Lube/LubeSystem.cs @@ -1,6 +1,7 @@ using Content.Shared.Administration.Logs; using Content.Shared.Chemistry.EntitySystems; using Content.Shared.Database; +using Content.Shared.Hands.EntitySystems; using Content.Shared.IdentityManagement; using Content.Shared.Interaction; using Content.Shared.Item; @@ -9,6 +10,7 @@ using Content.Shared.Popups; using Content.Shared.Random.Helpers; using Content.Shared.Verbs; using Robust.Shared.Audio.Systems; +using Robust.Shared.Containers; using Robust.Shared.Timing; namespace Content.Shared.Lube; @@ -21,6 +23,9 @@ public sealed partial class LubeSystem : EntitySystem [Dependency] private ISharedAdminLogManager _adminLogger = default!; [Dependency] private OpenableSystem _openable = default!; [Dependency] private IGameTiming _timing = default!; + [Dependency] private SharedContainerSystem _container = default!; + [Dependency] private SharedHandsSystem _hands = default!; + [Dependency] private LubedSystem _lubed = default!; public override void Initialize() { @@ -81,6 +86,9 @@ public sealed partial class LubeSystem : EntitySystem var rand = SharedRandomExtensions.PredictedRandom(_timing, GetNetEntity(entity)); lubed.SlipsLeft = rand.Next(entity.Comp.MinSlips * quantity.Int(), 1 + entity.Comp.MaxSlips * quantity.Int()); lubed.SlipStrength = entity.Comp.SlipStrength; + if (_container.TryGetContainingContainer((target, null, null), out var container) && _hands.IsHolding(container.Owner, target)) + _lubed.PerformLubedEffect((target, lubed), actor, out _); + Dirty(target, lubed); return true; } diff --git a/Content.Shared/Lube/LubedImmuneComponent.cs b/Content.Shared/Lube/LubedImmuneComponent.cs new file mode 100644 index 0000000000..8a5ac1a4c1 --- /dev/null +++ b/Content.Shared/Lube/LubedImmuneComponent.cs @@ -0,0 +1,14 @@ +using Robust.Shared.GameStates; + +namespace Content.Shared.Lube; + +/// +/// This component indicates that an entity ignores the on items. +/// +// Careful adding this to player content! It has strong design implications! +[RegisterComponent, NetworkedComponent] +[Access(typeof(LubedSystem))] +public sealed partial class LubedImmuneComponent : Component +{ + +} diff --git a/Content.Shared/Lube/LubedSystem.cs b/Content.Shared/Lube/LubedSystem.cs index 4c361d8278..2d870dabe3 100644 --- a/Content.Shared/Lube/LubedSystem.cs +++ b/Content.Shared/Lube/LubedSystem.cs @@ -1,5 +1,6 @@ using Content.Shared.Hands; using Content.Shared.IdentityManagement; +using Content.Shared.Inventory; using Content.Shared.NameModifier.EntitySystems; using Content.Shared.Popups; using Content.Shared.Throwing; @@ -17,31 +18,54 @@ public sealed partial class LubedSystem : EntitySystem [Dependency] private SharedTransformSystem _transform = default!; [Dependency] private ThrowingSystem _throwing = default!; - public override void Initialize() - { - base.Initialize(); - - SubscribeLocalEvent(OnInit); - SubscribeLocalEvent(OnHandPickUp); - SubscribeLocalEvent(OnRefreshNameModifiers); - } - + [SubscribeLocalEvent] private void OnInit(Entity ent, ref ComponentInit args) { _nameMod.RefreshNameModifiers(ent.Owner); } + [SubscribeLocalEvent] private void OnHandPickUp(Entity ent, ref BeforeGettingEquippedHandEvent args) { - var user = args.User; + PerformLubedEffect(ent, args.User, out var cancelHandPickup); + args.Cancelled = cancelHandPickup; + } + + [SubscribeLocalEvent] + private void OnRefreshNameModifiers(Entity ent, ref RefreshNameModifiersEvent args) + { + if (ent.Comp.SlipsLeft > 0) // The component is removed deferred, so it might still exist when we refresh. + args.AddModifier("lubed-name-prefix"); + } + + [SubscribeLocalEvent] + private void OnGluedEffectAttemptEvent(Entity entity, ref LubedEffectAttemptEvent args) + { + args.Cancelled = true; + } + + [SubscribeLocalEvent] + private void OnGluedEffectAttemptEvent(Entity entity, ref InventoryRelayedEvent args) + { + OnGluedEffectAttemptEvent(entity, ref args.Args); + } + + public void PerformLubedEffect(Entity ent, EntityUid user, out bool cancelHandPickup) + { + cancelHandPickup = false; + + var attemptEv = new LubedEffectAttemptEvent(); + RaiseLocalEvent(user, ref attemptEv); + if (attemptEv.Cancelled) + return; // Throwing is not predicted yet, so we don't want to predict setting the coordinates either, or it will look weird. if (_net.IsServer) { - args.Cancelled = true; + cancelHandPickup = true; _transform.SetCoordinates(ent, Transform(user).Coordinates); _transform.AttachToGridOrMap(ent); - _throwing.TryThrow(ent, _random.NextVector2(), baseThrowSpeed: ent.Comp.SlipStrength); + _throwing.TryThrow(ent, _random.NextVector2(), baseThrowSpeed: ent.Comp.SlipStrength, user: user); _popup.PopupEntity(Loc.GetString("lube-slip", ("target", Identity.Entity(ent, EntityManager))), user, user, PopupType.MediumCaution); } @@ -53,10 +77,18 @@ public sealed partial class LubedSystem : EntitySystem _nameMod.RefreshNameModifiers(ent.Owner); } } - - private void OnRefreshNameModifiers(Entity ent, ref RefreshNameModifiersEvent args) - { - if (ent.Comp.SlipsLeft > 0) // The component is removed deferred, so it might still exist when we refresh. - args.AddModifier("lubed-name-prefix"); - } +} + +/// +/// Raised on an entity to determine if it will be affected by a lubed item or not. +/// +[ByRefEvent] +public record struct LubedEffectAttemptEvent() : IInventoryRelayEvent +{ + public SlotFlags TargetSlots { get; } = SlotFlags.GLOVES; + + /// + /// If true, prevents the effect from being applied. + /// + public bool Cancelled; } diff --git a/Resources/Prototypes/Entities/Mobs/Player/admin_ghost.yml b/Resources/Prototypes/Entities/Mobs/Player/admin_ghost.yml index 1cd6a4fb35..8a2715fff8 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/admin_ghost.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/admin_ghost.yml @@ -111,6 +111,8 @@ - type: BypassInteractionChecks - type: ExplosionResistance damageCoefficient: 0 + - type: GluedImmune + - type: LubedImmune - type: entity abstract: true From f89513d4d468f8afaf36d44fcc116380fd17d0a9 Mon Sep 17 00:00:00 2001 From: Tobias Berger Date: Thu, 16 Jul 2026 17:30:34 +0200 Subject: [PATCH 028/108] Update nix flake (#44417) Update flake --- flake.lock | 42 ++++-------------------------------------- flake.nix | 37 +++++++++++++++++++++++++------------ shell.nix | 16 ++++++++-------- 3 files changed, 37 insertions(+), 58 deletions(-) diff --git a/flake.lock b/flake.lock index 565bff53e8..f0c8d51753 100644 --- a/flake.lock +++ b/flake.lock @@ -1,59 +1,25 @@ { "nodes": { - "flake-utils": { - "inputs": { - "systems": "systems" - }, - "locked": { - "lastModified": 1731533236, - "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, "nixpkgs": { "locked": { - "lastModified": 1765890948, - "narHash": "sha256-Xe6fZzDS8uy9f17Pv6NEeBS9R6MFyuepbQUy6Xq/wH0=", + "lastModified": 1782745641, + "narHash": "sha256-d1Uqn692SLRy743Gy1UTopaBBCAsgNbL9lmb03BxMTw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "f92e917d0cefd3eca9d56ae25d689da841a989fd", + "rev": "8cb14136bb517eba32a565a682861eef55c45a06", "type": "github" }, "original": { "owner": "NixOS", - "ref": "release-25.11", + "ref": "release-26.05", "repo": "nixpkgs", "type": "github" } }, "root": { "inputs": { - "flake-utils": "flake-utils", "nixpkgs": "nixpkgs" } - }, - "systems": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } } }, "root": "root", diff --git a/flake.nix b/flake.nix index 532b73d519..b75aa3dcc2 100644 --- a/flake.nix +++ b/flake.nix @@ -1,22 +1,35 @@ { description = "Development environment for Space Station 14"; - inputs.nixpkgs.url = "github:NixOS/nixpkgs/release-25.11"; - inputs.flake-utils.url = "github:numtide/flake-utils"; + inputs.nixpkgs.url = "github:NixOS/nixpkgs/release-26.05"; outputs = { self, nixpkgs, - flake-utils, }: - flake-utils.lib.eachDefaultSystem ( - system: - let - pkgs = nixpkgs.legacyPackages.${system}; - in - { - devShells.default = import ./shell.nix { inherit pkgs; }; - } - ); + let + supportedSystems = [ + "aarch64-linux" + "aarch64-darwin" + "x86_64-darwin" + "x86_64-linux" + ]; + forEachSupportedSystem = + f: + nixpkgs.lib.genAttrs supportedSystems ( + system: + f ({ + pkgs = nixpkgs.legacyPackages.${system}; + }) + ); + in + { + devShells = forEachSupportedSystem ( + { pkgs }: + { + default = import ./shell.nix { inherit pkgs; }; + } + ); + }; } diff --git a/shell.nix b/shell.nix index 887db5e1af..71674ca7d1 100644 --- a/shell.nix +++ b/shell.nix @@ -34,14 +34,14 @@ let libdrm expat libxkbcommon - xorg.libxcb - xorg.libX11 - xorg.libXcomposite - xorg.libXdamage - xorg.libXext - xorg.libXfixes - xorg.libXrandr - xorg.libxshmfence + libxcb + libX11 + libXcomposite + libXdamage + libXext + libXfixes + libXrandr + libxshmfence mesa alsa-lib pipewire From 886df832421f2d29ccd3b5d0dcba42ff7d104f1a Mon Sep 17 00:00:00 2001 From: Falcon Date: Thu, 16 Jul 2026 08:31:28 -0700 Subject: [PATCH 029/108] fix: GameDataScrounger treats ignored files as abstract (#44467) * fix: GameDataScrounger properly ignores ignore-list * refactor: GDC to treat ignored files as abstract * fix: use wizden's fix for windows * refactor: check ignoredDir first for perf and readability --- .../Utility/GameDataScrounger.cs | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/Content.IntegrationTests/Utility/GameDataScrounger.cs b/Content.IntegrationTests/Utility/GameDataScrounger.cs index bb190fbe21..feaaa9e930 100644 --- a/Content.IntegrationTests/Utility/GameDataScrounger.cs +++ b/Content.IntegrationTests/Utility/GameDataScrounger.cs @@ -169,17 +169,15 @@ public static partial class GameDataScrounger // Take a directory off the stack. var dir = explorationStack.Pop(); - if (ignoreList.Contains(Path.GetFullPath(dir))) - continue; // It's all abstract anyway. + var ignoredDir = ignoreList.Contains(Path.GetFullPath(dir)); explorationStack.AddRange(Directory.EnumerateDirectories(dir)); foreach (var file in Directory.EnumerateFiles(dir, "*.yml")) { - if (ignoreList.Contains(Path.GetFullPath(file))) - continue; // It's all abstract anyway. + var ignored = ignoredDir || ignoreList.Contains(Path.GetFullPath(file)); - foreach (var (kind, id) in IndexPrototypesIn(file)) + foreach (var (kind, id) in IndexPrototypesIn(file, ignored)) { // alternate universe where .net has rust's Entry api. if (!_prototypeIndex.TryGetValue(kind, out var list)) @@ -204,8 +202,9 @@ public static partial class GameDataScrounger /// yielding all (type, id) pairs. /// /// The file to index. + /// Whether or not the file is ignored. This treats the entire file as abstract. /// An enumerator of all prototypes in the file, regardless of kind. - private static IEnumerable<(string type, string id)> IndexPrototypesIn(string file) + private static IEnumerable<(string type, string id)> IndexPrototypesIn(string file, bool ignored = false) { var stream = new YamlStream(); @@ -223,7 +222,7 @@ public static partial class GameDataScrounger var id = entryMapping[IdNode]; var type = entryMapping[TypeNode]; - var @abstract = false; + var @abstract = ignored; if (entryMapping.TryGetNode("abstract", out YamlScalarNode? abstractNode)) { // TODO: This technically will exclude prototypes that use the abstract field for their own stuff, From e8e60ee14fcb8867a47616ec1c7c902363ea6b3f Mon Sep 17 00:00:00 2001 From: Mace Date: Thu, 16 Jul 2026 10:50:32 -0500 Subject: [PATCH 030/108] Update SlowOnDamageSystem.cs (#44639) Changed the slowdown examine to not be inverted, so 0.25 is actually 25% and 0.75 is 75% and etc. --- Content.Shared/Damage/Systems/SlowOnDamageSystem.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Content.Shared/Damage/Systems/SlowOnDamageSystem.cs b/Content.Shared/Damage/Systems/SlowOnDamageSystem.cs index 0bc98cd181..df1374ecd8 100644 --- a/Content.Shared/Damage/Systems/SlowOnDamageSystem.cs +++ b/Content.Shared/Damage/Systems/SlowOnDamageSystem.cs @@ -78,7 +78,7 @@ public sealed partial class SlowOnDamageSystem : EntitySystem private void OnExamined(Entity ent, ref ExaminedEvent args) { - var msg = Loc.GetString("slow-on-damage-modifier-examine", ("mod", (1 - ent.Comp.Modifier) * 100)); + var msg = Loc.GetString("slow-on-damage-modifier-examine", ("mod", ent.Comp.Modifier * 100)); args.PushMarkup(msg); } From f693bf598ea77a11a0582a2d494f43f4eb2f3660 Mon Sep 17 00:00:00 2001 From: Whatstone <166147148+whatston3@users.noreply.github.com> Date: Thu, 16 Jul 2026 13:25:31 -0400 Subject: [PATCH 031/108] Hotfix: move construction condition from BaseUtility to surveillance camera (#44693) hotfix: camera against wall, baseutility is not --- Resources/Prototypes/Recipes/Construction/utilities.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Resources/Prototypes/Recipes/Construction/utilities.yml b/Resources/Prototypes/Recipes/Construction/utilities.yml index a12e9cf315..ea63259693 100644 --- a/Resources/Prototypes/Recipes/Construction/utilities.yml +++ b/Resources/Prototypes/Recipes/Construction/utilities.yml @@ -4,9 +4,6 @@ id: BaseUtility category: construction-category-utilities placementMode: SnapgridCenter - conditions: - - !type:AgainstWall - offset: 0 # expects a wall to the north when the camera is in its north facing - type: construction abstract: true @@ -23,6 +20,9 @@ id: camera graph: SurveillanceCamera targetNode: camera + conditions: + - !type:AgainstWall + offset: 0 # expects a wall to the north when the camera is in its north facing - type: construction parent: BaseUtilityWallmount From b42bbebc3c337c4f5e89a61aa04d5cc9f4733b38 Mon Sep 17 00:00:00 2001 From: Princess Cheeseballs <66055347+Princess-Cheeseballs@users.noreply.github.com> Date: Thu, 16 Jul 2026 10:25:54 -0700 Subject: [PATCH 032/108] Fix Shield Localization Text (#44694) cghdghjkghdjaidgjshkagdfhjki --- Resources/Locale/en-US/blocking/blocking-examine.ftl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Resources/Locale/en-US/blocking/blocking-examine.ftl b/Resources/Locale/en-US/blocking/blocking-examine.ftl index 19cf58d4c3..cafb8372ef 100644 --- a/Resources/Locale/en-US/blocking/blocking-examine.ftl +++ b/Resources/Locale/en-US/blocking/blocking-examine.ftl @@ -2,8 +2,8 @@ blocking-examinable-verb-text = Protection blocking-examinable-verb-message = Examine the protection values. blocking-fraction = It blocks [color=lightblue]{$value}%[/color] of incoming damage and: -blocking-coefficient-value = - It takes [color=lightblue]{$value}%[/color] of [color=yellow]{$type}[/color] damage. -blocking-reduction-value = - It takes [color=lightblue]{$value}[/color] less [color=yellow]{$type}[/color] damage. +blocking-coefficient-value = - It blocks up to [color=lightblue]{$value}%[/color] [color=yellow]{$type}[/color] damage. +blocking-reduction-value = - It blocks up to [color=lightblue]{$value}[/color] [color=yellow]{$type}[/color] damage. # Shown when examining the shield. Each entry represents the shield's health condition comp-shield-damaged-1 = It looks fully intact. From 5ac9ade5503b4296a60b4cb719cc00588c655dee Mon Sep 17 00:00:00 2001 From: Sir Warock <67167466+SirWarock@users.noreply.github.com> Date: Thu, 16 Jul 2026 19:50:07 +0200 Subject: [PATCH 033/108] Fix DisposalPipe Self Inheritance (#44692) * Fix * Review --- Resources/Prototypes/Recipes/Construction/utilities.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/Prototypes/Recipes/Construction/utilities.yml b/Resources/Prototypes/Recipes/Construction/utilities.yml index ea63259693..c8dd2a5f79 100644 --- a/Resources/Prototypes/Recipes/Construction/utilities.yml +++ b/Resources/Prototypes/Recipes/Construction/utilities.yml @@ -82,7 +82,7 @@ targetNode: mailing_unit - type: construction - parent: DisposalPipe + parent: BaseUtility id: DisposalPipe graph: DisposalPipe targetNode: pipe From a1f62972530cbc2f63d7d66abdb902d9a74e40a6 Mon Sep 17 00:00:00 2001 From: ConstantlyConfused <67894661+Eternally-Confused@users.noreply.github.com> Date: Thu, 16 Jul 2026 12:12:45 -0600 Subject: [PATCH 034/108] Add a missing localization string for (most) hair (#44695) * fix mixing localization for vox hair * add missing localization for human facial hair * add missing localization for human hair * add missing localization for vulp hair & beards * spacing, for readability * fix mild mistakes --- .../en-US/accessories/human-facial-hair.ftl | 69 +++ .../Locale/en-US/accessories/human-hair.ftl | 402 ++++++++++++++++++ .../en-US/accessories/vox-facial-hair.ftl | 13 + .../Locale/en-US/accessories/vox-hair.ftl | 57 +++ Resources/Locale/en-US/markings/vulpkanin.ftl | 50 +++ 5 files changed, 591 insertions(+) diff --git a/Resources/Locale/en-US/accessories/human-facial-hair.ftl b/Resources/Locale/en-US/accessories/human-facial-hair.ftl index cd8865d02f..5689f6b0d4 100644 --- a/Resources/Locale/en-US/accessories/human-facial-hair.ftl +++ b/Resources/Locale/en-US/accessories/human-facial-hair.ftl @@ -1,35 +1,104 @@ marking-HumanFacialHairAbe = Beard (Abraham Lincoln) +marking-HumanFacialHairAbe-abe = Beard (Abraham Lincoln) + marking-HumanFacialHairBrokenman = Beard (Broken Man) +marking-HumanFacialHairBrokenman-brokenman = Beard (Broken Man) + marking-HumanFacialHairChin = Beard (Chinstrap) +marking-HumanFacialHairChin-chin = Beard (Chinstrap) + marking-HumanFacialHairDwarf = Beard (Dwarf) +marking-HumanFacialHairDwarf-dwarf = Beard (Dwarf) + marking-HumanFacialHairFullbeard = Beard (Full) +marking-HumanFacialHairFullbeard-fullbeard = Beard (Full) + marking-HumanFacialHairCroppedfullbeard = Beard (Cropped Fullbeard) +marking-HumanFacialHairCroppedfullbeard-croppedfullbeard = Beard (Cropped Fullbeard) + marking-HumanFacialHairGt = Beard (Goatee) +marking-HumanFacialHairGt-gt = Beard (Goatee) + marking-HumanFacialHairHip = Beard (Hipster) +marking-HumanFacialHairHip-hip = Beard (Hipster) + marking-HumanFacialHairJensen = Beard (Jensen) +marking-HumanFacialHairJensen-jensen = Beard (Jensen) + marking-HumanFacialHairNeckbeard = Beard (Neckbeard) +marking-HumanFacialHairNeckbeard-neckbeard = Beard (Neckbeard) + marking-HumanFacialHairWise = Beard (Very Long) +marking-HumanFacialHairWise-wise = Beard (Very Long) + marking-HumanFacialHairMuttonmus = Beard (Muttonmus) +marking-HumanFacialHairMuttonmus-muttonmus = Beard (Muttonmus) + marking-HumanFacialHairMartialartist = Beard (Martial Artist) +marking-HumanFacialHairMartialartist-martialartist = Beard (Martial Artist) + marking-HumanFacialHairChinlessbeard = Beard (Chinless Beard) +marking-HumanFacialHairChinlessbeard-chinlessbeard = Beard (Chinless Beard) + marking-HumanFacialHairMoonshiner = Beard (Moonshiner) +marking-HumanFacialHairMoonshiner-moonshiner = Beard (Moonshiner) + marking-HumanFacialHairLongbeard = Beard (Long) +marking-HumanFacialHairLongbeard-longbeard = Beard (Long) + marking-HumanFacialHairVolaju = Beard (Volaju) +marking-HumanFacialHairVolaju-volaju = Beard (Volaju) + marking-HumanFacialHair3oclock = Beard (Three o Clock Shadow) +marking-HumanFacialHair3oclock-3oclock = Beard (Three o Clock Shadow) + marking-HumanFacialHairFiveoclock = Beard (Five o Clock Shadow) +marking-HumanFacialHairFiveoclock-fiveoclock = Beard (Five o Clock Shadow) + marking-HumanFacialHair5oclockmoustache = Beard (Five o Clock Moustache) +marking-HumanFacialHair5oclockmoustache-5oclockmoustache = Beard (Five o Clock Moustache) + marking-HumanFacialHair7oclock = Beard (Seven o Clock Shadow) +marking-HumanFacialHair7oclock-7oclock = Beard (Seven o Clock Shadow) + marking-HumanFacialHair7oclockmoustache = Beard (Seven o Clock Moustache) +marking-HumanFacialHair7oclockmoustache-7oclockmoustache = Beard (Seven o Clock Moustache) + marking-HumanFacialHairMoustache = Moustache +marking-HumanFacialHairMoustache-moustache = Moustache + marking-HumanFacialHairPencilstache = Moustache (Pencilstache) +marking-HumanFacialHairPencilstache-pencilstache = Moustache (Pencilstache) + marking-HumanFacialHairSmallstache = Moustache (Smallstache) +marking-HumanFacialHairSmallstache-smallstache = Moustache (Smallstache) + marking-HumanFacialHairWalrus = Moustache (Walrus) +marking-HumanFacialHairWalrus-walrus = Moustache (Walrus) + marking-HumanFacialHairFumanchu = Moustache (Fu Manchu) +marking-HumanFacialHairFumanchu-fumanchu = Moustache (Fu Manchu) + marking-HumanFacialHairHogan = Moustache (Hulk Hogan) +marking-HumanFacialHairHogan-hogan = Moustache (Hulk Hogan) + marking-HumanFacialHairSelleck = Moustache (Selleck) +marking-HumanFacialHairSelleck-selleck = Moustache (Selleck) + marking-HumanFacialHairChaplin = Moustache (Square) +marking-HumanFacialHairChaplin-chaplin = Moustache (Square) + marking-HumanFacialHairVandyke = Moustache (Van Dyke) +marking-HumanFacialHairVandyke-vandyke = Moustache (Van Dyke) + marking-HumanFacialHairWatson = Moustache (Watson) +marking-HumanFacialHairWatson-watson = Moustache (Watson) + marking-HumanFacialHairElvis = Sideburns (Elvis) +marking-HumanFacialHairElvis-elvis = Sideburns (Elvis) + marking-HumanFacialHairMutton = Sideburns (Mutton Chops) +marking-HumanFacialHairMutton-mutton = Sideburns (Mutton Chops) + marking-HumanFacialHairSideburn = Sideburns +marking-HumanFacialHairSideburn-sideburn = Sideburns diff --git a/Resources/Locale/en-US/accessories/human-hair.ftl b/Resources/Locale/en-US/accessories/human-hair.ftl index 1b4a7dec8d..ec2ba68492 100644 --- a/Resources/Locale/en-US/accessories/human-hair.ftl +++ b/Resources/Locale/en-US/accessories/human-hair.ftl @@ -1,209 +1,611 @@ marking-HumanHairAfro = Afro +marking-HumanHairAfro-afro = Afro + marking-HumanHairAfro2 = Afro 2 +marking-HumanHairAfro2-afro2 = Afro 2 + marking-HumanHairBigafro = Afro (Large) +marking-HumanHairBigafro-bigafro = Afro (Large) + marking-HumanHairAntenna = Ahoge +marking-HumanHairAntenna-antenna = Ahoge + marking-HumanHairBaby = Baby +marking-HumanHairBaby-baby = Baby + marking-HumanHairBalding = Balding Hair +marking-HumanHairBalding-e = Balding Hair + marking-HumanHairBedhead = Bedhead +marking-HumanHairBedhead-bedhead = Bedhead + marking-HumanHairBedheadv2 = Bedhead 2 +marking-HumanHairBedheadv2-bedheadv2 = Bedhead 2 + marking-HumanHairBedheadv3 = Bedhead 3 +marking-HumanHairBedheadv3-bedheadv3 = Bedhead 3 + marking-HumanHairLongBedhead = Long Bedhead +marking-HumanHairLongBedhead-long_bedhead = Long Bedhead + marking-HumanHairLongBedhead2 = Long Bedhead 2 +marking-HumanHairLongBedhead2-long_bedhead2 = Long Bedhead 2 + marking-HumanHairFloorlengthBedhead = Floorlength Bedhead +marking-HumanHairFloorlengthBedhead-floorlength_bedhead = Floorlength Bedhead + marking-HumanHairBeehive = Beehive +marking-HumanHairBeehive-beehive = Beehive + marking-HumanHairBeehivev2 = Beehive 2 +marking-HumanHairBeehivev2-beehivev2 = Beehive 2 + marking-HumanHairBob = Bob Hair +marking-HumanHairBob-bob = Bob Hair + marking-HumanHairBob2 = Bob Hair 2 +marking-HumanHairBob2-bob2 = Bob Hair 2 + marking-HumanHairBobcut = Bob Hair 3 +marking-HumanHairBobcut-bob3 = Bob Hair 3 + marking-HumanHairBob4 = Bob Hair 4 +marking-HumanHairBob4-bob4 = Bob Hair 4 + marking-HumanHairBob5 = Bob Hair 5 +marking-HumanHairBob5-bob5 = Bob Hair 5 + marking-HumanHairBobcurl = Bobcurl +marking-HumanHairBobcurl-bobcurl = Bobcurl + marking-HumanHairBoddicker = Boddicker +marking-HumanHairBoddicker-boddicker = Boddicker + marking-HumanHairBowlcut = Bowlcut +marking-HumanHairBowlcut-bowlcut = Bowlcut + marking-HumanHairBowlcut2 = Bowlcut 2 +marking-HumanHairBowlcut2-bowlcut2 = Bowlcut 2 + marking-HumanHairBraid = Braid (Floorlength) +marking-HumanHairBraid-braid = Braid (Floorlength) + marking-HumanHairBraided = Braided +marking-HumanHairBraided-braided = Braided + marking-HumanHairBraidfront = Braided Front +marking-HumanHairBraidfront-braidfront = Braided Front + marking-HumanHairBraid2 = Braid (High) +marking-HumanHairBraid2-braid2 = Braid (High) + marking-HumanHairHbraid = Braid (Low) +marking-HumanHairHbraid-hbraid = Braid (Low) + marking-HumanHairShortbraid = Braid (Short) +marking-HumanHairShortbraid-shortbraid = Braid (Short) + marking-HumanHairBraidtail = Braided Tail +marking-HumanHairBraidtail-braidtail = Braided Tail + marking-HumanHairBun = Bun Head +marking-HumanHairBun-bun = Bun Head + marking-HumanHairBunhead2 = Bun Head 2 +marking-HumanHairBunhead2-bunhead2 = Bun Head 2 + marking-HumanHairBun3 = Bun Head 3 +marking-HumanHairBun3-bunhead3 = Bun Head 3 + marking-HumanHairLargebun = Bun (Large) +marking-HumanHairLargebun-largebun = Bun (Large) + marking-HumanHairManbun = Bun (Manbun) +marking-HumanHairManbun-manbun = Bun (Manbun) + marking-HumanHairTightbun = Bun (Tight) +marking-HumanHairTightbun-tightbun = Bun (Tight) + marking-HumanHairBusiness = Business Hair +marking-HumanHairBusiness-business = Business Hair + marking-HumanHairBusiness2 = Business Hair 2 +marking-HumanHairBusiness2-business2 = Business Hair 2 + marking-HumanHairBusiness3 = Business Hair 3 +marking-HumanHairBusiness3-business3 = Business Hair 3 + marking-HumanHairBusiness4 = Business Hair 4 +marking-HumanHairBusiness4-business4 = Business Hair 4 + marking-HumanHairBuzzcut = Buzzcut +marking-HumanHairBuzzcut-buzzcut = Buzzcut + marking-HumanHairCia = CIA +marking-HumanHairCia-cia = CIA + marking-HumanHairClassicAfro = Classic Afro +marking-HumanHairClassicAfro-classicafro = Classic Afro + marking-HumanHairClassicBigAfro = Classic Big Afro +marking-HumanHairClassicBigAfro-classicbigafro = Classic Big Afro + marking-HumanHairClassicBusiness = Classic Business Hair +marking-HumanHairClassicBusiness-classicbusiness = Classic Business Hair + marking-HumanHairClassicCia = Classic CIA +marking-HumanHairClassicCia-classiccia = Classic CIA + marking-HumanHairClassicCornrows2 = Classic Cornrows 2 +marking-HumanHairClassicCornrows2-classiccornrows2 = Classic Cornrows 2 + marking-HumanHairClassicFloorlengthBedhead = Classic Floorlength Bedhead +marking-HumanHairClassicFloorlengthBedhead-classicfloorlength_bedhead = Classic Floorlength Bedhead + marking-HumanHairClassicLong2 = Classic Long Hair 2 +marking-HumanHairClassicLong2-classiclong2 = Classic Long Hair 2 + marking-HumanHairClassicLong3 = Classic Long Hair 3 +marking-HumanHairClassicLong3-classiclong3 = Classic Long Hair 3 + marking-HumanHairClassicModern = Classic Modern +marking-HumanHairClassicModern-classicmodern = Classic Modern + marking-HumanHairClassicMulder = Classic Mulder +marking-HumanHairClassicMulder-classicmulder = Classic Mulder + marking-HumanHairClassicWisp = Classic Wisp +marking-HumanHairClassicWisp-classicwisp = Classic Wisp + marking-HumanHairCoffeehouse = Coffee House +marking-HumanHairCoffeehouse-coffeehouse = Coffee House + marking-HumanHairCombover = Combover +marking-HumanHairCombover-combover = Combover + marking-HumanHairCornrows = Cornrows +marking-HumanHairCornrows-cornrows = Cornrows + marking-HumanHairCornrows2 = Cornrows 2 +marking-HumanHairCornrows2-cornrows2 = Cornrows 2 + marking-HumanHairCornrowbun = Cornrow Bun +marking-HumanHairCornrowbun-cornrowbun = Cornrow Bun + marking-HumanHairCornrowbraid = Cornrow Braid +marking-HumanHairCornrowbraid-cornrowbraid = Cornrow Braid + marking-HumanHairCornrowtail = Cornrow Tail +marking-HumanHairCornrowtail-cornrowtail = Cornrow Tail + marking-HumanHairCrewcut = Crewcut +marking-HumanHairCrewcut-crewcut = Crewcut + marking-HumanHairCrewcut2 = Crewcut 2 +marking-HumanHairCrewcut2-crewcut2 = Crewcut 2 + marking-HumanHairCube = Cube +marking-HumanHairCube-cube = Cube + marking-HumanHairCurls = Curls +marking-HumanHairCurls-curls = Curls + marking-HumanHairC = Cut Hair +marking-HumanHairC-c = Cut Hair + marking-HumanHairDandypompadour = Dandy Pompadour +marking-HumanHairDandypompadour-dandypompadour = Dandy Pompadour + marking-HumanHairDevilock = Devil Lock +marking-HumanHairDevilock-devilock = Devil Lock + marking-HumanHairDoublebun = Double Bun +marking-HumanHairDoublebun-doublebun = Double Bun + marking-HumanHairDoublebunLong = Double Bun Long +marking-HumanHairDoublebunLong-doublebun_long = Double Bun Long + marking-HumanHairDreads = Dreadlocks +marking-HumanHairDreads-dreads = Dreadlocks + marking-HumanHairDrillruru = Drillruru +marking-HumanHairDrillruru-drillruru = Drillruru + marking-HumanHairDrillhairextended = Drill Hair (Extended) +marking-HumanHairDrillhairextended-drillhairextended = Drill Hair (Extended) + marking-HumanHairEmo = Emo +marking-HumanHairEmo-emo = Emo + marking-HumanHairEmofringe = Emo Fringe +marking-HumanHairEmofringe-emofringe = Emo Fringe + marking-HumanHairNofade = Fade (None) +marking-HumanHairNofade-nofade = Fade (None) + marking-HumanHairHighfade = Fade (High) +marking-HumanHairHighfade-highfade = Fade (High) + marking-HumanHairMedfade = Fade (Medium) +marking-HumanHairMedfade-medfade = Fade (Medium) + marking-HumanHairLowfade = Fade (Low) +marking-HumanHairLowfade-lowfade = Fade (Low) + marking-HumanHairBaldfade = Fade (Bald) +marking-HumanHairBaldfade-baldfade = Fade (Bald) + marking-HumanHairFeather = Feather +marking-HumanHairFeather-feather = Feather + marking-HumanHairFather = Father +marking-HumanHairFather-father = Father + marking-HumanHairSargeant = Flat Top +marking-HumanHairSargeant-sargeant = Flat Top + marking-HumanHairFlair = Flair +marking-HumanHairFlair-flair = Flair + marking-HumanHairBigflattop = Flat Top (Big) +marking-HumanHairBigflattop-bigflattop = Flat Top (Big) + marking-HumanHairFlow = Flow Hair +marking-HumanHairFlow-f = Flow Hair + marking-HumanHairGelled = Gelled Back +marking-HumanHairGelled-gelled = Gelled Back + marking-HumanHairGentle = Gentle +marking-HumanHairGentle-gentle = Gentle + marking-HumanHairHalfbang = Half-banged Hair +marking-HumanHairHalfbang-halfbang = Half-banged Hair + marking-HumanHairHalfbang2 = Half-banged Hair 2 +marking-HumanHairHalfbang2-halfbang2 = Half-banged Hair 2 + marking-HumanHairHalfshaved = Half-shaved +marking-HumanHairHalfshaved-halfshaved = Half-shaved + marking-HumanHairHedgehog = Hedgehog Hair +marking-HumanHairHedgehog-hedgehog = Hedgehog Hair + marking-HumanHairHimecut = Hime Cut +marking-HumanHairHimecut-himecut = Hime Cut + marking-HumanHairHimecut2 = Hime Cut 2 +marking-HumanHairHimecut2-himecut2 = Hime Cut 2 + marking-HumanHairShorthime = Hime Cut (Short) +marking-HumanHairShorthime-shorthime = Hime Cut (Short) + marking-HumanHairHimeup = Hime Updo +marking-HumanHairHimeup-himeup = Hime Updo + marking-HumanHairHitop = Hitop +marking-HumanHairHitop-hitop = Hitop + marking-HumanHairJade = Jade +marking-HumanHairJade-jade = Jade + marking-HumanHairJensen = Jensen Hair +marking-HumanHairJensen-jensen = Jensen Hair + marking-HumanHairJoestar = Joestar +marking-HumanHairJoestar-joestar = Joestar + marking-HumanHairKeanu = Keanu Hair +marking-HumanHairKeanu-keanu = Keanu Hair + marking-HumanHairKusanagi = Kusanagi Hair +marking-HumanHairKusanagi-kusanagi = Kusanagi Hair + marking-HumanHairLongBow = Long Bow +marking-HumanHairLongBow-longbow = Long Bow + marking-HumanHairLong = Long Hair 1 +marking-HumanHairLong-long = Long Hair 1 + marking-HumanHairLong2 = Long Hair 2 +marking-HumanHairLong2-long2 = Long Hair 2 + marking-HumanHairLong3 = Long Hair 3 +marking-HumanHairLong3-long3 = Long Hair 3 + marking-HumanHairLongWithBundles = Long With Bundles +marking-HumanHairLongWithBundles-longbundled = Long With Bundles + marking-HumanHairLongovereye = Long Over Eye marking-HumanHairLongovereye-longovereye = Primary marking-HumanHairLongovereye-longovereye_highlight = Highlight + marking-HumanHairLbangs = Long Bangs +marking-HumanHairLbangs-lbangs = Long Bangs + marking-HumanHairLongemo = Long Emo +marking-HumanHairLongemo-longemo = Long Emo + marking-HumanHairLongfringe = Long Fringe +marking-HumanHairLongfringe-longfringe = Long Fringe + marking-HumanHairLongsidepart = Long Side Part +marking-HumanHairLongsidepart-longsidepart = Long Side Part + marking-HumanHairMegaeyebrows = Mega Eyebrows +marking-HumanHairMegaeyebrows-megaeyebrows = Mega Eyebrows + marking-HumanHairMessy = Messy +marking-HumanHairMessy-messy = Messy + marking-HumanHairModern = Modern +marking-HumanHairModern-modern = Modern + marking-HumanHairMohawk = Mohawk +marking-HumanHairMohawk-d = Mohawk + marking-HumanHairNitori = Nitori +marking-HumanHairNitori-nitori = Nitori + marking-HumanHairReversemohawk = Mohawk (Reverse) +marking-HumanHairReversemohawk-reversemohawk = Mohawk (Reverse) + marking-HumanHairUnshavenMohawk = Mohawk (Unshaven) +marking-HumanHairUnshavenMohawk-unshaven_mohawk = Mohawk (Unshaven) + marking-HumanHairMulder = Mulder +marking-HumanHairMulder-mulder = Mulder + marking-HumanHairOdango = Odango +marking-HumanHairOdango-odango = Odango + marking-HumanHairOmbre = Ombre +marking-HumanHairOmbre-ombre = Ombre + marking-HumanHairOneshoulder = One Shoulder +marking-HumanHairOneshoulder-oneshoulder = One Shoulder + marking-HumanHairShortovereye = Over Eye +marking-HumanHairShortovereye-shortovereye = Over Eye + marking-HumanHairOxton = Oxton +marking-HumanHairOxton-oxton = Oxton + marking-HumanHairParted = Parted +marking-HumanHairParted-parted = Parted + marking-HumanHairPart = Parted (Side) +marking-HumanHairPart-part = Parted (Side) + marking-HumanHairKagami = Pigtails +marking-HumanHairKagami-kagami = Pigtails + marking-HumanHairPigtails = Pigtails 2 +marking-HumanHairPigtails-pigtails2 = Pigtails 2 + marking-HumanHairPigtails2 = Pigtails 3 +marking-HumanHairPigtails2-pigtails3 = Pigtails 3 + marking-HumanHairPixie = Pixie Cut +marking-HumanHairPixie-pixie = Pixie Cut + marking-HumanHairPompadour = Pompadour +marking-HumanHairPompadour-pompadour = Pompadour + marking-HumanHairBigpompadour = Pompadour (Big) +marking-HumanHairBigpompadour- = Pompadour (Big) + marking-HumanHairPonytail = Ponytail +marking-HumanHairPonytail-bigpompadour = Ponytail + marking-HumanHairPonytail2 = Ponytail 2 +marking-HumanHairPonytail2-ponytail2 = Ponytail 2 + marking-HumanHairPonytail3 = Ponytail 3 +marking-HumanHairPonytail3-ponytail3 = Ponytail 3 + marking-HumanHairPonytail4 = Ponytail 4 +marking-HumanHairPonytail4-ponytail4 = Ponytail 4 + marking-HumanHairPonytail5 = Ponytail 5 +marking-HumanHairPonytail5-ponytail5 = Ponytail 5 + marking-HumanHairPonytail6 = Ponytail 6 +marking-HumanHairPonytail6-ponytail6 = Ponytail 6 + marking-HumanHairPonytail7 = Ponytail 7 +marking-HumanHairPonytail7-ponytail7 = Ponytail 7 + marking-HumanHairHighponytail = Ponytail (High) +marking-HumanHairHighponytail-highponytail = Ponytail (High) + marking-HumanHairStail = Ponytail (Short) +marking-HumanHairStail-stail = Ponytail (Short) + marking-HumanHairLongstraightponytail = Ponytail (Long) +marking-HumanHairLongstraightponytail-longstraightponytail = Ponytail (Long) + marking-HumanHairCountry = Ponytail (Country) +marking-HumanHairCountry-country = Ponytail (Country) + marking-HumanHairFringetail = Ponytail (Fringe) +marking-HumanHairFringetail-fringetail = Ponytail (Fringe) + marking-HumanHairSidetail = Ponytail (Side) +marking-HumanHairSidetail-sidetail = Ponytail (Side) + marking-HumanHairSidetail2 = Ponytail (Side) 2 +marking-HumanHairSidetail2-sidetail2 = Ponytail (Side) 2 + marking-HumanHairSidetail3 = Ponytail (Side) 3 +marking-HumanHairSidetail3-sidetail3 = Ponytail (Side) 3 + marking-HumanHairSidetail4 = Ponytail (Side) 4 +marking-HumanHairSidetail4-sidetail4 = Ponytail (Side) 4 + marking-HumanHairSpikyponytail = Ponytail (Spiky) +marking-HumanHairSpikyponytail-spikyponytail = Ponytail (Spiky) + marking-HumanHairPoofy = Poofy +marking-HumanHairPoofy-poofy = Poofy + marking-HumanHairPulato = Pulato +marking-HumanHairPulato-pulato = Pulato + marking-HumanHairQuiff = Quiff +marking-HumanHairQuiff-quiff = Quiff + marking-HumanHairRonin = Ronin +marking-HumanHairRonin-ronin = Ronin + marking-HumanHairShaped = Shaped +marking-HumanHairShaped-shaped = Shaped + marking-HumanHairShaved = Shaved +marking-HumanHairShaved-shaved = Shaved + marking-HumanHairShavedpart = Shaved Part +marking-HumanHairShavedpart-shavedpart = Shaved Part + marking-HumanHairShortbangs = Short Bangs +marking-HumanHairShortbangs-shortbangs = Short Bangs + marking-HumanHairA = Short Hair +marking-HumanHairA-a = Short Hair + marking-HumanHairShorthair2 = Short Hair 2 +marking-HumanHairShorthair2-shorthair2 = Short Hair 2 + marking-HumanHairShorthair3 = Short Hair 3 +marking-HumanHairShorthair3-shorthair3 = Short Hair 3 + marking-HumanHairD = Short Hair 4 +marking-HumanHairD-d = Short Hair 4 + marking-HumanHairE = Short Hair 5 +marking-HumanHairE-e = Short Hair 5 + marking-HumanHairF = Short Hair 6 +marking-HumanHairF-f = Short Hair 6 + marking-HumanHairShorthairg = Short Hair 7 +marking-HumanHairShorthairg-shorthairg = Short Hair 7 + marking-HumanHair80s = Short Hair 80s +marking-HumanHair80s-80s = Short Hair 80s + marking-HumanHairRosa = Short Hair Rosa +marking-HumanHairRosa-rosa = Short Hair Rosa + marking-HumanHairB = Shoulder-length Hair +marking-HumanHairB-b = Shoulder-length Hair + marking-HumanHairBAlt = Shoulder-length Hair (Over eye) +marking-HumanHairBAlt-b_alt = Shoulder-length Hair (Over eye) + marking-HumanHairSidecut = Sidecut +marking-HumanHairSidecut-sidecut = Sidecut + marking-HumanHairSkinhead = Skinhead +marking-HumanHairSkinhead-skinhead = Skinhead + marking-HumanHairProtagonist = Slightly Long Hair +marking-HumanHairProtagonist-protagonist = Slightly Long Hair + marking-HumanHairSpikey = Spiky +marking-HumanHairSpikey-spikey = Spiky + marking-HumanHairSpiky = Spiky 2 +marking-HumanHairSpiky-spiky = Spiky 2 + marking-HumanHairSpiky2 = Spiky 3 +marking-HumanHairSpiky2-spiky2 = Spiky 3 + marking-HumanHairSpookyLong = Spooky Long +marking-HumanHairSpookyLong-spookylong = Spooky Long + marking-HumanHairSwept = Swept Back Hair +marking-HumanHairSwept-swept = Swept Back Hair + marking-HumanHairSwept2 = Swept Back Hair 2 +marking-HumanHairSwept2-swept2 = Swept Back Hair 2 + marking-HumanHairTailed = Tailed +marking-HumanHairTailed-tailed = Tailed + marking-HumanHairThinning = Thinning +marking-HumanHairThinning-thinning = Thinning + marking-HumanHairThinningfront = Thinning (Front) +marking-HumanHairThinningfront-thinningfront = Thinning (Front) + marking-HumanHairThinningrear = Thinning (Rear) +marking-HumanHairThinningrear-thinningrear = Thinning (Rear) + marking-HumanHairTopknot = Topknot +marking-HumanHairTopknot-topknot = Topknot + marking-HumanHairTressshoulder = Tress Shoulder +marking-HumanHairTressshoulder-tressshoulder = Tress Shoulder + marking-HumanHairTrimmed = Trimmed +marking-HumanHairTrimmed-trimmed = Trimmed + marking-HumanHairTrimflat = Trim Flat +marking-HumanHairTrimflat-trimflat = Trim Flat + marking-HumanHairTwintail = Twintails +marking-HumanHairTwintail-twintail = Twintails + marking-HumanHairTwoStrands = Two Strands +marking-HumanHairTwoStrands-twostrands = Two Strands + marking-HumanHairUndercut = Undercut +marking-HumanHairUndercut-undercut = Undercut + marking-HumanHairUndercutleft = Undercut Left +marking-HumanHairUndercutleft-undercutleft = Undercut Left + marking-HumanHairUndercutright = Undercut Right +marking-HumanHairUndercutright-undercutright = Undercut Right + marking-HumanHairUneven = Uneven +marking-HumanHairUneven-uneven = Uneven + marking-HumanHairUnkept = Unkept +marking-HumanHairUnkept-unkept = Unkept + marking-HumanHairUpdo = Updo +marking-HumanHairUpdo-updo = Updo + marking-HumanHairVlong = Very Long Hair +marking-HumanHairVlong-vlong = Very Long Hair + marking-HumanHairLongest = Very Long Hair 2 +marking-HumanHairLongest-longest = Very Long Hair 2 + marking-HumanHairLongest2 = Very Long Over Eye marking-HumanHairLongest2-longest2 = Primary marking-HumanHairLongest2-longovereye_highlight = Highlight + marking-HumanHairVeryshortovereyealternate = Very Short (Over Eye) +marking-HumanHairVeryshortovereyealternate- = Very Short (Over Eye) + marking-HumanHairVlongfringe = Very Long with Fringe +marking-HumanHairVlongfringe-vlongfringe = Very Long with Fringe + marking-HumanHairVolaju = Volaju +marking-HumanHairVolaju-volaju = Volaju + marking-HumanHairWisp = Wisp +marking-HumanHairWisp-wisp = Wisp + marking-HumanHairLongWithBangs = Long With Bangs +marking-HumanHairLongWithBangs-longwithbangs = Long With Bangs + marking-HumanHairOverEyePigtail = Pigtail (Over Eye) +marking-HumanHairOverEyePigtail-overeyepigtail = Pigtail (Over Eye) + marking-HumanHairTerminal = Terminal marking-HumanHairTerminal-terminal = Primary marking-HumanHairTerminal-terminal_highlight = Highlight diff --git a/Resources/Locale/en-US/accessories/vox-facial-hair.ftl b/Resources/Locale/en-US/accessories/vox-facial-hair.ftl index 884edbb202..58688fb6ca 100644 --- a/Resources/Locale/en-US/accessories/vox-facial-hair.ftl +++ b/Resources/Locale/en-US/accessories/vox-facial-hair.ftl @@ -1,7 +1,20 @@ marking-VoxFacialHairBeard = Vox Beard (Quills) +marking-VoxFacialHairBeard-beard_s = Vox Beard (Quills) + marking-VoxFacialHairColonel = Vox Moustache (Colonel) +marking-VoxFacialHairColonel-colonel_s = Vox Moustache (Colonel) + marking-VoxFacialHairFu = Vox Moustache (Quill Fu) +marking-VoxFacialHairFu-fu_s = Vox Moustache (Quill Fu) + marking-VoxFacialHairNeck = Vox Beard (Neck Quills) +marking-VoxFacialHairNeck-neck_s = Vox Beard (Neck Quills) + marking-VoxFacialHairMane = Vox Beard (Mane) +marking-VoxFacialHairMane-mane_s = Vox Beard (Mane) + marking-VoxFacialHairManeSmall = Vox Beard (Small Mane) +marking-VoxFacialHairManeSmall-manesmall_s = Vox Beard (Small Mane) + marking-VoxFacialHairTufts = Vox Sideburns (Tufts) +marking-VoxFacialHairTufts-tuft_s = Vox Sideburns (Tufts) diff --git a/Resources/Locale/en-US/accessories/vox-hair.ftl b/Resources/Locale/en-US/accessories/vox-hair.ftl index a0b2d74aec..6e35be2305 100644 --- a/Resources/Locale/en-US/accessories/vox-hair.ftl +++ b/Resources/Locale/en-US/accessories/vox-hair.ftl @@ -1,29 +1,86 @@ marking-VoxHairAfro = Vox Afro +marking-VoxHairAfro-afro_s = Vox Afro + marking-VoxHairBraids = Vox Braids +marking-VoxHairBraids-braid_s = Vox Braids + marking-VoxHairCrestedQuills = Vox Crested Quills +marking-VoxHairCrestedQuills-crestedquills_s = Vox Crested Quills + marking-VoxHairEmperorQuills = Vox Emperor Quills +marking-VoxHairEmperorQuills-emperorquills_s = Vox Emperor Quills + marking-VoxHairFlowing = Vox Flowing +marking-VoxHairFlowing-flowing_s = Vox Flowing + marking-VoxHairHawk = Vox Hawk +marking-VoxHairHawk-hawk_s = Vox Hawk + marking-VoxHairHorns = Vox Horns +marking-VoxHairHorns-horns_s = Vox Horns + marking-VoxHairKeelQuills = Vox Keel Quills +marking-VoxHairKeelQuills-keelquills_s = Vox Keel Quills + marking-VoxHairKeetQuills = Vox Keet Quills +marking-VoxHairKeetQuills-keetquills_s = Vox Keet Quills + marking-VoxHairKingly = Vox Kingly +marking-VoxHairKingly-kingly_s = Vox Kingly + marking-VoxHairLongBraid = Vox Long Braid +marking-VoxHairLongBraid-long_braid_s = Vox Long Braid + marking-VoxHairMange = Vox Mange +marking-VoxHairMange-mange_s = Vox Mange + marking-VoxHairMohawk = Vox Mohawk +marking-VoxHairMohawk-mohawk_s = Vox Mohawk + marking-VoxHairNights = Vox Nights +marking-VoxHairNights-nights_s = Vox Nights + marking-VoxHairPony = Vox Pony +marking-VoxHairPony-ponytail_s = Vox Pony + marking-VoxHairRazorClipped = Vox Razor (Clipped) +marking-VoxHairRazorClipped-razor_clipped_s = Vox Razor (Clipped) + marking-VoxHairRazor = Vox Razor +marking-VoxHairRazor-razor_s = Vox Razor + marking-VoxHairSortBraid = Vox Short Braid +marking-VoxHairSortBraid-short_braid_s = Vox Short Braid + marking-VoxHairShortQuills = Vox Short Quills +marking-VoxHairShortQuills-shortquills_s = Vox Short Quills + marking-VoxHairSurf = Vox Surf +marking-VoxHairSurf-surf_s = Vox Surf + marking-VoxHairTielQuills = Vox Tiel Quills +marking-VoxHairTielQuills-tielquills_s = Vox Tiel Quills + marking-VoxHairYasu = Vox Yasuhiro +marking-VoxHairYasu-yasu_s = Vox Yasuhiro + marking-VoxHairWiseBraid = Vox Wise Braids +marking-VoxHairWiseBraid-wise_braid_s = Vox Wise Braids + marking-VoxHairSpotty = Vox Spotty Quills +marking-VoxHairSpotty-spotty_s = Vox Spotty Quills + marking-VoxHairMadScientist = Vox Mad Scientist +marking-VoxHairMadScientist-mad_scientist_s = Vox Mad Scientist + marking-VoxHairHedgehog = Vox Hedgehog +marking-VoxHairHedgehog-hedgehog_s = Vox Hedgehog + marking-VoxHairBushy = Vox Bushy Quills +marking-VoxHairBushy-bushy_s = Vox Bushy Quills + marking-VoxHairSlick = Vox Slick Quills +marking-VoxHairSlick-slick_s = Vox Slick Quills + marking-VoxHairCatfish = Vox Catfish +marking-VoxHairCatfish-catfish_s = Vox Catfish diff --git a/Resources/Locale/en-US/markings/vulpkanin.ftl b/Resources/Locale/en-US/markings/vulpkanin.ftl index 59b90aef8d..c473aa51d6 100644 --- a/Resources/Locale/en-US/markings/vulpkanin.ftl +++ b/Resources/Locale/en-US/markings/vulpkanin.ftl @@ -221,32 +221,82 @@ marking-VulpPointsSharpFootRight-points_sharp-foot-r = Sharp # Hair marking-VulpHairAdhara = Adhara +marking-VulpHairAdhara-adhara = Adhara + marking-VulpHairAnita = Anita +marking-VulpHairAnita-anita = Anita + marking-VulpHairApollo = Apollo +marking-VulpHairApollo-apollo = Apollo + marking-VulpHairBelle = Belle +marking-VulpHairBelle-belle = Belle + marking-VulpHairBraided = Braided Hair +marking-VulpHairBraided-braided = Braided Hair + marking-VulpHairBun = Bun +marking-VulpHairBun-bun = Bun + marking-VulpHairCleanCut = Clean Cut +marking-VulpHairCleanCut-clean_cut = Clean Cut + marking-VulpHairCurl = Curl +marking-VulpHairCurl-curl = Curl + marking-VulpHairHawk = Hawk +marking-VulpHairHawk-hawk = Hawk + marking-VulpHairJagged = Jagged +marking-VulpHairJagged-jagged = Jagged + marking-VulpHairJeremy = Jeremy +marking-VulpHairJeremy-jeremy = Jeremy + marking-VulpHairKajam = Kajam +marking-VulpHairKajam-kajam = Kajam + marking-VulpHairKeid = Keid +marking-VulpHairKeid-keid = Keid + marking-VulpHairKleeia = Kleeia +marking-VulpHairKleeia-kleeia = Kleeia + marking-VulpHairMizar = Mizar +marking-VulpHairMizar-mizar = Mizar + marking-VulpHairPunkBraided = Punk Braided +marking-VulpHairPunkBraided-punkbraided = Punk Braided + marking-VulpHairRaine = Raine +marking-VulpHairRaine-raine = Raine + marking-VulpHairRough = Rough +marking-VulpHairRough-rough = Rough + marking-VulpHairShort = Short Hair +marking-VulpHairShort-short = Short Hair + marking-VulpHairShort2 = Short Hair 2 +marking-VulpHairShort2-short2 = Short Hair 2 + marking-VulpHairSpike = Spike +marking-VulpHairSpike-spike = Spike # Facial Hair marking-VulpFacialHairRuff = Ruff +marking-VulpFacialHairRuff-ruff = Ruff + marking-VulpFacialHairElder = Elder +marking-VulpFacialHairElder-elder = Elder + marking-VulpFacialHairElderChin = Elder Chin +marking-VulpFacialHairElderChin-elder_chin = Elder Chin + marking-VulpFacialHairKita = Kita +marking-VulpFacialHairKita-kita = Kita + marking-VulpFacialHairGoatee = Beard (Snout Goatee) +marking-VulpFacialHairGoatee-goatee = Beard (Snout Goatee) From 57653e45513990b84f391ff253b558261990ace0 Mon Sep 17 00:00:00 2001 From: KeTuFaisPiKiNut <85769816+ketufaispikinut@users.noreply.github.com> Date: Thu, 16 Jul 2026 14:35:17 -0400 Subject: [PATCH 035/108] Zombie Ghost Role Fix (#44691) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * stub * Revert "stub" This reverts commit c1204b88d3ae1bbdca2deeb075a9dd0d6c529326. * PoC * As a successful member of society with a stable unflinching psyche and limitless drive, natural affinity for finance and domination, you have been selected, no, you have been effortlessly guided by divine (biological) trauma towards this moment. The gates of destiny fling open, and once again you're left standing on pulsating nothingness. A strobing headache of the soul. * i feel bad * Revert "PoC" This reverts commit fafafac77f9cbd62497376c70e078e0155cb7ef6. --------- Co-authored-by: nomdéraisonnablementlong --- .../Zombies/ZombieSystem.Transform.cs | 10 ++-------- Content.Server/Zombies/ZombieSystem.cs | 18 ++++++++++++++++++ 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/Content.Server/Zombies/ZombieSystem.Transform.cs b/Content.Server/Zombies/ZombieSystem.Transform.cs index f4984e4d0f..03cd0267c8 100644 --- a/Content.Server/Zombies/ZombieSystem.Transform.cs +++ b/Content.Server/Zombies/ZombieSystem.Transform.cs @@ -310,15 +310,9 @@ public sealed partial class ZombieSystem _npc.WakeNPC(target, htn); } - if (!HasComp(target)) //this specific component gives build test trouble so pop off, ig + if (!HasComp(target) && !hasMind) //this specific component gives build test trouble so pop off, ig { - //yet more hardcoding. Visit zombie.ftl for more information. - var ghostRole = EnsureComp(target); - EnsureComp(target); - ghostRole.RoleName = Loc.GetString("zombie-generic"); - ghostRole.RoleDescription = Loc.GetString("zombie-role-desc"); - ghostRole.RoleRules = Loc.GetString("zombie-role-rules"); - ghostRole.MindRoles.Add(MindRoleZombie); + MakeGhostRole(target); } if (TryComp(target, out var handsComp)) diff --git a/Content.Server/Zombies/ZombieSystem.cs b/Content.Server/Zombies/ZombieSystem.cs index 19b7e323d0..6c890536d0 100644 --- a/Content.Server/Zombies/ZombieSystem.cs +++ b/Content.Server/Zombies/ZombieSystem.cs @@ -26,6 +26,7 @@ using Content.Shared.Zombies; using Robust.Shared.Prototypes; using Robust.Shared.Random; using Robust.Shared.Timing; +using Content.Server.Ghost.Roles.Components; namespace Content.Server.Zombies { @@ -316,14 +317,31 @@ namespace Content.Server.Zombies } // Remove the role when getting cloned, getting gibbed and borged, or leaving the body via any other method. + // We also need to make sure the zombie is a ghost role because zombies with minds do not get a ghostrolecomponent private void OnMindRemoved(Entity ent, ref MindRemovedMessage args) { _role.MindRemoveRole((args.Mind.Owner, args.Mind.Comp)); + MakeGhostRole(ent.Owner); } private void OnAttemptConvert(Entity ent, ref AttemptConvertRevolutionaryEvent args) { args.Cancelled = true; } + + /// + /// Makes the target entity a zombie ghost role. Should only be fired when the entity does not have a mind. + /// + private void MakeGhostRole(EntityUid ent) + { + //yet more hardcoding. Visit zombie.ftl for more information. + var ghostRole = EnsureComp(ent); + EnsureComp(ent); + + ghostRole.RoleName = Loc.GetString("zombie-generic"); + ghostRole.RoleDescription = Loc.GetString("zombie-role-desc"); + ghostRole.RoleRules = Loc.GetString("zombie-role-rules"); + ghostRole.MindRoles.Add(MindRoleZombie); + } } } From 7882848ac9fd746154aa96d8c7413b7d7d3e5c24 Mon Sep 17 00:00:00 2001 From: Crude Oil <124208219+CroilBird@users.noreply.github.com> Date: Thu, 16 Jul 2026 22:04:52 +0200 Subject: [PATCH 036/108] add default skeleton sounds to skeleton species (#44689) * add default skeleton sounds to skeleton species * add voices too --- Resources/Prototypes/Species/skeleton.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Resources/Prototypes/Species/skeleton.yml b/Resources/Prototypes/Species/skeleton.yml index b018d33d7e..7f9b1409e8 100644 --- a/Resources/Prototypes/Species/skeleton.yml +++ b/Resources/Prototypes/Species/skeleton.yml @@ -8,3 +8,10 @@ femaleFirstNames: NamesSkeletonFirst dollPrototype: AppearanceSkeletonPerson skinColoration: TintedHues + defaultSoundsBySex: + - Skeleton + - Skeleton + - Skeleton + voices: + - Skeleton + - Skeleton From e15751bde2b64869e4b91f49af01e30137bd3b69 Mon Sep 17 00:00:00 2001 From: Jessica M Date: Thu, 16 Jul 2026 13:20:18 -0700 Subject: [PATCH 037/108] Nerf the volume of jaws of life/power drill/reagent grinder sound effects (#44697) * nerf jaws of life sound * reagent grinder * fix fail oops --- .../SharedReagentGrinderSystem.cs | 7 ++- .../Entities/Objects/Tools/jaws_of_life.yml | 50 +++++++++++++++---- .../Entities/Objects/Tools/tools.yml | 21 ++++++-- .../Structures/Machines/reagent_grinder.yml | 10 ++++ 4 files changed, 71 insertions(+), 17 deletions(-) diff --git a/Content.Shared/Kitchen/EntitySystems/SharedReagentGrinderSystem.cs b/Content.Shared/Kitchen/EntitySystems/SharedReagentGrinderSystem.cs index f553068f09..5b1f77abd4 100644 --- a/Content.Shared/Kitchen/EntitySystems/SharedReagentGrinderSystem.cs +++ b/Content.Shared/Kitchen/EntitySystems/SharedReagentGrinderSystem.cs @@ -267,8 +267,11 @@ public abstract partial class SharedReagentGrinderSystem : EntitySystem // Unpredicted because we don't have the user in the update loop // TODO: Make the audio API sane https://github.com/space-wizards/RobustToolbox/issues/6436 if (_net.IsServer) - ent.Comp.AudioStream = _audioSystem.PlayPvs(sound, ent, - AudioParams.Default.WithPitchScale(1 / ent.Comp.WorkTimeMultiplier))?.Entity; //slightly higher pitched + { + ent.Comp.AudioStream = _audioSystem + .PlayPvs(sound, ent, sound.Params.WithPitchScale(1 / ent.Comp.WorkTimeMultiplier)) + ?.Entity; //slightly higher pitched + } } /// diff --git a/Resources/Prototypes/Entities/Objects/Tools/jaws_of_life.yml b/Resources/Prototypes/Entities/Objects/Tools/jaws_of_life.yml index f6d2436d7e..69d947b290 100644 --- a/Resources/Prototypes/Entities/Objects/Tools/jaws_of_life.yml +++ b/Resources/Prototypes/Entities/Objects/Tools/jaws_of_life.yml @@ -22,11 +22,17 @@ - type: Tool qualities: - Prying - useSound: /Audio/Items/jaws_pry.ogg + useSound: !type:SoundPathSpecifier + path: /Audio/Items/jaws_pry.ogg + params: + volume: -2 - type: Prying speedModifier: 1.5 pryPowered: true - useSound: /Audio/Items/jaws_pry.ogg + useSound: !type:SoundPathSpecifier + path: /Audio/Items/jaws_pry.ogg + params: + volume: -2 - type: MultipleTool statusShowBehavior: true entries: @@ -34,14 +40,26 @@ sprite: sprite: Objects/Tools/jaws_of_life.rsi state: jaws_pry - useSound: /Audio/Items/jaws_pry.ogg - changeSound: /Audio/Items/change_jaws.ogg + useSound: !type:SoundPathSpecifier + path: /Audio/Items/jaws_pry.ogg + params: + volume: -2 + changeSound: !type:SoundPathSpecifier + path: /Audio/Items/change_jaws.ogg + params: + volume: -5 - behavior: Cutting sprite: sprite: Objects/Tools/jaws_of_life.rsi state: jaws_cutter - useSound: /Audio/Items/jaws_cut.ogg - changeSound: /Audio/Items/change_jaws.ogg + useSound: !type:SoundPathSpecifier + path: /Audio/Items/jaws_cut.ogg + params: + volume: -4 + changeSound: !type:SoundPathSpecifier + path: /Audio/Items/change_jaws.ogg + params: + volume: -5 - type: MeleeWeapon wideAnimationRotation: 90 damage: @@ -75,14 +93,26 @@ sprite: sprite: Objects/Tools/jaws_of_life.rsi state: syn_jaws_pry - useSound: /Audio/Items/jaws_pry.ogg - changeSound: /Audio/Items/change_jaws.ogg + useSound: !type:SoundPathSpecifier + path: /Audio/Items/jaws_pry.ogg + params: + volume: -2 + changeSound: !type:SoundPathSpecifier + path: /Audio/Items/change_jaws.ogg + params: + volume: -5 - behavior: Cutting sprite: sprite: Objects/Tools/jaws_of_life.rsi state: syn_jaws_cutter - useSound: /Audio/Items/jaws_cut.ogg - changeSound: /Audio/Items/change_jaws.ogg + useSound: !type:SoundPathSpecifier + path: /Audio/Items/jaws_cut.ogg + params: + volume: -4 + changeSound: !type:SoundPathSpecifier + path: /Audio/Items/change_jaws.ogg + params: + volume: -5 - type: MeleeWeapon damage: types: diff --git a/Resources/Prototypes/Entities/Objects/Tools/tools.yml b/Resources/Prototypes/Entities/Objects/Tools/tools.yml index 858e6b7bc5..bade79d2aa 100644 --- a/Resources/Prototypes/Entities/Objects/Tools/tools.yml +++ b/Resources/Prototypes/Entities/Objects/Tools/tools.yml @@ -257,7 +257,10 @@ qualities: - Screwing speedModifier: 1.5 - useSound: /Audio/Items/drill_use.ogg + useSound: !type:SoundPathSpecifier + path: /Audio/Items/drill_use.ogg + params: + volume: -2.5 - type: MultipleTool statusShowBehavior: true entries: @@ -265,18 +268,26 @@ sprite: sprite: Objects/Tools/drill.rsi state: drill_screw - useSound: + useSound: !type:SoundPathSpecifier path: /Audio/Items/drill_use.ogg - changeSound: + params: + volume: -2.5 + changeSound: !type:SoundPathSpecifier path: /Audio/Items/change_drill.ogg + params: + volume: -5 - behavior: Anchoring sprite: sprite: Objects/Tools/drill.rsi state: drill_bolt - useSound: + useSound: !type:SoundPathSpecifier path: /Audio/Items/drill_use.ogg - changeSound: + params: + volume: -2.5 + changeSound: !type:SoundPathSpecifier path: /Audio/Items/change_drill.ogg + params: + volume: -5 - type: PhysicalComposition materialComposition: Steel: 300 diff --git a/Resources/Prototypes/Entities/Structures/Machines/reagent_grinder.yml b/Resources/Prototypes/Entities/Structures/Machines/reagent_grinder.yml index ac4d385508..5599c89740 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/reagent_grinder.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/reagent_grinder.yml @@ -5,6 +5,16 @@ description: From BlenderTech. Will It Blend? Let's find out! components: - type: ReagentGrinder + grindSound: + params: + volume: -2.5 + rolloffFactor: 2 + path: /Audio/Machines/blender.ogg + juiceSound: + params: + volume: -2.5 + rolloffFactor: 2 + path: /Audio/Machines/juicer.ogg - type: ActivatableUI key: enum.ReagentGrinderUiKey.Key - type: UserInterface From f52d80d57f428d88dfdda96591b7833a35bb1db5 Mon Sep 17 00:00:00 2001 From: Whatstone <166147148+whatston3@users.noreply.github.com> Date: Thu, 16 Jul 2026 16:49:53 -0400 Subject: [PATCH 038/108] ContentTileDefiniton cleanup + default uniform distribution for PlacementVariants (#44687) * nullable placementVariants * Consistent xmldoc spacing * Nullable ItemDropPrototypeName --- Content.Shared/Maps/ContentTileDefinition.cs | 254 +++++----- Content.Shared/Maps/TileSystem.cs | 6 +- Resources/Prototypes/Tiles/floors.yml | 486 +------------------ Resources/Prototypes/Tiles/ironsand.yml | 25 - Resources/Prototypes/Tiles/planet.yml | 24 - Resources/Prototypes/Tiles/plating.yml | 4 - 6 files changed, 143 insertions(+), 656 deletions(-) diff --git a/Content.Shared/Maps/ContentTileDefinition.cs b/Content.Shared/Maps/ContentTileDefinition.cs index e0c20d34f5..b59afe3068 100644 --- a/Content.Shared/Maps/ContentTileDefinition.cs +++ b/Content.Shared/Maps/ContentTileDefinition.cs @@ -1,143 +1,139 @@ using Content.Shared.Atmos; -using Content.Shared.Light.Components; using Content.Shared.Movement.Systems; using Content.Shared.Shuttles.Systems; using Content.Shared.Tools; using Robust.Shared.Audio; using Robust.Shared.Map; using Robust.Shared.Prototypes; -using Robust.Shared.Serialization; -using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.Array; -using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.List; using Robust.Shared.Utility; -namespace Content.Shared.Maps +namespace Content.Shared.Maps; + +[Prototype("tile")] +public sealed partial class ContentTileDefinition : IPrototype, IInheritingPrototype, ITileDefinition { - [Prototype("tile")] - public sealed partial class ContentTileDefinition : IPrototype, IInheritingPrototype, ITileDefinition + public static readonly ProtoId PryingToolQuality = "Prying"; + + public const string SpaceID = "Space"; + + [ParentDataField(typeof(AbstractPrototypeIdArraySerializer))] + public string[]? Parents { get; private set; } + + [NeverPushInheritance] + [AbstractDataField] + public bool Abstract { get; private set; } + + [IdDataField] public string ID { get; private set; } = string.Empty; + + public ushort TileId { get; private set; } + + [DataField] + public string Name { get; private set; } = ""; + [DataField] public ResPath? Sprite { get; private set; } + + [DataField] public Dictionary EdgeSprites { get; private set; } = new(); + + [DataField] public int EdgeSpritePriority { get; private set; } = 0; + + [DataField("isSubfloor")] public bool IsSubFloor { get; private set; } + + [DataField] + public ProtoId? BaseTurf { get; private set; } + + /// + /// On what tiles this tile can be placed on. BaseTurf is already included. + /// + [DataField] + public List> BaseWhitelist { get; private set; } = new(); + + [DataField] + public PrototypeFlags DeconstructTools { get; set; } = new(); + + /// + /// Effective mass of this tile for grid impacts. + /// + [DataField] + public float Mass = SharedShuttleSystem.TileDensityMultiplier; + + /// + /// Legacy AF but nice to have. + /// + public bool CanCrowbar => DeconstructTools.Contains(PryingToolQuality); + + /// + /// These play when the mob has shoes on. + /// + [DataField] public SoundSpecifier? FootstepSounds { get; private set; } + + /// + /// These play when the mob has no shoes on. + /// + [DataField] public SoundSpecifier? BarestepSounds { get; private set; } = new SoundCollectionSpecifier("BarestepHard"); + + /// + /// Base friction modifier for this tile. + /// + [DataField] public float Friction { get; set; } = 1f; + + [DataField] public byte Variants { get; set; } = 1; + + /// + /// Allows the tile to be rotated/mirrored when placed on a grid. + /// + [DataField] public bool AllowRotationMirror { get; set; } = false; + + /// + /// This controls what variants the `variantize` command is allowed to use. + /// If null, the distribution will be uniform. + /// + [DataField] public float[]? PlacementVariants { get; set; } = null; + + [DataField] public float ThermalConductivity = 0.04f; + + // Heat capacity is opt-in, not opt-out. + [DataField] public float HeatCapacity = Atmospherics.MinimumHeatCapacity; + + [DataField("itemDrop")] + public EntProtoId? ItemDropPrototypeName { get; private set; } = "FloorTileItemSteel"; + + // TODO rename data-field in yaml + /// + /// Whether or not the tile is exposed to the map's atmosphere. + /// + [DataField("isSpace")] public bool MapAtmosphere { get; private set; } + + /// + /// Friction override for mob mover in + /// + [DataField] + public float? MobFriction { get; private set; } + + /// + /// Accel override for mob mover in + /// + [DataField] + public float? MobAcceleration { get; private set; } + + [DataField] public bool Sturdy { get; private set; } = true; + + /// + /// Can weather affect this tile. + /// + [DataField] public bool Weather = false; + + /// + /// Is this tile immune to RCD deconstruct. + /// + [DataField] public bool Indestructible = false; + + /// + /// Hide this tile in the tile placement editor. + /// + [DataField] public bool EditorHidden { get; private set; } = false; + + public void AssignTileId(ushort id) { - public static readonly ProtoId PryingToolQuality = "Prying"; - - public const string SpaceID = "Space"; - - [ParentDataField(typeof(AbstractPrototypeIdArraySerializer))] - public string[]? Parents { get; private set; } - - [NeverPushInheritance] - [AbstractDataFieldAttribute] - public bool Abstract { get; private set; } - - [IdDataField] public string ID { get; private set; } = string.Empty; - - public ushort TileId { get; private set; } - - [DataField("name")] - public string Name { get; private set; } = ""; - [DataField("sprite")] public ResPath? Sprite { get; private set; } - - [DataField("edgeSprites")] public Dictionary EdgeSprites { get; private set; } = new(); - - [DataField("edgeSpritePriority")] public int EdgeSpritePriority { get; private set; } = 0; - - [DataField("isSubfloor")] public bool IsSubFloor { get; private set; } - - [DataField("baseTurf")] - public ProtoId? BaseTurf { get; private set; } - - /// - /// On what tiles this tile can be placed on. BaseTurf is already included. - /// - [DataField] - public List> BaseWhitelist { get; private set; } = new(); - - [DataField] - public PrototypeFlags DeconstructTools { get; set; } = new(); - - /// - /// Effective mass of this tile for grid impacts. - /// - [DataField] - public float Mass = SharedShuttleSystem.TileDensityMultiplier; - - /// - /// Legacy AF but nice to have. - /// - public bool CanCrowbar => DeconstructTools.Contains(PryingToolQuality); - - /// - /// These play when the mob has shoes on. - /// - [DataField("footstepSounds")] public SoundSpecifier? FootstepSounds { get; private set; } - - /// - /// These play when the mob has no shoes on. - /// - [DataField("barestepSounds")] public SoundSpecifier? BarestepSounds { get; private set; } = new SoundCollectionSpecifier("BarestepHard"); - - /// - /// Base friction modifier for this tile. - /// - [DataField("friction")] public float Friction { get; set; } = 1f; - - [DataField("variants")] public byte Variants { get; set; } = 1; - - /// - /// Allows the tile to be rotated/mirrored when placed on a grid. - /// - [DataField] public bool AllowRotationMirror { get; set; } = false; - - /// - /// This controls what variants the `variantize` command is allowed to use. - /// - [DataField("placementVariants")] public float[] PlacementVariants { get; set; } = { 1f }; - - [DataField("thermalConductivity")] public float ThermalConductivity = 0.04f; - - // Heat capacity is opt-in, not opt-out. - [DataField("heatCapacity")] public float HeatCapacity = Atmospherics.MinimumHeatCapacity; - - [DataField("itemDrop", customTypeSerializer:typeof(PrototypeIdSerializer))] - public string ItemDropPrototypeName { get; private set; } = "FloorTileItemSteel"; - - // TODO rename data-field in yaml - /// - /// Whether or not the tile is exposed to the map's atmosphere. - /// - [DataField("isSpace")] public bool MapAtmosphere { get; private set; } - - /// - /// Friction override for mob mover in - /// - [DataField("mobFriction")] - public float? MobFriction { get; private set; } - - /// - /// Accel override for mob mover in - /// - [DataField("mobAcceleration")] - public float? MobAcceleration { get; private set; } - - [DataField("sturdy")] public bool Sturdy { get; private set; } = true; - - /// - /// Can weather affect this tile. - /// - [DataField("weather")] public bool Weather = false; - - /// - /// Is this tile immune to RCD deconstruct. - /// - [DataField("indestructible")] public bool Indestructible = false; - - /// - /// Hide this tile in the tile placement editor. - /// - [DataField] public bool EditorHidden { get; private set; } = false; - - public void AssignTileId(ushort id) - { - TileId = id; - } + TileId = id; } } diff --git a/Content.Shared/Maps/TileSystem.cs b/Content.Shared/Maps/TileSystem.cs index aba82bbf5a..2abda197cc 100644 --- a/Content.Shared/Maps/TileSystem.cs +++ b/Content.Shared/Maps/TileSystem.cs @@ -122,6 +122,10 @@ public sealed partial class TileSystem : EntitySystem /// public byte PickVariant(ContentTileDefinition tile, IRobustRandom random) { + // Null variants? Uniform distribution. + if (tile.PlacementVariants == null) + return random.NextByte(tile.Variants); + var variants = tile.PlacementVariants; var sum = variants.Sum(); @@ -305,7 +309,7 @@ public sealed partial class TileSystem : EntitySystem previousTileId = tileDef.BaseTurf.Value; } - if (spawnItem) + if (spawnItem && tileDef.ItemDropPrototypeName != null) { //Actually spawn the relevant tile item at the right position and give it some random offset. var tileItem = Spawn(tileDef.ItemDropPrototypeName, coordinates); diff --git a/Resources/Prototypes/Tiles/floors.yml b/Resources/Prototypes/Tiles/floors.yml index db502f48e5..0796dd2e52 100644 --- a/Resources/Prototypes/Tiles/floors.yml +++ b/Resources/Prototypes/Tiles/floors.yml @@ -31,11 +31,6 @@ name: tiles-steel-floor sprite: /Textures/Tiles/steel.png variants: 4 - placementVariants: - - 1.0 - - 1.0 - - 1.0 - - 1.0 itemDrop: FloorTileItemSteel - type: tile @@ -44,11 +39,6 @@ name: tiles-steel-floor-checker-light sprite: /Textures/Tiles/cafeteria.png variants: 4 - placementVariants: - - 1.0 - - 1.0 - - 1.0 - - 1.0 itemDrop: FloorTileItemSteelCheckerLight - type: tile @@ -57,11 +47,6 @@ name: tiles-steel-floor-checker-dark sprite: /Textures/Tiles/checker_dark.png variants: 4 - placementVariants: - - 1.0 - - 1.0 - - 1.0 - - 1.0 itemDrop: FloorTileItemSteelCheckerDark - type: tile @@ -70,11 +55,6 @@ name: tiles-steel-floor-mini sprite: /Textures/Tiles/steel_mini.png variants: 4 - placementVariants: - - 1.0 - - 1.0 - - 1.0 - - 1.0 itemDrop: FloorTileItemSteelMini - type: tile @@ -83,11 +63,6 @@ name: tiles-steel-floor-pavement sprite: /Textures/Tiles/steel_pavement.png variants: 4 - placementVariants: - - 1.0 - - 1.0 - - 1.0 - - 1.0 itemDrop: FloorTileItemSteelPavement - type: tile @@ -96,11 +71,6 @@ name: tiles-steel-floor-diagonal sprite: /Textures/Tiles/steel_diagonal.png variants: 4 - placementVariants: - - 1.0 - - 1.0 - - 1.0 - - 1.0 itemDrop: FloorTileItemSteelDiagonal - type: tile @@ -116,11 +86,6 @@ name: tiles-steel-floor-mono sprite: /Textures/Tiles/steel_mono.png variants: 4 - placementVariants: - - 1.0 - - 1.0 - - 1.0 - - 1.0 itemDrop: FloorTileItemSteelMono - type: tile @@ -129,11 +94,6 @@ name: tiles-steel-floor-pavement-vertical sprite: /Textures/Tiles/steel_pavement_vertical.png variants: 4 - placementVariants: - - 1.0 - - 1.0 - - 1.0 - - 1.0 itemDrop: FloorTileItemSteelPavementVertical - type: tile @@ -142,11 +102,6 @@ name: tiles-steel-floor-herringbone sprite: /Textures/Tiles/steel_herringbone.png variants: 4 - placementVariants: - - 1.0 - - 1.0 - - 1.0 - - 1.0 itemDrop: FloorTileItemSteelHerringbone - type: tile @@ -155,11 +110,6 @@ name: tiles-steel-floor-diagonal-mini sprite: /Textures/Tiles/steel_diagonal_mini.png variants: 4 - placementVariants: - - 1.0 - - 1.0 - - 1.0 - - 1.0 itemDrop: FloorTileItemSteelDiagonalMini - type: tile @@ -168,11 +118,6 @@ name: tiles-steel-floor-slats-continuous sprite: /Textures/Tiles/steel_slats_continuous.png variants: 4 - placementVariants: - - 1.0 - - 1.0 - - 1.0 - - 1.0 itemDrop: FloorTileItemSteelSlatsContinuous allowRotationMirror: true @@ -182,11 +127,6 @@ name: tiles-steel-floor-vertical-slats-bordered sprite: /Textures/Tiles/steel_vertical_slats_bordered.png variants: 4 - placementVariants: - - 1.0 - - 1.0 - - 1.0 - - 1.0 itemDrop: FloorTileItemSteelVerticalSlatsBordered - type: tile @@ -195,11 +135,6 @@ name: tiles-steel-floor-horizontal-slats-bordered sprite: /Textures/Tiles/steel_horizontal_slats_bordered.png variants: 4 - placementVariants: - - 1.0 - - 1.0 - - 1.0 - - 1.0 itemDrop: FloorTileItemSteelHorizontalSlatsBordered - type: tile @@ -226,11 +161,6 @@ name: tiles-plastic-floor sprite: /Textures/Tiles/plastic.png variants: 4 - placementVariants: - - 1.0 - - 1.0 - - 1.0 - - 1.0 itemDrop: FloorTileItemSteel - type: tile @@ -239,11 +169,6 @@ name: tiles-wood sprite: /Textures/Tiles/wood.png variants: 4 - placementVariants: - - 1.0 - - 1.0 - - 1.0 - - 1.0 footstepSounds: collection: FootstepWood barestepSounds: @@ -256,11 +181,6 @@ name: tiles-white-floor sprite: /Textures/Tiles/white.png variants: 4 - placementVariants: - - 1.0 - - 1.0 - - 1.0 - - 1.0 footstepSounds: collection: FootstepTile itemDrop: FloorTileItemWhite @@ -271,11 +191,6 @@ name: tiles-white-floor-mini sprite: /Textures/Tiles/white_mini.png variants: 4 - placementVariants: - - 1.0 - - 1.0 - - 1.0 - - 1.0 footstepSounds: collection: FootstepTile itemDrop: FloorTileItemWhiteMini @@ -286,11 +201,6 @@ name: tiles-white-floor-slats-continuous sprite: /Textures/Tiles/white_slats_continuous.png variants: 4 - placementVariants: - - 1.0 - - 1.0 - - 1.0 - - 1.0 itemDrop: FloorTileItemWhiteSlatsContinuous allowRotationMirror: true @@ -300,11 +210,6 @@ name: tiles-white-floor-vertical-slats-bordered sprite: /Textures/Tiles/white_vertical_slats_bordered.png variants: 4 - placementVariants: - - 1.0 - - 1.0 - - 1.0 - - 1.0 itemDrop: FloorTileItemWhiteVerticalSlatsBordered - type: tile @@ -313,11 +218,6 @@ name: tiles-white-floor-horizontal-slats-bordered sprite: /Textures/Tiles/white_horizontal_slats_bordered.png variants: 4 - placementVariants: - - 1.0 - - 1.0 - - 1.0 - - 1.0 itemDrop: FloorTileItemWhiteHorizontalSlatsBordered - type: tile @@ -326,11 +226,6 @@ name: tiles-white-floor-pavement sprite: /Textures/Tiles/white_pavement.png variants: 4 - placementVariants: - - 1.0 - - 1.0 - - 1.0 - - 1.0 footstepSounds: collection: FootstepTile itemDrop: FloorTileItemWhitePavement @@ -341,11 +236,6 @@ name: tiles-white-floor-diagonal sprite: /Textures/Tiles/white_diagonal.png variants: 4 - placementVariants: - - 1.0 - - 1.0 - - 1.0 - - 1.0 footstepSounds: collection: FootstepTile itemDrop: FloorTileItemWhiteDiagonal @@ -365,11 +255,6 @@ name: tiles-white-floor-mono sprite: /Textures/Tiles/white_mono.png variants: 4 - placementVariants: - - 1.0 - - 1.0 - - 1.0 - - 1.0 footstepSounds: collection: FootstepTile itemDrop: FloorTileItemWhiteMono @@ -380,11 +265,6 @@ name: tiles-white-floor-pavement-vertical sprite: /Textures/Tiles/white_pavement_vertical.png variants: 4 - placementVariants: - - 1.0 - - 1.0 - - 1.0 - - 1.0 footstepSounds: collection: FootstepTile itemDrop: FloorTileItemWhitePavementVertical @@ -395,11 +275,6 @@ name: tiles-white-floor-herringbone sprite: /Textures/Tiles/white_herringbone.png variants: 4 - placementVariants: - - 1.0 - - 1.0 - - 1.0 - - 1.0 footstepSounds: collection: FootstepTile itemDrop: FloorTileItemWhiteHerringbone @@ -410,11 +285,6 @@ name: tiles-white-floor-diagonal-mini sprite: /Textures/Tiles/white_diagonal_mini.png variants: 4 - placementVariants: - - 1.0 - - 1.0 - - 1.0 - - 1.0 footstepSounds: collection: FootstepTile itemDrop: FloorTileItemWhiteDiagonalMini @@ -425,11 +295,6 @@ name: tiles-plastic-white-floor sprite: /Textures/Tiles/white_plastic.png variants: 4 - placementVariants: - - 1.0 - - 1.0 - - 1.0 - - 1.0 footstepSounds: collection: FootstepTile itemDrop: FloorTileItemWhite @@ -440,11 +305,6 @@ name: tiles-dark-floor sprite: /Textures/Tiles/dark.png variants: 4 - placementVariants: - - 1.0 - - 1.0 - - 1.0 - - 1.0 footstepSounds: collection: FootstepTile itemDrop: FloorTileItemDark @@ -455,11 +315,6 @@ name: tiles-dark-floor-mini sprite: /Textures/Tiles/dark_mini.png variants: 4 - placementVariants: - - 1.0 - - 1.0 - - 1.0 - - 1.0 footstepSounds: collection: FootstepTile itemDrop: FloorTileItemDarkMini @@ -470,11 +325,6 @@ name: tiles-dark-floor-slats-continuous sprite: /Textures/Tiles/dark_slats_continuous.png variants: 4 - placementVariants: - - 1.0 - - 1.0 - - 1.0 - - 1.0 itemDrop: FloorTileItemDarkSlatsContinuous allowRotationMirror: true @@ -484,11 +334,6 @@ name: tiles-dark-floor-vertical-slats-bordered sprite: /Textures/Tiles/dark_vertical_slats_bordered.png variants: 4 - placementVariants: - - 1.0 - - 1.0 - - 1.0 - - 1.0 itemDrop: FloorTileItemDarkVerticalSlatsBordered - type: tile @@ -497,11 +342,6 @@ name: tiles-dark-floor-horizontal-slats-bordered sprite: /Textures/Tiles/dark_horizontal_slats_bordered.png variants: 4 - placementVariants: - - 1.0 - - 1.0 - - 1.0 - - 1.0 itemDrop: FloorTileItemDarkHorizontalSlatsBordered - type: tile @@ -510,11 +350,6 @@ name: tiles-dark-floor-pavement sprite: /Textures/Tiles/dark_pavement.png variants: 4 - placementVariants: - - 1.0 - - 1.0 - - 1.0 - - 1.0 footstepSounds: collection: FootstepTile itemDrop: FloorTileItemDarkPavement @@ -525,11 +360,6 @@ name: tiles-dark-floor-diagonal sprite: /Textures/Tiles/dark_diagonal.png variants: 4 - placementVariants: - - 1.0 - - 1.0 - - 1.0 - - 1.0 footstepSounds: collection: FootstepTile itemDrop: FloorTileItemDarkDiagonal @@ -549,11 +379,6 @@ name: tiles-dark-floor-mono sprite: /Textures/Tiles/dark_mono.png variants: 4 - placementVariants: - - 1.0 - - 1.0 - - 1.0 - - 1.0 footstepSounds: collection: FootstepTile itemDrop: FloorTileItemDarkMono @@ -564,11 +389,6 @@ name: tiles-dark-floor-pavement-vertical sprite: /Textures/Tiles/dark_pavement_vertical.png variants: 4 - placementVariants: - - 1.0 - - 1.0 - - 1.0 - - 1.0 footstepSounds: collection: FootstepTile itemDrop: FloorTileItemDarkPavementVertical @@ -579,11 +399,6 @@ name: tiles-dark-floor-herringbone sprite: /Textures/Tiles/dark_herringbone.png variants: 4 - placementVariants: - - 1.0 - - 1.0 - - 1.0 - - 1.0 footstepSounds: collection: FootstepTile itemDrop: FloorTileItemDarkHerringbone @@ -594,11 +409,6 @@ name: tiles-dark-floor-diagonal-mini sprite: /Textures/Tiles/dark_diagonal_mini.png variants: 4 - placementVariants: - - 1.0 - - 1.0 - - 1.0 - - 1.0 footstepSounds: collection: FootstepTile itemDrop: FloorTileItemDarkDiagonalMini @@ -609,11 +419,6 @@ name: tiles-plastic-dark-floor sprite: /Textures/Tiles/dark_plastic.png variants: 4 - placementVariants: - - 1.0 - - 1.0 - - 1.0 - - 1.0 footstepSounds: collection: FootstepTile itemDrop: FloorTileItemDark @@ -669,11 +474,6 @@ name: tiles-dirty-steel-floor sprite: /Textures/Tiles/steel_dirty.png variants: 4 - placementVariants: - - 1.0 - - 1.0 - - 1.0 - - 1.0 footstepSounds: collection: FootstepPlating itemDrop: FloorTileItemDirty @@ -720,11 +520,6 @@ name: tiles-lime-floor sprite: /Textures/Tiles/lime.png variants: 4 - placementVariants: - - 1.0 - - 1.0 - - 1.0 - - 1.0 itemDrop: FloorTileItemLime - type: tile @@ -784,11 +579,6 @@ name: tiles-bar-floor sprite: /Textures/Tiles/bar.png variants: 4 - placementVariants: - - 1.0 - - 1.0 - - 1.0 - - 1.0 itemDrop: FloorTileItemBar - type: tile @@ -829,12 +619,6 @@ name: tiles-steel-floor sprite: /Textures/Tiles/steel_damaged.png variants: 5 - placementVariants: - - 1.0 - - 1.0 - - 1.0 - - 1.0 - - 1.0 itemDrop: FloorTileItemSteel #This should probably be made null when it becomes possible to make it such, in SS13 prying destroyed tiles wouldn't give you anything. # Concrete @@ -844,11 +628,6 @@ name: tiles-concrete-tile sprite: /Textures/Tiles/Planet/Concrete/concrete.png variants: 4 - placementVariants: - - 1.0 - - 1.0 - - 1.0 - - 1.0 footstepSounds: collection: FootstepTile itemDrop: FloorTileItemConcrete @@ -859,11 +638,6 @@ name: tiles-concrete-slab sprite: /Textures/Tiles/Planet/Concrete/concrete_mono.png variants: 4 - placementVariants: - - 1.0 - - 1.0 - - 1.0 - - 1.0 footstepSounds: collection: FootstepTile itemDrop: FloorTileItemConcreteMono @@ -874,11 +648,6 @@ name: tiles-concrete-smooth sprite: /Textures/Tiles/Planet/Concrete/concrete_smooth.png variants: 4 - placementVariants: - - 1.0 - - 1.0 - - 1.0 - - 1.0 footstepSounds: collection: FootstepTile itemDrop: FloorTileItemConcreteSmooth @@ -889,11 +658,6 @@ name: tiles-gray-concrete-tile sprite: /Textures/Tiles/Planet/Concrete/grayconcrete.png variants: 4 - placementVariants: - - 1.0 - - 1.0 - - 1.0 - - 1.0 footstepSounds: collection: FootstepTile itemDrop: FloorTileItemGrayConcrete @@ -904,11 +668,6 @@ name: tiles-gray-concrete-slab sprite: /Textures/Tiles/Planet/Concrete/grayconcrete_mono.png variants: 4 - placementVariants: - - 1.0 - - 1.0 - - 1.0 - - 1.0 footstepSounds: collection: FootstepTile itemDrop: FloorTileItemGrayConcreteMono @@ -919,11 +678,6 @@ name: tiles-gray-concrete-smooth sprite: /Textures/Tiles/Planet/Concrete/grayconcrete_smooth.png variants: 4 - placementVariants: - - 1.0 - - 1.0 - - 1.0 - - 1.0 footstepSounds: collection: FootstepTile itemDrop: FloorTileItemGrayConcreteSmooth @@ -934,11 +688,6 @@ name: tiles-old-concrete-tile sprite: /Textures/Tiles/Planet/Concrete/oldconcrete.png variants: 4 - placementVariants: - - 1.0 - - 1.0 - - 1.0 - - 1.0 footstepSounds: collection: FootstepTile itemDrop: FloorTileItemOldConcrete @@ -949,11 +698,6 @@ name: tiles-old-concrete-slab sprite: /Textures/Tiles/Planet/Concrete/oldconcrete_mono.png variants: 4 - placementVariants: - - 1.0 - - 1.0 - - 1.0 - - 1.0 footstepSounds: collection: FootstepTile itemDrop: FloorTileItemOldConcreteMono @@ -964,11 +708,6 @@ name: tiles-old-concrete-smooth sprite: /Textures/Tiles/Planet/Concrete/oldconcrete_smooth.png variants: 4 - placementVariants: - - 1.0 - - 1.0 - - 1.0 - - 1.0 footstepSounds: collection: FootstepTile itemDrop: FloorTileItemOldConcreteSmooth @@ -1052,11 +791,6 @@ name: tiles-boxing-ring-floor sprite: /Textures/Tiles/boxing.png variants: 4 - placementVariants: - - 1.0 - - 1.0 - - 1.0 - - 1.0 friction: 1.25 itemDrop: FloorTileItemBoxing @@ -1066,11 +800,6 @@ name: tiles-gym-floor sprite: /Textures/Tiles/gym.png variants: 4 - placementVariants: - - 1.0 - - 1.0 - - 1.0 - - 1.0 friction: 1.25 itemDrop: FloorTileItemGym @@ -1081,11 +810,6 @@ name: tiles-white-shuttle-floor sprite: /Textures/Tiles/shuttlewhite.png variants: 4 - placementVariants: - - 1.0 - - 1.0 - - 1.0 - - 1.0 itemDrop: FloorTileItemShuttleWhite - type: tile @@ -1094,11 +818,6 @@ name: tiles-grey-shuttle-floor sprite: /Textures/Tiles/shuttlegrey.png variants: 4 - placementVariants: - - 1.0 - - 1.0 - - 1.0 - - 1.0 itemDrop: FloorTileItemShuttleGrey - type: tile @@ -1107,11 +826,6 @@ name: tiles-black-shuttle-floor sprite: /Textures/Tiles/shuttleblack.png variants: 4 - placementVariants: - - 1.0 - - 1.0 - - 1.0 - - 1.0 itemDrop: FloorTileItemShuttleBlack - type: tile @@ -1120,11 +834,6 @@ name: tiles-blue-shuttle-floor sprite: /Textures/Tiles/shuttleblue.png variants: 4 - placementVariants: - - 1.0 - - 1.0 - - 1.0 - - 1.0 itemDrop: FloorTileItemShuttleBlue - type: tile @@ -1133,11 +842,6 @@ name: tiles-orange-shuttle-floor sprite: /Textures/Tiles/shuttleorange.png variants: 4 - placementVariants: - - 1.0 - - 1.0 - - 1.0 - - 1.0 itemDrop: FloorTileItemShuttleOrange - type: tile @@ -1146,11 +850,6 @@ name: tiles-purple-shuttle-floor sprite: /Textures/Tiles/shuttlepurple.png variants: 4 - placementVariants: - - 1.0 - - 1.0 - - 1.0 - - 1.0 itemDrop: FloorTileItemShuttlePurple - type: tile @@ -1159,11 +858,6 @@ name: tiles-red-shuttle-floor sprite: /Textures/Tiles/shuttlered.png variants: 4 - placementVariants: - - 1.0 - - 1.0 - - 1.0 - - 1.0 itemDrop: FloorTileItemShuttleRed @@ -1192,11 +886,6 @@ name: tiles-glass-floor sprite: /Textures/Tiles/glass.png variants: 4 - placementVariants: - - 1.0 - - 1.0 - - 1.0 - - 1.0 footstepSounds: collection: FootstepTile itemDrop: SheetGlass1 @@ -1207,11 +896,6 @@ name: tiles-reinforced-glass-floor sprite: /Textures/Tiles/rglass.png variants: 4 - placementVariants: - - 1.0 - - 1.0 - - 1.0 - - 1.0 footstepSounds: collection: FootstepTile itemDrop: SheetRGlass1 @@ -1221,9 +905,6 @@ parent: BaseStationTile name: tiles-metal-foam sprite: /Textures/Tiles/foammetal.png - variants: 1 - placementVariants: - - 1.0 footstepSounds: collection: FootstepHull itemDrop: SheetSteel1 @@ -1262,17 +943,6 @@ name: tiles-asphalt sprite: /Textures/Tiles/Planet/Concrete/asphalt.png variants: 10 - placementVariants: - - 1.0 - - 1.0 - - 1.0 - - 1.0 - - 1.0 - - 1.0 - - 1.0 - - 1.0 - - 1.0 - - 1.0 baseTurf: FloorDirt isSubfloor: true footstepSounds: @@ -1309,11 +979,6 @@ name: tiles-dark-grass-floor sprite: /Textures/Tiles/grassdark.png variants: 4 - placementVariants: - - 1.0 - - 1.0 - - 1.0 - - 1.0 baseTurf: FloorDirt isSubfloor: true footstepSounds: @@ -1326,11 +991,6 @@ name: tiles-light-grass-floor sprite: /Textures/Tiles/grasslight.png variants: 4 - placementVariants: - - 1.0 - - 1.0 - - 1.0 - - 1.0 baseTurf: FloorDirt isSubfloor: true footstepSounds: @@ -1343,11 +1003,6 @@ name: tiles-dirt-floor sprite: /Textures/Tiles/dirt.png variants: 4 - placementVariants: - - 1.0 - - 1.0 - - 1.0 - - 1.0 baseTurf: Plating isSubfloor: true footstepSounds: @@ -1363,19 +1018,19 @@ sprite: /Textures/Tiles/Asteroid/asteroid.png variants: 13 placementVariants: - - 0.8 - - 0.0166 #Should be roughly 20%.... I think??? I don't know dude, I'm just a YAML monkey. - - 0.0166 - - 0.0166 - - 0.0166 - - 0.0166 - - 0.0166 - - 0.0166 - - 0.0166 - - 0.0166 - - 0.0166 - - 0.0116 - - 0.0116 + - 0.8 + - 0.0166 #Should be roughly 20%.... I think??? I don't know dude, I'm just a YAML monkey. + - 0.0166 + - 0.0166 + - 0.0166 + - 0.0166 + - 0.0166 + - 0.0166 + - 0.0166 + - 0.0166 + - 0.0166 + - 0.0116 + - 0.0116 baseTurf: Space isSubfloor: true footstepSounds: @@ -1482,22 +1137,6 @@ name: tiles-asteroid-ironsand-borderless sprite: /Textures/Tiles/Asteroid/ironsand.png variants: 15 - placementVariants: - - 1.0 - - 1.0 - - 1.0 - - 1.0 - - 1.0 - - 1.0 - - 1.0 - - 1.0 - - 1.0 - - 1.0 - - 1.0 - - 1.0 - - 1.0 - - 1.0 - - 1.0 baseTurf: Space isSubfloor: true footstepSounds: @@ -1578,14 +1217,6 @@ name: tiles-cave sprite: /Textures/Tiles/cave.png variants: 7 - placementVariants: - - 1.0 - - 1.0 - - 1.0 - - 1.0 - - 1.0 - - 1.0 - - 1.0 baseTurf: Space isSubfloor: true footstepSounds: @@ -1597,15 +1228,6 @@ name: tiles-cave-drought sprite: /Textures/Tiles/cavedrought.png variants: 8 - placementVariants: - - 1.0 - - 1.0 - - 1.0 - - 1.0 - - 1.0 - - 1.0 - - 1.0 - - 1.0 baseTurf: Space isSubfloor: true footstepSounds: @@ -1618,11 +1240,6 @@ name: tiles-flesh-floor sprite: /Textures/Tiles/meat.png variants: 4 - placementVariants: - - 1.0 - - 1.0 - - 1.0 - - 1.0 footstepSounds: collection: FootstepBlood itemDrop: FloorTileItemFlesh @@ -1643,11 +1260,6 @@ name: tiles-techmaint3-floor sprite: /Textures/Tiles/grating_maint.png variants: 4 - placementVariants: - - 1.0 - - 1.0 - - 1.0 - - 1.0 footstepSounds: collection: FootstepHull itemDrop: FloorTileItemGratingMaint @@ -1658,11 +1270,6 @@ name: tiles-wood2 sprite: /Textures/Tiles/wood_tile.png variants: 4 - placementVariants: - - 1.0 - - 1.0 - - 1.0 - - 1.0 footstepSounds: collection: FootstepWood barestepSounds: @@ -1675,14 +1282,6 @@ name: tiles-wood3 sprite: /Textures/Tiles/wood_broken.png variants: 7 - placementVariants: - - 1.0 - - 1.0 - - 1.0 - - 1.0 - - 1.0 - - 1.0 - - 1.0 footstepSounds: collection: FootstepWood barestepSounds: @@ -1705,14 +1304,6 @@ name: tiles-chromite sprite: /Textures/Tiles/chromite.png variants: 7 - placementVariants: - - 1.0 - - 1.0 - - 1.0 - - 1.0 - - 1.0 - - 1.0 - - 1.0 baseTurf: Space isSubfloor: true footstepSounds: @@ -1747,11 +1338,6 @@ name: tiles-astro-grass sprite: /Textures/Tiles/Planet/Grass/grass.png variants: 4 - placementVariants: - - 1.0 - - 1.0 - - 1.0 - - 1.0 edgeSpritePriority: 1 edgeSprites: SouthEast: /Textures/Tiles/Planet/Grass/single_edge.png @@ -1875,11 +1461,6 @@ name: tiles-wood-large sprite: /Textures/Tiles/wood_large.png variants: 4 - placementVariants: - - 1.0 - - 1.0 - - 1.0 - - 1.0 footstepSounds: collection: FootstepWood barestepSounds: @@ -1933,11 +1514,6 @@ name: tiles-dark-squiggly sprite: /Textures/Tiles/dark_squiggly.png variants: 4 - placementVariants: - - 1.0 - - 1.0 - - 1.0 - - 1.0 itemDrop: FloorTileItemDarkSquiggly allowRotationMirror: true @@ -1956,15 +1532,6 @@ name: tiles-white-marble sprite: /Textures/Tiles/white_marble.png variants: 8 - placementVariants: - - 1.0 - - 1.0 - - 1.0 - - 1.0 - - 1.0 - - 1.0 - - 1.0 - - 1.0 footstepSounds: collection: FootstepTile friction: 0.8 @@ -1976,15 +1543,6 @@ name: tiles-dark-marble sprite: /Textures/Tiles/dark_marble.png variants: 8 - placementVariants: - - 1.0 - - 1.0 - - 1.0 - - 1.0 - - 1.0 - - 1.0 - - 1.0 - - 1.0 footstepSounds: collection: FootstepTile friction: 0.8 @@ -1996,15 +1554,6 @@ name: tiles-plasma-marble sprite: /Textures/Tiles/plasmarble.png variants: 8 - placementVariants: - - 1.0 - - 1.0 - - 1.0 - - 1.0 - - 1.0 - - 1.0 - - 1.0 - - 1.0 footstepSounds: collection: FootstepTile friction: 0.8 @@ -2016,15 +1565,6 @@ name: tiles-uranium-marble sprite: /Textures/Tiles/uranium_marble.png variants: 8 - placementVariants: - - 1.0 - - 1.0 - - 1.0 - - 1.0 - - 1.0 - - 1.0 - - 1.0 - - 1.0 footstepSounds: collection: FootstepTile friction: 0.8 diff --git a/Resources/Prototypes/Tiles/ironsand.yml b/Resources/Prototypes/Tiles/ironsand.yml index f1558d9f20..b474d05cc4 100644 --- a/Resources/Prototypes/Tiles/ironsand.yml +++ b/Resources/Prototypes/Tiles/ironsand.yml @@ -14,11 +14,6 @@ name: tiles-ironsand-concrete-tile sprite: /Textures/Tiles/Planet/Concrete/ironsandconcrete.png variants: 4 - placementVariants: - - 1.0 - - 1.0 - - 1.0 - - 1.0 baseTurf: Plating isSubfloor: false deconstructTools: [ Prying ] @@ -32,11 +27,6 @@ name: tiles-ironsand-concrete-slab sprite: /Textures/Tiles/Planet/Concrete/ironsandconcrete_mono.png variants: 4 - placementVariants: - - 1.0 - - 1.0 - - 1.0 - - 1.0 baseTurf: Plating isSubfloor: false deconstructTools: [ Prying ] @@ -50,11 +40,6 @@ name: tiles-ironsand-concrete-smooth sprite: /Textures/Tiles/Planet/Concrete/ironsandconcrete_smooth.png variants: 4 - placementVariants: - - 1.0 - - 1.0 - - 1.0 - - 1.0 baseTurf: Plating isSubfloor: false deconstructTools: [ Prying ] @@ -68,11 +53,6 @@ name: tiles-ironsand-packed sprite: /Textures/Tiles/Asteroid/ironsand_packed.png variants: 4 - placementVariants: - - 1.0 - - 1.0 - - 1.0 - - 1.0 baseTurf: Space isSubfloor: true footstepSounds: @@ -85,11 +65,6 @@ name: tiles-ironsand-paved sprite: /Textures/Tiles/Asteroid/ironsand_uneven_paved.png variants: 4 - placementVariants: - - 1.0 - - 1.0 - - 1.0 - - 1.0 baseTurf: Space isSubfloor: false footstepSounds: diff --git a/Resources/Prototypes/Tiles/planet.yml b/Resources/Prototypes/Tiles/planet.yml index 15134868b5..c3b3659d6c 100644 --- a/Resources/Prototypes/Tiles/planet.yml +++ b/Resources/Prototypes/Tiles/planet.yml @@ -14,11 +14,6 @@ name: tiles-dirt-planet-floor sprite: /Textures/Tiles/Planet/dirt.rsi/dirt.png variants: 4 - placementVariants: - - 1.0 - - 1.0 - - 1.0 - - 1.0 # Desert - type: tile @@ -27,26 +22,12 @@ name: tiles-desert-floor sprite: /Textures/Tiles/Planet/Desert/desert.png variants: 6 - placementVariants: - - 1.0 - - 1.0 - - 1.0 - - 1.0 - - 1.0 - - 1.0 - type: tile id: FloorLowDesert name: tiles-low-desert-floor sprite: /Textures/Tiles/Planet/Desert/low_desert.png variants: 6 - placementVariants: - - 1.0 - - 1.0 - - 1.0 - - 1.0 - - 1.0 - - 1.0 # Grass - type: tile @@ -55,11 +36,6 @@ name: tiles-grass-planet-floor sprite: /Textures/Tiles/Planet/Grass/grass.png variants: 4 - placementVariants: - - 1.0 - - 1.0 - - 1.0 - - 1.0 edgeSpritePriority: 1 edgeSprites: SouthEast: /Textures/Tiles/Planet/Grass/single_edge.png diff --git a/Resources/Prototypes/Tiles/plating.yml b/Resources/Prototypes/Tiles/plating.yml index 5f23162580..e823de1ee9 100644 --- a/Resources/Prototypes/Tiles/plating.yml +++ b/Resources/Prototypes/Tiles/plating.yml @@ -52,10 +52,6 @@ name: tiles-plating sprite: /Textures/Tiles/plating_damaged.png variants: 3 - placementVariants: - - 1.0 - - 1.0 - - 1.0 - type: tile id: PlatingAsteroid From a88d2c51648acca6e143973fa90a8481437ed501 Mon Sep 17 00:00:00 2001 From: Whatstone <166147148+whatston3@users.noreply.github.com> Date: Thu, 16 Jul 2026 17:54:33 -0400 Subject: [PATCH 039/108] Cleanup: Resolve remaining PopupSystem warnings in Content.Shared (#44685) * PopupClient to PopupEntity/Coordinates * PopupPredictedX to PopupEntity/Cursor/Coordinates * The rest of the damn owl * nullability fixes * Buckle cleanup * cleanup, address PR comments * ExecutionSystem: one popup method * correct my filthy lies * Apply most of ajcm's suggestions * return user to SharedItemRecallSystem.cs * Fix lingering Ensnarable broadcast popups * targeted drain popups * fix lingering untargeted Guardian popups I read the comment on GuardianHostRecall. Oops. * target stethoscope popups * fix the PDA vibration popup * Fix target for encryption key removal popup * anomaly scanner: args.User, not uid * disposal unit comment, bcast pda vibration popup --- Content.Server/Morgue/CrematoriumSystem.cs | 2 +- .../Goliath/GoliathTentacleSystem.cs | 2 +- .../Abilities/Mime/MimePowersSystem.cs | 8 +-- .../ActivatableUIRequiresAccessSystem.cs | 2 +- .../Actions/ConfirmableActionSystem.cs | 2 +- .../Actions/DangerousActionSystem.cs | 2 +- Content.Shared/Actions/PopupOnActionSystem.cs | 2 +- Content.Shared/Animals/ShearableSystem.cs | 6 +- .../Systems/SharedParrotMemorySystem.cs | 2 +- Content.Shared/Animals/UdderSystem.cs | 4 +- .../Anomaly/AnomalySynchronizerSystem.cs | 8 +-- .../Anomaly/SharedAnomalyScannerSystem.cs | 2 +- .../SharedAtmosPipeLayersSystem.cs | 6 +- Content.Shared/Bed/Sleep/SleepingSystem.cs | 4 +- .../Body/Systems/SharedBloodstreamSystem.cs | 6 +- .../Body/Systems/SharedInternalsSystem.cs | 4 +- .../Buckle/SharedBuckleSystem.Buckle.cs | 16 ++--- Content.Shared/Burial/BurialSystem.cs | 8 +-- .../Cartridges/LogProbeCartridgeSystem.cs | 2 +- .../Cartridges/NetProbeCartridgeSystem.cs | 2 +- .../Systems/ChangelingAbilitySystem.cs | 2 +- .../Systems/ChangelingClonerSystem.cs | 6 +- .../Systems/ChangelingDevourSystem.cs | 18 +++--- .../Systems/ChangelingTransformSystem.cs | 4 +- .../Chemistry/EntitySystems/InjectorSystem.cs | 44 ++++++------- .../EntitySystems/ScoopableSolutionSystem.cs | 2 +- .../SharedSolutionContainerMixerSystem.cs | 4 +- .../EntitySystems/SolutionSpikerSystem.cs | 4 +- .../EntitySystems/SolutionTransferSystem.cs | 16 ++--- .../Chemistry/Reaction/ReactionMixerSystem.cs | 2 +- .../Climbing/Systems/ClimbSystem.cs | 4 +- .../EntitySystems/FleetingClothingSystem.cs | 4 +- .../Clothing/EntitySystems/MaskSystem.cs | 2 +- .../EntitySystems/ToggleableClothingSystem.cs | 2 +- Content.Shared/Clumsy/ClumsySystem.cs | 12 ++-- .../Pacification/PacificationSystem.cs | 2 +- .../CombatMode/SharedCombatModeSystem.cs | 2 +- .../EntitySystems/AnchorableSystem.cs | 16 ++--- .../EntitySystems/BlockAnchorOnSystem.cs | 4 +- .../Construction/SharedFlatpackSystem.cs | 2 +- .../Containers/ItemSlot/ItemSlotsSystem.cs | 8 +-- Content.Shared/Cuffs/SharedCuffableSystem.cs | 44 ++++++------- .../Damage/Systems/DamageOnAttackedSystem.cs | 2 +- .../Damage/Systems/DamageOnInteractSystem.cs | 2 +- .../Damage/Systems/DamagePopupSystem.cs | 5 +- .../Delivery/SharedDeliverySystem.cs | 14 +++-- Content.Shared/Devour/DevourSystem.cs | 4 +- Content.Shared/Dice/SharedDiceSystem.cs | 2 +- .../SharedDisposalUnitSystem.Interactions.cs | 5 +- .../Doors/Systems/SharedFirelockSystem.cs | 4 +- .../Doors/Systems/SharedTurnstileSystem.cs | 2 +- Content.Shared/Emag/Systems/EmagSystem.cs | 4 +- .../InflatableSafeDisassemblySystem.cs | 2 +- .../Ensnaring/SharedEnsnareableSystem.cs | 12 ++-- .../Execution/SharedExecutionSystem.cs | 46 +++----------- .../ActivatableUIRequiresVisionSystem.cs | 2 +- .../FingerprintReaderSystem.cs | 4 +- Content.Shared/Flash/SharedFlashSystem.cs | 3 +- .../Fluids/EntitySystems/DrainSystem.cs | 10 +-- .../EntitySystems/SolutionDumpingSystem.cs | 6 +- .../Fluids/SharedAbsorbentSystem.cs | 14 ++--- .../Fluids/SharedPuddleSystem.Spillable.cs | 2 +- .../Foldable/DeployFoldableSystem.cs | 2 +- Content.Shared/Foldable/FoldableSystem.cs | 4 +- .../Friends/Systems/PettableFriendSystem.cs | 4 +- Content.Shared/Glue/GlueSystem.cs | 6 +- .../Gravity/SharedGravityGeneratorSystem.cs | 2 +- Content.Shared/Guardian/GuardianSystem.cs | 22 +++---- .../HijackBeacon/HijackBeaconSystem.cs | 4 +- .../HotPotato/SharedHotPotatoSystem.cs | 5 +- .../Implants/SharedImplanterSystem.cs | 12 ++-- .../Interaction/InteractionPopupSystem.cs | 6 +- .../Interaction/SharedInteractionSystem.cs | 2 +- .../Interaction/SmartEquipSystem.cs | 18 +++--- .../Inventory/InventorySystem.Equip.cs | 2 +- .../VirtualItem/SharedVirtualItemSystem.cs | 2 +- .../Item/ItemToggle/ItemToggleSystem.cs | 24 +++----- Content.Shared/Item/MultiHandedItemSystem.cs | 2 +- .../ItemRecall/SharedItemRecallSystem.cs | 16 ++--- .../SharedReagentGrinderSystem.cs | 2 +- .../Kitchen/SharedKitchenSpikeSystem.cs | 10 +-- Content.Shared/Lock/LockSystem.cs | 18 +++--- Content.Shared/Lock/LockingWhitelistSystem.cs | 2 +- Content.Shared/Lube/LubeSystem.cs | 6 +- Content.Shared/Magic/SharedMagicSystem.cs | 2 +- .../Medical/Cryogenics/SharedCryoPodSystem.cs | 2 +- .../Medical/Healing/HealingSystem.cs | 6 +- .../Medical/SharedDefibrillatorSystem.cs | 2 +- .../Medical/Stethoscope/StethoscopeSystem.cs | 12 ++-- .../SuitSensors/SharedSuitSensorSystem.cs | 2 +- .../Movement/Systems/SharedJetpackSystem.cs | 6 +- .../Systems/SharedJumpAbilitySystem.cs | 2 +- .../Ninja/Systems/DashAbilitySystem.cs | 6 +- .../Ninja/Systems/SharedNinjaGlovesSystem.cs | 2 +- .../Ninja/Systems/SharedNinjaSuitSystem.cs | 2 +- .../Ninja/Systems/SharedSpaceNinjaSystem.cs | 2 +- .../EntitySystems/FoodSequenceSystem.cs | 2 +- .../EntitySystems/IngestionSystem.API.cs | 6 +- .../EntitySystems/IngestionSystem.Blockers.cs | 6 +- .../EntitySystems/IngestionSystem.Utensils.cs | 4 +- .../EntitySystems/IngestionSystem.cs | 16 ++--- .../EntitySystems/MessyDrinkerSystem.cs | 2 +- .../Nutrition/EntitySystems/OpenableSystem.cs | 5 +- .../PressurizedSolutionSystem.cs | 2 +- .../EntitySystems/ShakeableSystem.cs | 2 +- .../EntitySystems/SharedCreamPieSystem.cs | 11 +--- Content.Shared/PDA/SharedRingerSystem.cs | 3 +- Content.Shared/Paper/PaperSystem.cs | 8 +-- .../ParcelWrappingSystem.WrappedParcel.cs | 3 +- .../Plunger/Systems/PlungerSystem.cs | 2 +- .../Systems/SharedChameleonProjectorSystem.cs | 6 +- .../PowerCell/PowerCellSystem.API.cs | 20 ++---- Content.Shared/Prying/Systems/PryingSystem.cs | 4 +- Content.Shared/RCD/Systems/RCDAmmoSystem.cs | 4 +- Content.Shared/RCD/Systems/RCDSystem.cs | 32 +++++----- .../EntitySystems/EncryptionKeySystem.cs | 16 ++--- .../Radio/EntitySystems/SharedJammerSystem.cs | 4 +- .../EntitySystems/SharedDoorRemoteSystem.cs | 4 +- Content.Shared/Repairable/RepairableSystem.cs | 2 +- .../Research/Systems/BlueprintSystem.cs | 4 +- .../Systems/SharedResearchStealerSystem.cs | 2 +- .../Systems/TechnologyDiskSystem.cs | 2 +- .../RetractableItemActionSystem.cs | 2 +- Content.Shared/Rotatable/RotatableSystem.cs | 6 +- .../Salvage/Fulton/SharedFultonSystem.cs | 10 +-- .../Security/Systems/SharedGenpopSystem.cs | 6 +- .../SelectableComponentAdderSystem.cs | 2 +- .../Sericulture/SericultureSystem.cs | 4 +- .../Systems/SharedEmergencyShuttleSystem.cs | 2 +- .../Silicons/Borgs/SharedBorgSystem.API.cs | 8 +-- .../Silicons/Borgs/SharedBorgSystem.cs | 4 +- Content.Shared/Silicons/Bots/MedibotSystem.cs | 8 +-- .../Silicons/Laws/SharedSiliconLawSystem.cs | 4 +- .../StationAi/SharedStationAiSystem.Held.cs | 4 +- .../StationAi/SharedStationAiSystem.cs | 4 +- .../EntitySystems/SharedEmitterSystem.cs | 2 +- .../SmartFridge/SharedSmartFridgeSystem.cs | 6 +- .../Species/Systems/GibActionSystem.cs | 2 +- .../Species/Systems/ReformSystem.cs | 2 +- .../SprayPainter/SharedSprayPainterSystem.cs | 4 +- .../SprayPainter/SprayPainterAmmoSystem.cs | 4 +- Content.Shared/Stacks/SharedStackSystem.cs | 6 +- Content.Shared/Sticky/Systems/StickySystem.cs | 8 +-- .../EntitySystems/SecretStashSystem.cs | 10 +-- .../SharedEntityStorageSystem.cs | 2 +- .../EntitySystems/SharedStorageSystem.cs | 6 +- .../Strip/SharedStrippableSystem.cs | 61 +++++++++++-------- .../Stunnable/SharedStunSystem.Knockdown.cs | 8 +-- .../SubFloor/SharedSubFloorHideSystem.cs | 4 +- .../Tabletop/SharedTabletopSystem.cs | 2 +- .../Systems/SwapTeleporterSystem.cs | 14 ++--- .../Systems/SharedEntityHeaterSystem.cs | 2 +- .../Thief/Systems/ThiefBeaconSystem.cs | 4 +- Content.Shared/Throwing/CatchableSystem.cs | 5 +- Content.Shared/Tiles/FloorTileSystem.cs | 2 +- .../Tools/Systems/SharedToolSystem.Welder.cs | 10 +-- .../Tools/Systems/ToolRefinableSystem.cs | 6 +- .../Systems/DnaScrambleOnTriggerSystem.cs | 1 - .../Trigger/Systems/PopupOnTriggerSystem.cs | 4 +- .../Systems/TriggerOnMobstateChangeSystem.cs | 4 +- .../Systems/TriggerSystem.Condition.cs | 2 +- .../Trigger/Systems/TriggerSystem.Timer.cs | 6 +- .../Trigger/Systems/TriggerSystem.Voice.cs | 6 +- .../Trigger/Systems/TriggerSystem.cs | 2 +- .../SharedDeployableTurretControllerSystem.cs | 2 +- .../Turrets/SharedDeployableTurretSystem.cs | 10 +-- .../ActivatableUIRequiresAnchorSystem.cs | 2 +- .../UserInterface/ActivatableUISystem.cs | 2 +- .../SharedVendingMachineSystem.Restock.cs | 8 +-- .../SharedVendingMachineSystem.cs | 6 +- .../Weapons/Melee/SharedMeleeWeaponSystem.cs | 4 +- .../Systems/BatteryWeaponFireModesSystem.cs | 2 +- .../SharedGunSystem.ChamberMagazine.cs | 4 +- .../Ranged/Upgrades/GunUpgradeSystem.cs | 6 +- .../Wieldable/SharedWieldableSystem.cs | 16 ++--- .../Artifact/SharedXenoArtifactSystem.XAE.cs | 2 +- .../XAE/XAERandomTeleportInvokerSystem.cs | 2 +- .../Equipment/SharedArtifactCrusherSystem.cs | 2 +- 178 files changed, 545 insertions(+), 610 deletions(-) diff --git a/Content.Server/Morgue/CrematoriumSystem.cs b/Content.Server/Morgue/CrematoriumSystem.cs index eec58cd151..4b1dbfdf9b 100644 --- a/Content.Server/Morgue/CrematoriumSystem.cs +++ b/Content.Server/Morgue/CrematoriumSystem.cs @@ -30,7 +30,7 @@ public sealed partial class CrematoriumSystem : SharedCrematoriumSystem if (mind.OwnedEntity is { Valid: true } entity) { - Popup.PopupEntity(Loc.GetString("crematorium-entity-storage-component-suicide-message"), entity); + Popup.PopupEntity(Loc.GetString("crematorium-entity-storage-component-suicide-message"), entity, entity); } } diff --git a/Content.Shared/Abilities/Goliath/GoliathTentacleSystem.cs b/Content.Shared/Abilities/Goliath/GoliathTentacleSystem.cs index 3e48388fbe..2889fb3abc 100644 --- a/Content.Shared/Abilities/Goliath/GoliathTentacleSystem.cs +++ b/Content.Shared/Abilities/Goliath/GoliathTentacleSystem.cs @@ -33,7 +33,7 @@ public sealed partial class GoliathTentacleSystem : EntitySystem // TODO: animation - _popup.PopupPredicted(Loc.GetString("tentacle-ability-use-popup", ("entity", args.Performer)), args.Performer, args.Performer, type: PopupType.SmallCaution); + _popup.PopupEntity(Loc.GetString("tentacle-ability-use-popup", ("entity", args.Performer)), args.Performer, type: PopupType.SmallCaution); _stun.TryAddStunDuration(args.Performer, TimeSpan.FromSeconds(0.8f)); var coords = args.Target; diff --git a/Content.Shared/Abilities/Mime/MimePowersSystem.cs b/Content.Shared/Abilities/Mime/MimePowersSystem.cs index a900e32e5f..1eb107b426 100644 --- a/Content.Shared/Abilities/Mime/MimePowersSystem.cs +++ b/Content.Shared/Abilities/Mime/MimePowersSystem.cs @@ -51,7 +51,7 @@ public sealed partial class MimePowersSystem : EntitySystem mime.ReadyToRepent = true; Dirty(uid, mime); - _popupSystem.PopupClient(Loc.GetString("mime-ready-to-repent"), uid, uid); + _popupSystem.PopupEntity(Loc.GetString("mime-ready-to-repent"), uid, uid); } } @@ -97,13 +97,13 @@ public sealed partial class MimePowersSystem : EntitySystem // Check if the tile is blocked by a wall or mob, and don't create the wall if so if (_turf.IsTileBlocked(tile.Value, CollisionGroup.Impassable | CollisionGroup.Opaque)) { - _popupSystem.PopupClient(Loc.GetString("mime-invisible-wall-failed"), ent, ent); + _popupSystem.PopupEntity(Loc.GetString("mime-invisible-wall-failed"), ent, ent); return; } var messageSelf = Loc.GetString("mime-invisible-wall-popup-self", ("mime", Identity.Entity(ent.Owner, EntityManager))); var messageOthers = Loc.GetString("mime-invisible-wall-popup-others", ("mime", Identity.Entity(ent.Owner, EntityManager))); - _popupSystem.PopupPredicted(messageSelf, messageOthers, ent, ent); + _popupSystem.PopupEntity(messageSelf, messageOthers, ent, ent); // Make sure we set the invisible wall to despawn properly PredictedSpawnAtPosition(ent.Comp.WallPrototype, _turf.GetTileCenter(tile.Value)); @@ -163,7 +163,7 @@ public sealed partial class MimePowersSystem : EntitySystem if (!mimePowers.ReadyToRepent) { - _popupSystem.PopupClient(Loc.GetString("mime-not-ready-repent"), uid, uid); + _popupSystem.PopupEntity(Loc.GetString("mime-not-ready-repent"), uid, uid); return; } diff --git a/Content.Shared/Access/Systems/ActivatableUIRequiresAccessSystem.cs b/Content.Shared/Access/Systems/ActivatableUIRequiresAccessSystem.cs index 7d40bcac6c..5692181abb 100644 --- a/Content.Shared/Access/Systems/ActivatableUIRequiresAccessSystem.cs +++ b/Content.Shared/Access/Systems/ActivatableUIRequiresAccessSystem.cs @@ -24,7 +24,7 @@ public sealed partial class ActivatableUIRequiresAccessSystem : EntitySystem { args.Cancel(); if (activatableUI.Comp.PopupMessage != null && !args.Silent) - _popup.PopupClient(Loc.GetString(activatableUI.Comp.PopupMessage), activatableUI, args.User); + _popup.PopupEntity(Loc.GetString(activatableUI.Comp.PopupMessage), activatableUI, args.User); } } } diff --git a/Content.Shared/Actions/ConfirmableActionSystem.cs b/Content.Shared/Actions/ConfirmableActionSystem.cs index dda81b0442..f49956311e 100644 --- a/Content.Shared/Actions/ConfirmableActionSystem.cs +++ b/Content.Shared/Actions/ConfirmableActionSystem.cs @@ -68,7 +68,7 @@ public sealed partial class ConfirmableActionSystem : EntitySystem comp.NextUnprime = comp.NextConfirm + comp.PrimeTime; Dirty(uid, comp); - _popup.PopupClient(Loc.GetString(comp.Popup), user, user, PopupType.LargeCaution); + _popup.PopupEntity(Loc.GetString(comp.Popup), user, user, PopupType.LargeCaution); } private void Unprime(Entity ent) diff --git a/Content.Shared/Actions/DangerousActionSystem.cs b/Content.Shared/Actions/DangerousActionSystem.cs index e509384c61..7dcd6b4a43 100644 --- a/Content.Shared/Actions/DangerousActionSystem.cs +++ b/Content.Shared/Actions/DangerousActionSystem.cs @@ -27,7 +27,7 @@ public sealed partial class DangerousActionSystem : EntitySystem if (!_pacifiedQuery.HasComp(args.User)) return; //if found popup message and cancel - _popup.PopupClient(Loc.GetString(ent.Comp.PacificationMessage),args.User,args.User,PopupType.Small); + _popup.PopupEntity(Loc.GetString(ent.Comp.PacificationMessage), args.User, args.User); args.Cancelled = true; } diff --git a/Content.Shared/Actions/PopupOnActionSystem.cs b/Content.Shared/Actions/PopupOnActionSystem.cs index 6312c47dbf..76f2a57d6b 100644 --- a/Content.Shared/Actions/PopupOnActionSystem.cs +++ b/Content.Shared/Actions/PopupOnActionSystem.cs @@ -44,7 +44,7 @@ public sealed partial class PopupOnActionSystem : EntitySystem // Popup to show to the performer. // If there is a target the popup is located on the target, if there is no target it is located on the user. - _popup.PopupClient(selfMessage, target ?? args.Performer, args.Performer, ent.Comp.PopupType); + _popup.PopupEntity(selfMessage, target ?? args.Performer, args.Performer, ent.Comp.PopupType); // Popup to show to the target. // Located on the target. diff --git a/Content.Shared/Animals/ShearableSystem.cs b/Content.Shared/Animals/ShearableSystem.cs index 306e5d6fa5..09415849bd 100644 --- a/Content.Shared/Animals/ShearableSystem.cs +++ b/Content.Shared/Animals/ShearableSystem.cs @@ -139,7 +139,7 @@ public sealed partial class SharedShearableSystem : EntitySystem var feedbackPopupString = Loc.GetString("shearable-system-no-product", ("target", Identity.Entity(ent.Owner, EntityManager)), ("product", shearedProduct.Name)); - _popup.PopupClient(feedbackPopupString, ent.Owner, userUid); + _popup.PopupEntity(feedbackPopupString, ent.Owner, userUid); } // Fail @@ -191,7 +191,7 @@ public sealed partial class SharedShearableSystem : EntitySystem var feedbackPopupString = Loc.GetString("shearable-system-no-product", ("target", Identity.Entity(ent.Owner, EntityManager)), ("product", shearedProduct.Name)); - _popup.PopupClient(feedbackPopupString, ent.Owner, args.Args.User); + _popup.PopupEntity(feedbackPopupString, ent.Owner, args.Args.User); return; } @@ -215,7 +215,7 @@ public sealed partial class SharedShearableSystem : EntitySystem } // Success message. - _popup.PopupClient(Loc.GetString("shearable-system-success", ("target", Identity.Entity(ent.Owner, EntityManager)), ("product", shearedProduct.Name)), ent.Owner, args.Args.User, PopupType.Medium); + _popup.PopupEntity(Loc.GetString("shearable-system-success", ("target", Identity.Entity(ent.Owner, EntityManager)), ("product", shearedProduct.Name)), ent.Owner, args.Args.User, PopupType.Medium); } /// diff --git a/Content.Shared/Animals/Systems/SharedParrotMemorySystem.cs b/Content.Shared/Animals/Systems/SharedParrotMemorySystem.cs index 22048bb5c0..a9d03948a3 100644 --- a/Content.Shared/Animals/Systems/SharedParrotMemorySystem.cs +++ b/Content.Shared/Animals/Systems/SharedParrotMemorySystem.cs @@ -36,7 +36,7 @@ public abstract partial class SharedParrotMemorySystem : EntitySystem Icon = new SpriteSpecifier.Texture(new("/Textures/Interface/AdminActions/clear-parrot.png")), Act = () => { - _popup.PopupClient(Loc.GetString("parrot-popup-memory-cleared"), entity.Owner, user); + _popup.PopupEntity(Loc.GetString("parrot-popup-memory-cleared"), entity.Owner, user); if (_net.IsServer) entity.Comp.SpeechMemories.Clear(); diff --git a/Content.Shared/Animals/UdderSystem.cs b/Content.Shared/Animals/UdderSystem.cs index e6d01eb600..1271915e5a 100644 --- a/Content.Shared/Animals/UdderSystem.cs +++ b/Content.Shared/Animals/UdderSystem.cs @@ -115,7 +115,7 @@ public sealed partial class UdderSystem : EntitySystem var quantity = solution.Volume; if (quantity == 0) { - _popupSystem.PopupClient(Loc.GetString("udder-system-dry"), entity.Owner, args.Args.User); + _popupSystem.PopupEntity(Loc.GetString("udder-system-dry"), entity.Owner, args.Args.User); return; } @@ -125,7 +125,7 @@ public sealed partial class UdderSystem : EntitySystem var split = _solutionContainerSystem.SplitSolution(entity.Comp.Solution.Value, quantity); _solutionContainerSystem.TryAddSolution(targetSoln.Value, split); - _popupSystem.PopupClient(Loc.GetString("udder-system-success", ("amount", quantity), ("target", Identity.Entity(args.Args.Used.Value, EntityManager))), entity.Owner, + _popupSystem.PopupEntity(Loc.GetString("udder-system-success", ("amount", quantity), ("target", Identity.Entity(args.Args.Used.Value, EntityManager))), entity.Owner, args.Args.User, PopupType.Medium); } diff --git a/Content.Shared/Anomaly/AnomalySynchronizerSystem.cs b/Content.Shared/Anomaly/AnomalySynchronizerSystem.cs index 1d780ef603..3cb4eaca0b 100644 --- a/Content.Shared/Anomaly/AnomalySynchronizerSystem.cs +++ b/Content.Shared/Anomaly/AnomalySynchronizerSystem.cs @@ -89,7 +89,7 @@ public sealed partial class AnomalySynchronizerSystem : EntitySystem { if (!_power.IsPowered(ent.Owner)) { - _popup.PopupClient(Loc.GetString("base-computer-ui-component-not-powered", ("machine", ent)), ent, user); + _popup.PopupEntity(Loc.GetString("base-computer-ui-component-not-powered", ("machine", ent)), ent, user); return false; } @@ -98,7 +98,7 @@ public sealed partial class AnomalySynchronizerSystem : EntitySystem if (anomaly.Owner is { Valid: false }) // no anomaly in range { - _popup.PopupClient(Loc.GetString("anomaly-sync-no-anomaly"), ent, user); + _popup.PopupEntity(Loc.GetString("anomaly-sync-no-anomaly"), ent, user); return false; } @@ -168,7 +168,7 @@ public sealed partial class AnomalySynchronizerSystem : EntitySystem if (ent.Comp.PulseOnConnect) _anomaly.DoAnomalyPulse(anomaly, anomaly); - _popup.PopupPredicted(Loc.GetString("anomaly-sync-connected"), ent, user, PopupType.Medium); + _popup.PopupEntity(Loc.GetString("anomaly-sync-connected"), ent, PopupType.Medium); _audio.PlayPredicted(ent.Comp.ConnectedSound, ent, user); } @@ -184,7 +184,7 @@ public sealed partial class AnomalySynchronizerSystem : EntitySystem _anomaly.DoAnomalyPulse(ent.Comp.ConnectedAnomaly.Value, anomaly); } - _popup.PopupPredicted(Loc.GetString("anomaly-sync-disconnected"), ent, user, PopupType.Large); + _popup.PopupEntity(Loc.GetString("anomaly-sync-disconnected"), ent, PopupType.Large); _audio.PlayPredicted(ent.Comp.DisconnectedSound, ent, user); ent.Comp.ConnectedAnomaly = null; diff --git a/Content.Shared/Anomaly/SharedAnomalyScannerSystem.cs b/Content.Shared/Anomaly/SharedAnomalyScannerSystem.cs index c9bd3a32a7..9cd5ce49b2 100644 --- a/Content.Shared/Anomaly/SharedAnomalyScannerSystem.cs +++ b/Content.Shared/Anomaly/SharedAnomalyScannerSystem.cs @@ -76,7 +76,7 @@ public abstract partial class SharedAnomalyScannerSystem : EntitySystem return; Audio.PlayPredicted(component.CompleteSound, uid, args.User); - Popup.PopupPredicted(Loc.GetString("anomaly-scanner-component-scan-complete"), uid, args.User); + Popup.PopupEntity(Loc.GetString("anomaly-scanner-component-scan-complete"), uid, args.User); UI.OpenUi(uid, AnomalyScannerUiKey.Key, args.User); diff --git a/Content.Shared/Atmos/EntitySystems/SharedAtmosPipeLayersSystem.cs b/Content.Shared/Atmos/EntitySystems/SharedAtmosPipeLayersSystem.cs index c70424f69f..ad9cac0546 100644 --- a/Content.Shared/Atmos/EntitySystems/SharedAtmosPipeLayersSystem.cs +++ b/Content.Shared/Atmos/EntitySystems/SharedAtmosPipeLayersSystem.cs @@ -123,7 +123,7 @@ public abstract partial class SharedAtmosPipeLayersSystem : EntitySystem if (TryComp(ent, out var subFloorHide) && subFloorHide.IsUnderCover) { - _popup.PopupClient(Loc.GetString("atmos-pipe-layers-component-cannot-adjust-pipes"), ent, args.User); + _popup.PopupEntity(Loc.GetString("atmos-pipe-layers-component-cannot-adjust-pipes"), ent, args.User); return; } @@ -142,7 +142,7 @@ public abstract partial class SharedAtmosPipeLayersSystem : EntitySystem var toolName = Loc.GetString(toolProto.ToolName).ToLower(); var message = Loc.GetString("atmos-pipe-layers-component-tool-missing", ("toolName", toolName)); - _popup.PopupClient(message, ent, args.User); + _popup.PopupEntity(message, ent, args.User); } return; @@ -218,7 +218,7 @@ public abstract partial class SharedAtmosPipeLayersSystem : EntitySystem var layerName = GetPipeLayerName(ent.Comp.CurrentPipeLayer); var message = Loc.GetString("atmos-pipe-layers-component-change-layer", ("layerName", layerName)); - _popup.PopupClient(message, ent, user); + _popup.PopupEntity(message, ent, user); } } diff --git a/Content.Shared/Bed/Sleep/SleepingSystem.cs b/Content.Shared/Bed/Sleep/SleepingSystem.cs index 680f042a2f..3acbce179e 100644 --- a/Content.Shared/Bed/Sleep/SleepingSystem.cs +++ b/Content.Shared/Bed/Sleep/SleepingSystem.cs @@ -341,7 +341,7 @@ public sealed partial class SleepingSystem : EntitySystem if (user != null) { _audio.PlayPredicted(ent.Comp.WakeAttemptSound, ent, user); - _popupSystem.PopupClient(Loc.GetString("wake-other-failure", ("target", Identity.Entity(ent, EntityManager))), ent, user, PopupType.SmallCaution); + _popupSystem.PopupEntity(Loc.GetString("wake-other-failure", ("target", Identity.Entity(ent, EntityManager))), ent, user, PopupType.SmallCaution); } return false; } @@ -349,7 +349,7 @@ public sealed partial class SleepingSystem : EntitySystem if (user != null) { _audio.PlayPredicted(ent.Comp.WakeAttemptSound, ent, user); - _popupSystem.PopupClient(Loc.GetString("wake-other-success", ("target", Identity.Entity(ent, EntityManager))), ent, user); + _popupSystem.PopupEntity(Loc.GetString("wake-other-success", ("target", Identity.Entity(ent, EntityManager))), ent, user); } return RemComp(ent); diff --git a/Content.Shared/Body/Systems/SharedBloodstreamSystem.cs b/Content.Shared/Body/Systems/SharedBloodstreamSystem.cs index ae44d693d7..968a62286c 100644 --- a/Content.Shared/Body/Systems/SharedBloodstreamSystem.cs +++ b/Content.Shared/Body/Systems/SharedBloodstreamSystem.cs @@ -231,11 +231,7 @@ public abstract partial class SharedBloodstreamSystem : EntitySystem // We'll play a special sound and popup for feedback. // Only the burned entity can see the popup. - // TODO: Make the PopupSystem API more sane so that this is handled by a single method. - if (args.Origin == ent.Owner) // predict the popup on the client if they caused damage to themselves - _popup.PopupClient(Loc.GetString("bloodstream-component-wounds-cauterized"), ent, ent, PopupType.Medium); - else - _popup.PopupEntity(Loc.GetString("bloodstream-component-wounds-cauterized"), ent, ent, PopupType.Medium); + _popup.PopupEntity(Loc.GetString("bloodstream-component-wounds-cauterized"), ent, ent, PopupType.Medium); _audio.PlayPredicted(ent.Comp.BloodHealedSound, ent, args.Origin); } } diff --git a/Content.Shared/Body/Systems/SharedInternalsSystem.cs b/Content.Shared/Body/Systems/SharedInternalsSystem.cs index a907a3720f..295e1d1ce8 100644 --- a/Content.Shared/Body/Systems/SharedInternalsSystem.cs +++ b/Content.Shared/Body/Systems/SharedInternalsSystem.cs @@ -85,7 +85,7 @@ public abstract partial class SharedInternalsSystem : EntitySystem if (internals.BreathTools.Count == 0) { var message = user == target ? Loc.GetString("internals-self-no-breath-tool") : Loc.GetString("internals-other-no-breath-tool", ("ent", Identity.Name(target, EntityManager, user))); - _popupSystem.PopupClient(message, target, user); + _popupSystem.PopupEntity(message, target, user); return false; } @@ -96,7 +96,7 @@ public abstract partial class SharedInternalsSystem : EntitySystem if (tank == null) { var message = user == target ? Loc.GetString("internals-self-no-tank") : Loc.GetString("internals-other-no-tank", ("ent", Identity.Name(target, EntityManager, user))); - _popupSystem.PopupClient(message, target, user); + _popupSystem.PopupEntity(message, target, user); return false; } diff --git a/Content.Shared/Buckle/SharedBuckleSystem.Buckle.cs b/Content.Shared/Buckle/SharedBuckleSystem.Buckle.cs index cb6a9396c3..79fb250b8f 100644 --- a/Content.Shared/Buckle/SharedBuckleSystem.Buckle.cs +++ b/Content.Shared/Buckle/SharedBuckleSystem.Buckle.cs @@ -237,8 +237,8 @@ public abstract partial class SharedBuckleSystem if (_whitelistSystem.IsWhitelistFail(strapComp.Whitelist, buckleUid) || _whitelistSystem.IsWhitelistPass(strapComp.Blacklist, buckleUid)) { - if (popup) - _popup.PopupClient(Loc.GetString("buckle-component-cannot-fit-message"), user, PopupType.Medium); + if (popup && user != null) + _popup.PopupEntity(Loc.GetString("buckle-component-cannot-fit-message"), user.Value, user, PopupType.Medium); return false; } @@ -258,21 +258,21 @@ public abstract partial class SharedBuckleSystem if (user != null && !HasComp(user)) { if (popup) - _popup.PopupClient(Loc.GetString("buckle-component-no-hands-message"), user); + _popup.PopupEntity(Loc.GetString("buckle-component-no-hands-message"), user.Value, user); return false; } if (buckleComp.Buckled && !TryUnbuckle(buckleUid, user, buckleComp)) { - if (popup) + if (popup && user != null) { var message = Loc.GetString(buckleUid == user ? "buckle-component-already-buckled-message" : "buckle-component-other-already-buckled-message", ("owner", Identity.Entity(buckleUid, EntityManager))); - _popup.PopupClient(message, user); + _popup.PopupEntity(message, user.Value, user); } return false; @@ -295,7 +295,8 @@ public abstract partial class SharedBuckleSystem : "buckle-component-other-cannot-buckle-message", ("owner", Identity.Entity(buckleUid, EntityManager))); - _popup.PopupClient(message, user); + if (user != null) + _popup.PopupEntity(message, user.Value, user); } return false; @@ -310,7 +311,8 @@ public abstract partial class SharedBuckleSystem : "buckle-component-other-cannot-buckle-message", ("owner", Identity.Entity(buckleUid, EntityManager))); - _popup.PopupClient(message, user); + if (user != null) + _popup.PopupEntity(message, user.Value, user); } return false; diff --git a/Content.Shared/Burial/BurialSystem.cs b/Content.Shared/Burial/BurialSystem.cs index 73e7c5b997..04884676e3 100644 --- a/Content.Shared/Burial/BurialSystem.cs +++ b/Content.Shared/Burial/BurialSystem.cs @@ -64,7 +64,7 @@ public sealed partial class BurialSystem : EntitySystem } else { - _popupSystem.PopupClient(Loc.GetString("grave-digging-requires-tool", ("grave", args.Target)), uid, args.User); + _popupSystem.PopupEntity(Loc.GetString("grave-digging-requires-tool", ("grave", args.Target)), uid, args.User); } args.Handled = true; @@ -85,7 +85,7 @@ public sealed partial class BurialSystem : EntitySystem if (args.Handled || !args.Complex) return; - _popupSystem.PopupClient(Loc.GetString("grave-digging-requires-tool", ("grave", args.Target)), uid, args.User); + _popupSystem.PopupEntity(Loc.GetString("grave-digging-requires-tool", ("grave", args.Target)), uid, args.User); args.Handled = true; } @@ -118,13 +118,13 @@ public sealed partial class BurialSystem : EntitySystem { var selfMessage = Loc.GetString("grave-start-digging-user", ("grave", uid), ("tool", used)); var othersMessage = Loc.GetString("grave-start-digging-others", ("user", user), ("grave", uid), ("tool", used)); - _popupSystem.PopupPredicted(selfMessage, othersMessage, user, user); + _popupSystem.PopupEntity(selfMessage, othersMessage, user, user); component.ActiveShovelDigging = true; Dirty(uid, component); } else { - _popupSystem.PopupClient(Loc.GetString("grave-start-digging-user-trapped", ("grave", uid)), user, user, PopupType.Medium); + _popupSystem.PopupEntity(Loc.GetString("grave-start-digging-user-trapped", ("grave", uid)), user, user, PopupType.Medium); } } diff --git a/Content.Shared/CartridgeLoader/Cartridges/LogProbeCartridgeSystem.cs b/Content.Shared/CartridgeLoader/Cartridges/LogProbeCartridgeSystem.cs index a51cd2d356..3716144e88 100644 --- a/Content.Shared/CartridgeLoader/Cartridges/LogProbeCartridgeSystem.cs +++ b/Content.Shared/CartridgeLoader/Cartridges/LogProbeCartridgeSystem.cs @@ -46,7 +46,7 @@ public sealed partial class LogProbeCartridgeSystem : EntitySystem //Play scanning sound with slightly randomized pitch _audio.PlayPredicted(ent.Comp.SoundScan, target, args.Args.User); - _popup.PopupPredictedCursor(Loc.GetString("log-probe-scan", ("device", target)), args.Args.User); + _popup.PopupCursor(Loc.GetString("log-probe-scan", ("device", target)), args.Args.User); ent.Comp.EntityName = Name(target); ent.Comp.PulledAccessLogs.Clear(); diff --git a/Content.Shared/CartridgeLoader/Cartridges/NetProbeCartridgeSystem.cs b/Content.Shared/CartridgeLoader/Cartridges/NetProbeCartridgeSystem.cs index 2b0dfe6b8f..c204db917e 100644 --- a/Content.Shared/CartridgeLoader/Cartridges/NetProbeCartridgeSystem.cs +++ b/Content.Shared/CartridgeLoader/Cartridges/NetProbeCartridgeSystem.cs @@ -45,7 +45,7 @@ public sealed partial class NetProbeCartridgeSystem : EntitySystem // Why is there no NextFloat(float min, float max)??? var audioParams = AudioParams.Default.WithVolume(-2f).WithVariation(0.2f); _audioSystem.PlayPredicted(component.SoundScan, target, args.Args.User, audioParams); - _popupSystem.PopupPredictedCursor(Loc.GetString("net-probe-scan", ("device", target)), args.Args.User); + _popupSystem.PopupCursor(Loc.GetString("net-probe-scan", ("device", target)), args.Args.User); // Limit the amount of saved probe results to 9 // This is hardcoded because the UI doesn't support a dynamic number of results diff --git a/Content.Shared/Changeling/Systems/ChangelingAbilitySystem.cs b/Content.Shared/Changeling/Systems/ChangelingAbilitySystem.cs index 8b349efefb..3cdf1f3a34 100644 --- a/Content.Shared/Changeling/Systems/ChangelingAbilitySystem.cs +++ b/Content.Shared/Changeling/Systems/ChangelingAbilitySystem.cs @@ -60,7 +60,7 @@ public sealed partial class ChangelingAbilitySystem : EntitySystem var selfPopup = Loc.TryGetString(ent.Comp.ActivatedPopupSelf, out var self, ("user", Identity.Entity(args.Performer, EntityManager)), ("restraint", toDelete.First())) ? self : null; var othersPopup = Loc.TryGetString(ent.Comp.ActivatedPopup, out var others, ("user", Identity.Entity(args.Performer, EntityManager)), ("restraint", toDelete.First())) ? others : null; - _popup.PopupPredicted(selfPopup, othersPopup, args.Performer, args.Performer, PopupType.LargeCaution); + _popup.PopupEntity(selfPopup, othersPopup, args.Performer, args.Performer, PopupType.LargeCaution); _audio.PlayPredicted(ent.Comp.ActivatedSound, args.Performer, args.Performer); foreach (var deleted in toDelete) diff --git a/Content.Shared/Changeling/Systems/ChangelingClonerSystem.cs b/Content.Shared/Changeling/Systems/ChangelingClonerSystem.cs index 071844c87b..dd13f5948b 100644 --- a/Content.Shared/Changeling/Systems/ChangelingClonerSystem.cs +++ b/Content.Shared/Changeling/Systems/ChangelingClonerSystem.cs @@ -149,7 +149,7 @@ public sealed partial class ChangelingClonerSystem : EntitySystem var targetIdentity = Identity.Entity(target, EntityManager); var userMsg = Loc.GetString("changeling-cloner-component-draw-user", ("user", userIdentity), ("target", targetIdentity)); var targetMsg = Loc.GetString("changeling-cloner-component-draw-target", ("user", userIdentity), ("target", targetIdentity)); - _popup.PopupClient(userMsg, target, user); + _popup.PopupEntity(userMsg, target, user); if (user != target) // don't show the warning if using the item on yourself _popup.PopupEntity(targetMsg, user, target, PopupType.LargeCaution); @@ -185,7 +185,7 @@ public sealed partial class ChangelingClonerSystem : EntitySystem var targetIdentity = Identity.Entity(target, EntityManager); var userMsg = Loc.GetString("changeling-cloner-component-inject-user", ("user", userIdentity), ("target", targetIdentity)); var targetMsg = Loc.GetString("changeling-cloner-component-inject-target", ("user", userIdentity), ("target", targetIdentity)); - _popup.PopupClient(userMsg, target, user); + _popup.PopupEntity(userMsg, target, user); if (user != target) // don't show the warning if using the item on yourself _popup.PopupEntity(targetMsg, user, target, PopupType.LargeCaution); @@ -282,7 +282,7 @@ public sealed partial class ChangelingClonerSystem : EntitySystem if (user == null) return; - _popup.PopupClient(Loc.GetString("changeling-cloner-component-reset-popup"), user.Value, user.Value); + _popup.PopupEntity(Loc.GetString("changeling-cloner-component-reset-popup"), user.Value, user.Value); } } diff --git a/Content.Shared/Changeling/Systems/ChangelingDevourSystem.cs b/Content.Shared/Changeling/Systems/ChangelingDevourSystem.cs index dab88ec0e4..17cab306ee 100644 --- a/Content.Shared/Changeling/Systems/ChangelingDevourSystem.cs +++ b/Content.Shared/Changeling/Systems/ChangelingDevourSystem.cs @@ -88,7 +88,7 @@ public sealed partial class ChangelingDevourSystem : EntitySystem var selfMessage = Loc.GetString("changeling-devour-begin-windup-self", ("user", Identity.Entity(ent.Owner, EntityManager))); var othersMessage = Loc.GetString("changeling-devour-begin-windup-others", ("user", Identity.Entity(ent.Owner, EntityManager))); - _popupSystem.PopupPredicted( + _popupSystem.PopupEntity( selfMessage, othersMessage, args.Performer, @@ -113,7 +113,7 @@ public sealed partial class ChangelingDevourSystem : EntitySystem var selfMessage = Loc.GetString("changeling-devour-begin-consume-self", ("user", Identity.Entity(ent.Owner, EntityManager))); var othersMessage = Loc.GetString("changeling-devour-begin-consume-others", ("user", Identity.Entity(ent.Owner, EntityManager))); - _popupSystem.PopupPredicted( + _popupSystem.PopupEntity( selfMessage, othersMessage, ent.Owner, @@ -160,7 +160,7 @@ public sealed partial class ChangelingDevourSystem : EntitySystem var selfMessage = Loc.GetString("changeling-devour-consume-complete-self", ("user", Identity.Entity(ent.Owner, EntityManager))); var othersMessage = Loc.GetString("changeling-devour-consume-complete-others", ("user", Identity.Entity(ent.Owner, EntityManager))); - _popupSystem.PopupPredicted( + _popupSystem.PopupEntity( selfMessage, othersMessage, ent.Owner, @@ -203,42 +203,42 @@ public sealed partial class ChangelingDevourSystem : EntitySystem if (!HasComp(victim)) { if (showPopup) - _popupSystem.PopupClient(Loc.GetString("changeling-devour-attempt-failed-cannot-devour"), changeling.Owner, changeling.Owner, PopupType.Medium); + _popupSystem.PopupEntity(Loc.GetString("changeling-devour-attempt-failed-cannot-devour"), changeling.Owner, changeling.Owner, PopupType.Medium); return false; } if (HasComp(victim)) { if (showPopup) - _popupSystem.PopupClient(Loc.GetString("changeling-devour-attempt-failed-devoured-recently"), changeling.Owner, changeling.Owner, PopupType.Medium); + _popupSystem.PopupEntity(Loc.GetString("changeling-devour-attempt-failed-devoured-recently"), changeling.Owner, changeling.Owner, PopupType.Medium); return false; } if (checkDead && !_mobState.IsDead(victim)) { if (showPopup) - _popupSystem.PopupClient(Loc.GetString("changeling-devour-attempt-failed-not-dead"), changeling.Owner, changeling.Owner, PopupType.Medium); + _popupSystem.PopupEntity(Loc.GetString("changeling-devour-attempt-failed-not-dead"), changeling.Owner, changeling.Owner, PopupType.Medium); return false; } if (HasComp(victim)) { if (showPopup) - _popupSystem.PopupClient(Loc.GetString("changeling-devour-attempt-failed-rotting"), changeling.Owner, changeling.Owner, PopupType.Medium); + _popupSystem.PopupEntity(Loc.GetString("changeling-devour-attempt-failed-rotting"), changeling.Owner, changeling.Owner, PopupType.Medium); return false; } if (checkProtected && IsTargetProtected(victim, changeling)) { if (showPopup) - _popupSystem.PopupClient(Loc.GetString("changeling-devour-attempt-failed-protected"), changeling.Owner, changeling.Owner, PopupType.Medium); + _popupSystem.PopupEntity(Loc.GetString("changeling-devour-attempt-failed-protected"), changeling.Owner, changeling.Owner, PopupType.Medium); return false; } if (!_changelingIdentity.HasIdentity(changeling.Owner, victim) && !_changelingIdentity.HasFreeDisguiseSlot(changeling.Owner)) { if (showPopup) - _popupSystem.PopupClient(Loc.GetString("changeling-devour-attempt-failed-no-space"), changeling.Owner, changeling.Owner, PopupType.Medium); + _popupSystem.PopupEntity(Loc.GetString("changeling-devour-attempt-failed-no-space"), changeling.Owner, changeling.Owner, PopupType.Medium); return false; } diff --git a/Content.Shared/Changeling/Systems/ChangelingTransformSystem.cs b/Content.Shared/Changeling/Systems/ChangelingTransformSystem.cs index 4124c524a8..4e5c0940be 100644 --- a/Content.Shared/Changeling/Systems/ChangelingTransformSystem.cs +++ b/Content.Shared/Changeling/Systems/ChangelingTransformSystem.cs @@ -113,7 +113,7 @@ public sealed partial class ChangelingTransformSystem : EntitySystem if (!_changelingIdentity.TryGetDataFromIdentity((ent.Owner, identity), targetIdentity.Value, out _)) return; // this identity does not belong to this player - _popup.PopupClient(Loc.GetString("changeling-transform-bui-drop-identity-entity-popup", ("entity", targetIdentity.Value)), ent.Owner, PopupType.Large); + _popup.PopupEntity(Loc.GetString("changeling-transform-bui-drop-identity-entity-popup", ("entity", targetIdentity.Value)), ent.Owner, ent.Owner, PopupType.Large); _changelingIdentity.DropStoredIdentity(ent.Owner, targetIdentity.Value); } @@ -129,7 +129,7 @@ public sealed partial class ChangelingTransformSystem : EntitySystem var selfMessage = Loc.GetString("changeling-transform-attempt-self", ("user", Identity.Entity(ent.Owner, EntityManager))); var othersMessage = Loc.GetString("changeling-transform-attempt-others", ("user", Identity.Entity(ent.Owner, EntityManager))); - _popup.PopupPredicted( + _popup.PopupEntity( selfMessage, othersMessage, ent, diff --git a/Content.Shared/Chemistry/EntitySystems/InjectorSystem.cs b/Content.Shared/Chemistry/EntitySystems/InjectorSystem.cs index c29d036cb4..5b990ac893 100644 --- a/Content.Shared/Chemistry/EntitySystems/InjectorSystem.cs +++ b/Content.Shared/Chemistry/EntitySystems/InjectorSystem.cs @@ -78,7 +78,7 @@ public sealed partial class InjectorSystem : EntitySystem // Are use using an injector capable of targeting a mob? if (injector.Comp.IgnoreMobs) { - _popup.PopupClient(Loc.GetString("injector-component-ignore-mobs"), args.Target.Value, args.User); + _popup.PopupEntity(Loc.GetString("injector-component-ignore-mobs"), args.Target.Value, args.User); return; } @@ -138,7 +138,7 @@ public sealed partial class InjectorSystem : EntitySystem Act = () => { injector.Comp.CurrentTransferAmount = toggleAmount; - _popup.PopupClient(Loc.GetString("comp-solution-transfer-set-amount", ("amount", toggleAmount)), user, user); + _popup.PopupEntity(Loc.GetString("comp-solution-transfer-set-amount", ("amount", toggleAmount)), user, user); Dirty(injector); }, @@ -158,7 +158,7 @@ public sealed partial class InjectorSystem : EntitySystem Act = () => { injector.Comp.CurrentTransferAmount = amount; - _popup.PopupClient(Loc.GetString("comp-solution-transfer-set-amount", ("amount", amount)), user, user); + _popup.PopupEntity(Loc.GetString("comp-solution-transfer-set-amount", ("amount", amount)), user, user); Dirty(injector); }, @@ -217,7 +217,7 @@ public sealed partial class InjectorSystem : EntitySystem return false; // Create a pop-up for the user. - _popup.PopupClient(Loc.GetString(activeMode.PopupUserAttempt), target, user); + _popup.PopupEntity(Loc.GetString(activeMode.PopupUserAttempt), target, user); if (user == target) { @@ -285,7 +285,7 @@ public sealed partial class InjectorSystem : EntitySystem // Check if we have anything to inject. if (injectorSolution.Volume == 0) { - _popup.PopupClient(Loc.GetString("injector-component-empty-message", ("injector", injector)), target, user); + _popup.PopupEntity(Loc.GetString("injector-component-empty-message", ("injector", injector)), target, user); return false; } @@ -348,19 +348,19 @@ public sealed partial class InjectorSystem : EntitySystem if (!_solutionContainer.ResolveSolution(injector.Owner, injector.Comp.SolutionName, ref injector.Comp.Solution, out var solution) || solution.AvailableVolume == 0) { - _popup.PopupClient(Loc.GetString("injector-component-cannot-toggle-draw-message"), user, user); + _popup.PopupEntity(Loc.GetString("injector-component-cannot-toggle-draw-message"), user, user); return false; // If already full, fail drawing. } if (!_solutionContainer.TryGetDrawableSolution(target, out _, out var drawableSol)) { - _popup.PopupClient(Loc.GetString("injector-component-cannot-draw-message", ("target", Identity.Entity(target, EntityManager))), injector, user); + _popup.PopupEntity(Loc.GetString("injector-component-cannot-draw-message", ("target", Identity.Entity(target, EntityManager))), injector, user); return false; } if (drawableSol.Volume == 0) { - _popup.PopupClient(Loc.GetString("injector-component-target-is-empty-message", ("target", Identity.Entity(target, EntityManager))), injector, user); + _popup.PopupEntity(Loc.GetString("injector-component-target-is-empty-message", ("target", Identity.Entity(target, EntityManager))), injector, user); return false; } @@ -413,7 +413,7 @@ public sealed partial class InjectorSystem : EntitySystem return TryDraw(injector, user, target, drawableSolution.Value); msg = target == user ? "injector-component-cannot-draw-message-self" : "injector-component-cannot-draw-message"; - _popup.PopupClient(Loc.GetString(msg, ("target", Identity.Entity(target, EntityManager))), injector, user); + _popup.PopupEntity(Loc.GetString(msg, ("target", Identity.Entity(target, EntityManager))), injector, user); break; } case InjectorBehavior.Dynamic: @@ -434,7 +434,7 @@ public sealed partial class InjectorSystem : EntitySystem throw new ArgumentOutOfRangeException(); } - _popup.PopupClient(Loc.GetString(msg, ("target", Identity.Entity(target, EntityManager))), injector, user); + _popup.PopupEntity(Loc.GetString(msg, ("target", Identity.Entity(target, EntityManager))), injector, user); return false; } @@ -455,7 +455,7 @@ public sealed partial class InjectorSystem : EntitySystem out var injectorSolution) || injectorSolution.Volume == 0) { // If empty, show a popup. - _popup.PopupClient(Loc.GetString("injector-component-empty-message", ("injector", injector)), user, user); + _popup.PopupEntity(Loc.GetString("injector-component-empty-message", ("injector", injector)), user, user); return false; } @@ -469,7 +469,7 @@ public sealed partial class InjectorSystem : EntitySystem { // Clowns will now also fumble Syringes. if (selfEv.OverrideMessage != null) - _popup.PopupPredicted(selfEv.OverrideMessage, user, user); + _popup.PopupEntity(selfEv.OverrideMessage, user, user); return true; } @@ -483,7 +483,7 @@ public sealed partial class InjectorSystem : EntitySystem { var userMessage = Loc.GetString("injector-component-blocked-user"); var otherMessage = Loc.GetString("injector-component-blocked-other", ("target", target), ("user", user)); - _popup.PopupPredicted(userMessage, otherMessage, target, user, PopupType.SmallCaution); + _popup.PopupEntity(userMessage, otherMessage, target, user, PopupType.SmallCaution); return true; } @@ -494,7 +494,7 @@ public sealed partial class InjectorSystem : EntitySystem if (realTransferAmount <= 0) { LocId msg = target == user ? "injector-component-target-already-full-message-self" : "injector-component-target-already-full-message"; - _popup.PopupClient( + _popup.PopupEntity( Loc.GetString(msg, ("target", Identity.Entity(target, EntityManager))), injector.Owner, @@ -523,11 +523,11 @@ public sealed partial class InjectorSystem : EntitySystem else if (ev.OverrideMessage != null) msgSuccess = ev.OverrideMessage; - _popup.PopupClient(Loc.GetString(msgSuccess, ("amount", removedSolution.Volume), ("target", Identity.Entity(target, EntityManager))), target, user); + _popup.PopupEntity(Loc.GetString(msgSuccess, ("amount", removedSolution.Volume), ("target", Identity.Entity(target, EntityManager))), target, user); // it is IMPERATIVE that when an injector is instant, that it has a pop-up. if (activeMode.InjectPopupTarget != null && target != user) - _popup.PopupClient(Loc.GetString(activeMode.InjectPopupTarget), target, target); + _popup.PopupEntity(Loc.GetString(activeMode.InjectPopupTarget), target, target); // Some injectors like hyposprays have sound, some like syringes have not. if (activeMode.InjectSound != null) @@ -552,7 +552,7 @@ public sealed partial class InjectorSystem : EntitySystem { if (!_solutionContainer.ResolveSolution(injector.Owner, injector.Comp.SolutionName, ref injector.Comp.Solution, out var solution) || solution.AvailableVolume == 0) { - _popup.PopupClient("injector-component-cannot-toggle-draw-message", user, user); + _popup.PopupEntity("injector-component-cannot-toggle-draw-message", user, user); return false; } @@ -575,7 +575,7 @@ public sealed partial class InjectorSystem : EntitySystem { LocId msg = target.Owner == user ? "injector-component-target-is-empty-message-self" : "injector-component-target-is-empty-message"; var targetIdentity = Identity.Entity(target, EntityManager); - _popup.PopupClient(Loc.GetString(msg, ("target", targetIdentity)), injector.Owner, user); + _popup.PopupEntity(Loc.GetString(msg, ("target", targetIdentity)), injector.Owner, user); return false; } @@ -599,7 +599,7 @@ public sealed partial class InjectorSystem : EntitySystem LocId msgSuccess = target.Owner == user ? "injector-component-draw-success-message-self" : "injector-component-draw-success-message"; var targetIdentitySuccess = Identity.Entity(target, EntityManager); - _popup.PopupClient( + _popup.PopupEntity( Loc.GetString(msgSuccess, ("amount", removedSolution.Volume), ("target", targetIdentitySuccess)), target, user); @@ -631,7 +631,7 @@ public sealed partial class InjectorSystem : EntitySystem LocId msg = target.Owner == user ? "injector-component-draw-success-message-self" : "injector-component-draw-success-message"; var targetIdentity = Identity.Entity(target, EntityManager); var finalMessage = Loc.GetString(msg, ("amount", transferAmount), ("target", targetIdentity)); - _popup.PopupClient(finalMessage, target, user); + _popup.PopupEntity(finalMessage, target, user); AfterDraw(injector, user, target); } @@ -729,7 +729,7 @@ public sealed partial class InjectorSystem : EntitySystem var modeName = Loc.GetString(newMode.Name); var message = Loc.GetString("injector-component-mode-changed-text", ("mode", modeName)); - _popup.PopupClient(message, user, user); + _popup.PopupEntity(message, user, user); } /// @@ -768,7 +768,7 @@ public sealed partial class InjectorSystem : EntitySystem return; } if (errorMessage != null) - _popup.PopupClient(Loc.GetString(errorMessage), user, user); + _popup.PopupEntity(Loc.GetString(errorMessage), user, user); } #endregion Mode Toggling } diff --git a/Content.Shared/Chemistry/EntitySystems/ScoopableSolutionSystem.cs b/Content.Shared/Chemistry/EntitySystems/ScoopableSolutionSystem.cs index 975f18c5a6..d25d8ec924 100644 --- a/Content.Shared/Chemistry/EntitySystems/ScoopableSolutionSystem.cs +++ b/Content.Shared/Chemistry/EntitySystems/ScoopableSolutionSystem.cs @@ -40,7 +40,7 @@ public sealed partial class ScoopableSolutionSystem : EntitySystem if (scooped == 0) return false; - _popup.PopupClient(Loc.GetString(ent.Comp.Popup, ("scooped", ent.Owner), ("beaker", beaker)), user, user); + _popup.PopupEntity(Loc.GetString(ent.Comp.Popup, ("scooped", ent.Owner), ("beaker", beaker)), user, user); if (srcSolution.Volume == 0 && ent.Comp.Delete) { diff --git a/Content.Shared/Chemistry/EntitySystems/SharedSolutionContainerMixerSystem.cs b/Content.Shared/Chemistry/EntitySystems/SharedSolutionContainerMixerSystem.cs index b810d8fb99..11ae22fe54 100644 --- a/Content.Shared/Chemistry/EntitySystems/SharedSolutionContainerMixerSystem.cs +++ b/Content.Shared/Chemistry/EntitySystems/SharedSolutionContainerMixerSystem.cs @@ -60,14 +60,14 @@ public abstract partial class SharedSolutionContainerMixerSystem : EntitySystem if (!HasPower(entity)) { if (user != null) - _popup.PopupClient(Loc.GetString("solution-container-mixer-no-power"), entity, user.Value); + _popup.PopupEntity(Loc.GetString("solution-container-mixer-no-power"), entity, user.Value); return; } if (!_container.TryGetContainer(uid, comp.ContainerId, out var container) || container.Count == 0) { if (user != null) - _popup.PopupClient(Loc.GetString("solution-container-mixer-popup-nothing-to-mix"), entity, user.Value); + _popup.PopupEntity(Loc.GetString("solution-container-mixer-popup-nothing-to-mix"), entity, user.Value); return; } diff --git a/Content.Shared/Chemistry/EntitySystems/SolutionSpikerSystem.cs b/Content.Shared/Chemistry/EntitySystems/SolutionSpikerSystem.cs index 974f4e4ccc..122db614d9 100644 --- a/Content.Shared/Chemistry/EntitySystems/SolutionSpikerSystem.cs +++ b/Content.Shared/Chemistry/EntitySystems/SolutionSpikerSystem.cs @@ -50,14 +50,14 @@ public sealed partial class SolutionSpikerSystem : EntitySystem if (targetSolution.Volume == 0 && !source.Comp.IgnoreEmpty) { - _popup.PopupClient(Loc.GetString(source.Comp.PopupEmpty, ("spiked-entity", target), ("spike-entity", source)), user, user); + _popup.PopupEntity(Loc.GetString(source.Comp.PopupEmpty, ("spiked-entity", target), ("spike-entity", source)), user, user); return false; } if (!_solution.ForceAddSolution(targetSoln.Value, sourceSolution)) return false; - _popup.PopupClient(Loc.GetString(source.Comp.Popup, ("spiked-entity", target), ("spike-entity", source)), user, user); + _popup.PopupEntity(Loc.GetString(source.Comp.Popup, ("spiked-entity", target), ("spike-entity", source)), user, user); sourceSolution.RemoveAllSolution(); if (source.Comp.Delete) QueueDel(source); diff --git a/Content.Shared/Chemistry/EntitySystems/SolutionTransferSystem.cs b/Content.Shared/Chemistry/EntitySystems/SolutionTransferSystem.cs index 8edfd90792..e945770190 100644 --- a/Content.Shared/Chemistry/EntitySystems/SolutionTransferSystem.cs +++ b/Content.Shared/Chemistry/EntitySystems/SolutionTransferSystem.cs @@ -78,7 +78,7 @@ public sealed partial class SolutionTransferSystem : EntitySystem { ent.Comp.TransferAmount = amount; - _popup.PopupClient(Loc.GetString("comp-solution-transfer-set-amount", ("amount", amount)), ent.Owner, user); + _popup.PopupEntity(Loc.GetString("comp-solution-transfer-set-amount", ("amount", amount)), ent.Owner, user); Dirty(ent.Owner, ent.Comp); }; @@ -97,7 +97,7 @@ public sealed partial class SolutionTransferSystem : EntitySystem ent.Comp.TransferAmount = newTransferAmount; if (message.Actor is { Valid: true } user) - _popup.PopupClient(Loc.GetString("comp-solution-transfer-set-amount", ("amount", newTransferAmount)), ent.Owner, user); + _popup.PopupEntity(Loc.GetString("comp-solution-transfer-set-amount", ("amount", newTransferAmount)), ent.Owner, user); Dirty(ent.Owner, ent.Comp); } @@ -275,7 +275,7 @@ public sealed partial class SolutionTransferSystem : EntitySystem return; var message = Loc.GetString("comp-solution-transfer-transfer-solution", ("amount", transferred), ("target", data.TargetEntity)); - _popup.PopupClient(message, data.SourceEntity, data.User); + _popup.PopupEntity(message, data.SourceEntity, data.User); } /// @@ -296,7 +296,7 @@ public sealed partial class SolutionTransferSystem : EntitySystem ? "comp-solution-transfer-fill-fully" : "comp-solution-transfer-fill-normal"; - _popup.PopupClient(Loc.GetString(msg, ("owner", data.SourceEntity), ("amount", transferred), ("target", data.TargetEntity)), data.TargetEntity, data.User); + _popup.PopupEntity(Loc.GetString(msg, ("owner", data.SourceEntity), ("amount", transferred), ("target", data.TargetEntity)), data.TargetEntity, data.User); } /// @@ -338,14 +338,14 @@ public sealed partial class SolutionTransferSystem : EntitySystem RaiseLocalEvent(data.SourceEntity, ref transferAttempt); if (transferAttempt.CancelReason is {} reason) { - _popup.PopupClient(reason, data.SourceEntity, data.User); + _popup.PopupEntity(reason, data.SourceEntity, data.User); return false; } var sourceSolution = data.Source.Comp.Solution; if (sourceSolution.Volume == 0) { - _popup.PopupClient(Loc.GetString("comp-solution-transfer-is-empty", ("target", data.SourceEntity)), data.SourceEntity, data.User); + _popup.PopupEntity(Loc.GetString("comp-solution-transfer-is-empty", ("target", data.SourceEntity)), data.SourceEntity, data.User); return false; } @@ -353,14 +353,14 @@ public sealed partial class SolutionTransferSystem : EntitySystem RaiseLocalEvent(data.TargetEntity, ref transferAttempt); if (transferAttempt.CancelReason is {} targetReason) { - _popup.PopupClient(targetReason, data.TargetEntity, data.User); + _popup.PopupEntity(targetReason, data.TargetEntity, data.User); return false; } var targetSolution = data.Target.Comp.Solution; if (targetSolution.AvailableVolume == 0) { - _popup.PopupClient(Loc.GetString("comp-solution-transfer-is-full", ("target", data.TargetEntity)), data.TargetEntity, data.User); + _popup.PopupEntity(Loc.GetString("comp-solution-transfer-is-full", ("target", data.TargetEntity)), data.TargetEntity, data.User); return false; } diff --git a/Content.Shared/Chemistry/Reaction/ReactionMixerSystem.cs b/Content.Shared/Chemistry/Reaction/ReactionMixerSystem.cs index 93a6959614..aaa23fa418 100644 --- a/Content.Shared/Chemistry/Reaction/ReactionMixerSystem.cs +++ b/Content.Shared/Chemistry/Reaction/ReactionMixerSystem.cs @@ -88,7 +88,7 @@ public sealed partial class ReactionMixerSystem : EntitySystem if (!TryMix(ent.AsNullable(), args.Target.Value)) return; - _popup.PopupClient( + _popup.PopupEntity( Loc.GetString(ent.Comp.MixMessage, ("mixed", Identity.Entity(args.Target.Value, EntityManager)), ("mixer", Identity.Entity(ent.Owner, EntityManager))), diff --git a/Content.Shared/Climbing/Systems/ClimbSystem.cs b/Content.Shared/Climbing/Systems/ClimbSystem.cs index 6a06784c56..49a3d2e833 100644 --- a/Content.Shared/Climbing/Systems/ClimbSystem.cs +++ b/Content.Shared/Climbing/Systems/ClimbSystem.cs @@ -207,7 +207,7 @@ public sealed partial class ClimbSystem : VirtualController : CanVault(comp, user, entityToMove, climbable, out reason); if (!canVault) { - _popupSystem.PopupClient(reason, user, user); + _popupSystem.PopupEntity(reason, user, user); return false; } @@ -339,7 +339,7 @@ public sealed partial class ClimbSystem : VirtualController ("climbable", climbable)); } - _popupSystem.PopupPredicted(selfMessage, othersMessage, uid, user); + _popupSystem.PopupEntity(selfMessage, othersMessage, uid, user); } /// diff --git a/Content.Shared/Clothing/EntitySystems/FleetingClothingSystem.cs b/Content.Shared/Clothing/EntitySystems/FleetingClothingSystem.cs index 580c5d6951..3390eb6b69 100644 --- a/Content.Shared/Clothing/EntitySystems/FleetingClothingSystem.cs +++ b/Content.Shared/Clothing/EntitySystems/FleetingClothingSystem.cs @@ -77,13 +77,13 @@ public sealed partial class FleetingClothingSystem : EntitySystem othersMessage = Loc.GetString(ent.Comp.SelfUnquipPopupOthers, ("item", ent.Owner)); // Use the wearer for the popup location because the item item itself will get deleted. - _popup.PopupPredicted(selfMessage, othersMessage, args.EquipTarget, args.User, PopupType.LargeCaution); + _popup.PopupEntity(selfMessage, othersMessage, args.EquipTarget, args.User, PopupType.LargeCaution); } else { // Show the same popup message for everyone. if (ent.Comp.RemovedPopup != null) - _popup.PopupPredicted(Loc.GetString(ent.Comp.RemovedPopup, ("item", ent.Owner)), args.EquipTarget, args.User, PopupType.LargeCaution); + _popup.PopupEntity(Loc.GetString(ent.Comp.RemovedPopup, ("item", ent.Owner)), args.EquipTarget, PopupType.LargeCaution); } } diff --git a/Content.Shared/Clothing/EntitySystems/MaskSystem.cs b/Content.Shared/Clothing/EntitySystems/MaskSystem.cs index 74a42fd411..317e8e8629 100644 --- a/Content.Shared/Clothing/EntitySystems/MaskSystem.cs +++ b/Content.Shared/Clothing/EntitySystems/MaskSystem.cs @@ -57,7 +57,7 @@ public sealed partial class MaskSystem : EntitySystem var dir = mask.IsToggled ? "down" : "up"; var msg = $"action-mask-pull-{dir}-popup-message"; - _popupSystem.PopupClient(Loc.GetString(msg, ("mask", uid)), args.Performer, args.Performer); + _popupSystem.PopupEntity(Loc.GetString(msg, ("mask", uid)), args.Performer, args.Performer); } private void OnGotUnequipped(EntityUid uid, MaskComponent mask, GotUnequippedEvent args) diff --git a/Content.Shared/Clothing/EntitySystems/ToggleableClothingSystem.cs b/Content.Shared/Clothing/EntitySystems/ToggleableClothingSystem.cs index 89bad85c7f..9083c93ff2 100644 --- a/Content.Shared/Clothing/EntitySystems/ToggleableClothingSystem.cs +++ b/Content.Shared/Clothing/EntitySystems/ToggleableClothingSystem.cs @@ -240,7 +240,7 @@ public sealed partial class ToggleableClothingSystem : EntitySystem _inventorySystem.TryUnequip(user, parent, component.Slot, force: true); else if (_inventorySystem.TryGetSlotEntity(parent, component.Slot, out var existing)) { - _popupSystem.PopupClient(Loc.GetString("toggleable-clothing-remove-first", ("entity", existing)), + _popupSystem.PopupEntity(Loc.GetString("toggleable-clothing-remove-first", ("entity", existing)), user, user); } diff --git a/Content.Shared/Clumsy/ClumsySystem.cs b/Content.Shared/Clumsy/ClumsySystem.cs index e4a2391462..c5929a60de 100644 --- a/Content.Shared/Clumsy/ClumsySystem.cs +++ b/Content.Shared/Clumsy/ClumsySystem.cs @@ -88,15 +88,14 @@ public sealed partial class ClumsySystem : EntitySystem if (ent.Comp.CatchingFailDamage != null) _damageable.ChangeDamage(ent.Owner, ent.Comp.CatchingFailDamage, origin: args.Item); - // Collisions don't work properly with PopupPredicted or PlayPredicted. + // Collisions don't work properly with PlayPredicted. // So we make this server only. if (_net.IsClient) return; var selfMessage = Loc.GetString(ent.Comp.CatchingFailedMessageSelf, ("item", ent.Owner), ("catcher", Identity.Entity(ent.Owner, EntityManager))); var othersMessage = Loc.GetString(ent.Comp.CatchingFailedMessageOthers, ("item", ent.Owner), ("catcher", Identity.Entity(ent.Owner, EntityManager))); - _popup.PopupEntity(selfMessage, ent.Owner, ent.Owner); - _popup.PopupEntity(othersMessage, ent.Owner, Filter.PvsExcept(ent.Owner), true); + _popup.PopupEntity(selfMessage, othersMessage, ent.Owner, ent.Owner); _audio.PlayPvs(ent.Comp.ClumsySound, ent); } @@ -149,7 +148,7 @@ public sealed partial class ClumsySystem : EntitySystem if (args.PuttingOnTable == ent.Owner) { // You are slamming yourself onto the table. - _popup.PopupPredicted( + _popup.PopupEntity( Loc.GetString(ent.Comp.VaulingFailedMessageSelf, ("bonkable", args.BeingClimbedOn)), Loc.GetString(ent.Comp.VaulingFailedMessageOthers, ("victim", gettingPutOnTableName), ("bonkable", args.BeingClimbedOn)), ent, @@ -159,13 +158,12 @@ public sealed partial class ClumsySystem : EntitySystem { // Someone else slamed you onto the table. // This is only run in server so you need to use popup entity. - _popup.PopupPredicted( + _popup.PopupEntity( Loc.GetString(ent.Comp.VaulingFailedMessageForced, ("bonker", puttingOnTableName), ("victim", gettingPutOnTableName), ("bonkable", args.BeingClimbedOn)), - ent, - null); + ent); } args.Cancel(); diff --git a/Content.Shared/CombatMode/Pacification/PacificationSystem.cs b/Content.Shared/CombatMode/Pacification/PacificationSystem.cs index e29cddf727..1a9f82aabb 100644 --- a/Content.Shared/CombatMode/Pacification/PacificationSystem.cs +++ b/Content.Shared/CombatMode/Pacification/PacificationSystem.cs @@ -56,7 +56,7 @@ public sealed partial class PacificationSystem : EntitySystem return; var targetName = Identity.Entity(target, EntityManager); - _popup.PopupClient(Loc.GetString(reason, ("entity", targetName)), user, user); + _popup.PopupEntity(Loc.GetString(reason, ("entity", targetName)), user, user); user.Comp.NextPopupTime = _timing.CurTime + user.Comp.PopupCooldown; user.Comp.LastAttackedEntity = target; } diff --git a/Content.Shared/CombatMode/SharedCombatModeSystem.cs b/Content.Shared/CombatMode/SharedCombatModeSystem.cs index 9ce7545ce4..ed89fdec45 100644 --- a/Content.Shared/CombatMode/SharedCombatModeSystem.cs +++ b/Content.Shared/CombatMode/SharedCombatModeSystem.cs @@ -47,7 +47,7 @@ public abstract partial class SharedCombatModeSystem : EntitySystem SetInCombatMode(uid, !component.IsInCombatMode, component); var msg = component.IsInCombatMode ? "action-popup-combat-enabled" : "action-popup-combat-disabled"; - _popup.PopupClient(Loc.GetString(msg), args.Performer, args.Performer); + _popup.PopupEntity(Loc.GetString(msg), args.Performer, args.Performer); } public void SetCanDisarm(EntityUid entity, bool canDisarm, CombatModeComponent? component = null) diff --git a/Content.Shared/Construction/EntitySystems/AnchorableSystem.cs b/Content.Shared/Construction/EntitySystems/AnchorableSystem.cs index d17b08461c..6378e5a904 100644 --- a/Content.Shared/Construction/EntitySystems/AnchorableSystem.cs +++ b/Content.Shared/Construction/EntitySystems/AnchorableSystem.cs @@ -91,7 +91,7 @@ public sealed partial class AnchorableSystem : EntitySystem if (!Valid(uid, userUid, usingUid, false, out var failMessage)) { if (failMessage != null) - _popup.PopupClient(failMessage, uid, userUid); + _popup.PopupEntity(failMessage, uid, userUid); return; } @@ -139,7 +139,7 @@ public sealed partial class AnchorableSystem : EntitySystem _transformSystem.Unanchor(uid, xform); RaiseLocalEvent(uid, new UserUnanchoredEvent(args.User, used)); - _popup.PopupClient(Loc.GetString("anchorable-unanchored"), uid, args.User); + _popup.PopupEntity(Loc.GetString("anchorable-unanchored"), uid, args.User); _adminLogger.Add( LogType.Unanchor, @@ -157,7 +157,7 @@ public sealed partial class AnchorableSystem : EntitySystem if (TryComp(uid, out var anchorBody) && !TileFree(xform.Coordinates, anchorBody)) { - _popup.PopupClient(Loc.GetString("anchorable-occupied"), uid, args.User); + _popup.PopupEntity(Loc.GetString("anchorable-occupied"), uid, args.User); return; } @@ -177,7 +177,7 @@ public sealed partial class AnchorableSystem : EntitySystem if (AnyUnstackable(uid, coordinates)) { - _popup.PopupClient(Loc.GetString("construction-step-condition-no-unstackable-in-tile"), uid, args.User); + _popup.PopupEntity(Loc.GetString("construction-step-condition-no-unstackable-in-tile"), uid, args.User); return; } @@ -191,7 +191,7 @@ public sealed partial class AnchorableSystem : EntitySystem RaiseLocalEvent(uid, new UserAnchoredEvent(args.User, used)); - _popup.PopupClient(Loc.GetString("anchorable-anchored"), uid, args.User); + _popup.PopupEntity(Loc.GetString("anchorable-anchored"), uid, args.User); _adminLogger.Add( LogType.Anchor, @@ -246,7 +246,7 @@ public sealed partial class AnchorableSystem : EntitySystem if (!Valid(uid, userUid, usingUid, true, out var failMessage, anchorable, usingTool)) { if (failMessage != null) - _popup.PopupClient(Loc.GetString(failMessage), uid, userUid); + _popup.PopupEntity(Loc.GetString(failMessage), uid, userUid); return; } @@ -258,7 +258,7 @@ public sealed partial class AnchorableSystem : EntitySystem if (AnyUnstackable(uid, transform.Coordinates)) { - _popup.PopupClient(Loc.GetString("construction-step-condition-no-unstackable-in-tile"), uid, userUid); + _popup.PopupEntity(Loc.GetString("construction-step-condition-no-unstackable-in-tile"), uid, userUid); return; } @@ -317,7 +317,7 @@ public sealed partial class AnchorableSystem : EntitySystem if (TileFree(coordinates, entity.Comp)) return true; - _popup.PopupClient(Loc.GetString("anchorable-occupied"), entity, user); + _popup.PopupEntity(Loc.GetString("anchorable-occupied"), entity, user); return false; } diff --git a/Content.Shared/Construction/EntitySystems/BlockAnchorOnSystem.cs b/Content.Shared/Construction/EntitySystems/BlockAnchorOnSystem.cs index a11519559b..832ed042c2 100644 --- a/Content.Shared/Construction/EntitySystems/BlockAnchorOnSystem.cs +++ b/Content.Shared/Construction/EntitySystems/BlockAnchorOnSystem.cs @@ -36,7 +36,7 @@ public sealed partial class BlockAnchorOnSystem : EntitySystem if (!HasOverlap((ent, ent.Comp, Transform(ent)))) return; - _popup.PopupPredicted(Loc.GetString("anchored-already-present"), ent, null); + _popup.PopupEntity(Loc.GetString("anchored-already-present"), ent); _xform.Unanchor(ent, Transform(ent)); } @@ -51,7 +51,7 @@ public sealed partial class BlockAnchorOnSystem : EntitySystem if (!HasOverlap((ent, ent.Comp, Transform(ent)))) return; - _popup.PopupPredicted(Loc.GetString("anchored-already-present"), ent, args.User); + _popup.PopupEntity(Loc.GetString("anchored-already-present"), ent, args.User); args.Cancel(); } diff --git a/Content.Shared/Construction/SharedFlatpackSystem.cs b/Content.Shared/Construction/SharedFlatpackSystem.cs index fd9c67a2e6..5260874728 100644 --- a/Content.Shared/Construction/SharedFlatpackSystem.cs +++ b/Content.Shared/Construction/SharedFlatpackSystem.cs @@ -90,7 +90,7 @@ public abstract partial class SharedFlatpackSystem : EntitySystem if (!_anchorable.TileFree((grid, gridComp), buildPos, layer, mask)) { - _popup.PopupPredicted(Loc.GetString("flatpack-unpack-no-room"), uid, args.User); + _popup.PopupEntity(Loc.GetString("flatpack-unpack-no-room"), uid, args.User); return; } diff --git a/Content.Shared/Containers/ItemSlot/ItemSlotsSystem.cs b/Content.Shared/Containers/ItemSlot/ItemSlotsSystem.cs index a4c0da32bf..5f088b4787 100644 --- a/Content.Shared/Containers/ItemSlot/ItemSlotsSystem.cs +++ b/Content.Shared/Containers/ItemSlot/ItemSlotsSystem.cs @@ -249,9 +249,9 @@ namespace Content.Shared.Containers.ItemSlots // // doing a check to make sure that they're all the same or something is probably frivolous if (lockedFailPopup != null) - _popupSystem.PopupClient(Loc.GetString(lockedFailPopup), uid, args.User); + _popupSystem.PopupEntity(Loc.GetString(lockedFailPopup), uid, args.User); else if (whitelistFailPopup != null) - _popupSystem.PopupClient(Loc.GetString(whitelistFailPopup), uid, args.User); + _popupSystem.PopupEntity(Loc.GetString(whitelistFailPopup), uid, args.User); return; } @@ -269,7 +269,7 @@ namespace Content.Shared.Containers.ItemSlots Insert(uid, slot, args.Used, args.User, excludeUserAudio: true); if (slot.InsertSuccessPopup.HasValue) - _popupSystem.PopupClient(Loc.GetString(slot.InsertSuccessPopup), uid, args.User); + _popupSystem.PopupEntity(Loc.GetString(slot.InsertSuccessPopup), uid, args.User); args.Handled = true; return; @@ -519,7 +519,7 @@ namespace Content.Shared.Containers.ItemSlots if (slot.Locked) { if (popup.HasValue && slot.LockedFailPopup.HasValue) - _popupSystem.PopupClient(Loc.GetString(slot.LockedFailPopup), uid, popup.Value); + _popupSystem.PopupEntity(Loc.GetString(slot.LockedFailPopup), uid, popup.Value); return false; } diff --git a/Content.Shared/Cuffs/SharedCuffableSystem.cs b/Content.Shared/Cuffs/SharedCuffableSystem.cs index a602238f25..7cac1ac639 100644 --- a/Content.Shared/Cuffs/SharedCuffableSystem.cs +++ b/Content.Shared/Cuffs/SharedCuffableSystem.cs @@ -141,7 +141,7 @@ namespace Content.Shared.Cuffs if (args.Cancelled) { - _popup.PopupClient(Loc.GetString("cuffable-component-cannot-interact-message"), args.Target, args.User); + _popup.PopupEntity(Loc.GetString("cuffable-component-cannot-interact-message"), args.Target, args.User); } } @@ -216,7 +216,7 @@ namespace Content.Shared.Cuffs ? Loc.GetString("handcuff-component-cuff-interrupt-buckled-message") : Loc.GetString("handcuff-component-cuff-interrupt-unbuckled-message"); - _popup.PopupClient(message, ent, user); + _popup.PopupEntity(message, ent, user); } private void OnBuckleAttemptEvent(Entity ent, ref BuckleAttemptEvent args) @@ -303,7 +303,7 @@ namespace Content.Shared.Cuffs } else { - _popup.PopupClient(Loc.GetString("cuffable-component-remove-cuffs-fail-message"), user, user); + _popup.PopupEntity(Loc.GetString("cuffable-component-remove-cuffs-fail-message"), user, user); } } @@ -314,7 +314,7 @@ namespace Content.Shared.Cuffs if (!args.CanReach) { - _popup.PopupClient(Loc.GetString("handcuff-component-too-far-away-error"), args.User, args.User); + _popup.PopupEntity(Loc.GetString("handcuff-component-too-far-away-error"), args.User, args.User); return; } @@ -359,15 +359,15 @@ namespace Content.Shared.Cuffs if (target == user) { - _popup.PopupClient(Loc.GetString("handcuff-component-cuff-self-success-message"), user, user); + _popup.PopupEntity(Loc.GetString("handcuff-component-cuff-self-success-message"), user, user); _adminLog.Add(LogType.Action, LogImpact.Medium, $"{ToPrettyString(user):player} has cuffed himself"); } else { - _popup.PopupClient(Loc.GetString("handcuff-component-cuff-other-success-message", + _popup.PopupEntity(Loc.GetString("handcuff-component-cuff-other-success-message", ("otherName", Identity.Name(target, EntityManager, user))), user, user); - _popup.PopupClient(Loc.GetString("handcuff-component-cuff-by-other-success-message", + _popup.PopupEntity(Loc.GetString("handcuff-component-cuff-by-other-success-message", ("otherName", Identity.Name(user, EntityManager, target))), target, target); _adminLog.Add(LogType.Action, LogImpact.High, $"{ToPrettyString(user):player} has cuffed {ToPrettyString(target):player}"); @@ -377,16 +377,16 @@ namespace Content.Shared.Cuffs { if (target == user) { - _popup.PopupClient(Loc.GetString("handcuff-component-cuff-interrupt-self-message"), user, user); + _popup.PopupEntity(Loc.GetString("handcuff-component-cuff-interrupt-self-message"), user, user); } else { // TODO Fix popup message wording // This message assumes that the user being handcuffed is the one that caused the handcuff to fail. - _popup.PopupClient(Loc.GetString("handcuff-component-cuff-interrupt-message", + _popup.PopupEntity(Loc.GetString("handcuff-component-cuff-interrupt-message", ("targetName", Identity.Name(target, EntityManager, user))), user, user); - _popup.PopupClient(Loc.GetString("handcuff-component-cuff-interrupt-other-message", + _popup.PopupEntity(Loc.GetString("handcuff-component-cuff-interrupt-other-message", ("otherName", Identity.Name(user, EntityManager, target)), ("otherEnt", user)), target, target); } @@ -504,21 +504,21 @@ namespace Content.Shared.Cuffs if (!TryComp(target, out var hands)) { - _popup.PopupClient(Loc.GetString("handcuff-component-target-has-no-hands-error", + _popup.PopupEntity(Loc.GetString("handcuff-component-target-has-no-hands-error", ("targetName", Identity.Name(target, EntityManager, user))), user, user); return true; } if (cuffable.CuffedHandCount >= hands.Count) { - _popup.PopupClient(Loc.GetString("handcuff-component-target-has-no-free-hands-error", + _popup.PopupEntity(Loc.GetString("handcuff-component-target-has-no-free-hands-error", ("targetName", Identity.Name(target, EntityManager, user))), user, user); return true; } if (!_hands.CanDrop(user, handcuff)) { - _popup.PopupClient(Loc.GetString("handcuff-component-cannot-drop-cuffs", ("target", Identity.Name(target, EntityManager, user))), user, user); + _popup.PopupEntity(Loc.GetString("handcuff-component-cannot-drop-cuffs", ("target", Identity.Name(target, EntityManager, user))), user, user); return false; } @@ -552,11 +552,11 @@ namespace Content.Shared.Cuffs if (target == user) { - _popup.PopupClient(Loc.GetString("handcuff-component-target-self"), user, user); + _popup.PopupEntity(Loc.GetString("handcuff-component-target-self"), user, user); } else { - _popup.PopupClient(Loc.GetString("handcuff-component-start-cuffing-target-message", + _popup.PopupEntity(Loc.GetString("handcuff-component-start-cuffing-target-message", ("targetName", Identity.Name(target, EntityManager, user))), user, user); _popup.PopupEntity(Loc.GetString("handcuff-component-start-cuffing-by-other-message", ("otherName", Identity.Name(user, EntityManager, target))), target, target); @@ -625,7 +625,7 @@ namespace Content.Shared.Cuffs if (!isOwner && !_interaction.InRangeUnobstructed(user, target.Owner)) { - _popup.PopupClient(Loc.GetString("cuffable-component-cannot-remove-cuffs-too-far-message"), user, user); + _popup.PopupEntity(Loc.GetString("cuffable-component-cannot-remove-cuffs-too-far-message"), user, user); return; } @@ -673,11 +673,11 @@ namespace Content.Shared.Cuffs if (isOwner) { - _popup.PopupClient(Loc.GetString("cuffable-component-start-uncuffing-self"), user, user); + _popup.PopupEntity(Loc.GetString("cuffable-component-start-uncuffing-self"), user, user); } else { - _popup.PopupClient(Loc.GetString("cuffable-component-start-uncuffing-target-message", + _popup.PopupEntity(Loc.GetString("cuffable-component-start-uncuffing-target-message", ("targetName", Identity.Name(target, EntityManager, user))), user, user); @@ -742,14 +742,14 @@ namespace Content.Shared.Cuffs { if (shoved) { - _popup.PopupClient(Loc.GetString("cuffable-component-remove-cuffs-push-success-message", + _popup.PopupEntity(Loc.GetString("cuffable-component-remove-cuffs-push-success-message", ("otherName", Identity.Name(user.Value, EntityManager, user))), user.Value, user.Value); } else { - _popup.PopupClient(Loc.GetString("cuffable-component-remove-cuffs-success-message"), user.Value, user.Value); + _popup.PopupEntity(Loc.GetString("cuffable-component-remove-cuffs-success-message"), user.Value, user.Value); } } @@ -770,7 +770,7 @@ namespace Content.Shared.Cuffs { if (user != target) { - _popup.PopupClient(Loc.GetString("cuffable-component-remove-cuffs-partial-success-message", + _popup.PopupEntity(Loc.GetString("cuffable-component-remove-cuffs-partial-success-message", ("cuffedHandCount", cuffable.CuffedHandCount), ("otherName", Identity.Name(user.Value, EntityManager, user.Value))), user.Value, user.Value); _popup.PopupEntity(Loc.GetString( @@ -780,7 +780,7 @@ namespace Content.Shared.Cuffs } else { - _popup.PopupClient(Loc.GetString("cuffable-component-remove-cuffs-partial-success-message", + _popup.PopupEntity(Loc.GetString("cuffable-component-remove-cuffs-partial-success-message", ("cuffedHandCount", cuffable.CuffedHandCount)), user.Value, user.Value); } } diff --git a/Content.Shared/Damage/Systems/DamageOnAttackedSystem.cs b/Content.Shared/Damage/Systems/DamageOnAttackedSystem.cs index 5ab7d66f96..6767f399c7 100644 --- a/Content.Shared/Damage/Systems/DamageOnAttackedSystem.cs +++ b/Content.Shared/Damage/Systems/DamageOnAttackedSystem.cs @@ -81,7 +81,7 @@ public sealed partial class DamageOnAttackedSystem : EntitySystem _audioSystem.PlayPredicted(entity.Comp.InteractSound, entity, args.User); if (entity.Comp.PopupText != null) - _popupSystem.PopupClient(Loc.GetString(entity.Comp.PopupText), args.User, args.User); + _popupSystem.PopupEntity(Loc.GetString(entity.Comp.PopupText), args.User, args.User); } } diff --git a/Content.Shared/Damage/Systems/DamageOnInteractSystem.cs b/Content.Shared/Damage/Systems/DamageOnInteractSystem.cs index e72b222e13..d1000f6f98 100644 --- a/Content.Shared/Damage/Systems/DamageOnInteractSystem.cs +++ b/Content.Shared/Damage/Systems/DamageOnInteractSystem.cs @@ -88,7 +88,7 @@ public sealed partial class DamageOnInteractSystem : EntitySystem _audioSystem.PlayPredicted(entity.Comp.InteractSound, args.Target, args.User); if (entity.Comp.PopupText != null) - _popupSystem.PopupClient(Loc.GetString(entity.Comp.PopupText), args.User, args.User); + _popupSystem.PopupEntity(Loc.GetString(entity.Comp.PopupText), args.User, args.User); // Attempt to paralyze the user after they have taken damage if (_random.Prob(entity.Comp.StunChance)) diff --git a/Content.Shared/Damage/Systems/DamagePopupSystem.cs b/Content.Shared/Damage/Systems/DamagePopupSystem.cs index 0e77fc555c..d7cc7cbe4d 100644 --- a/Content.Shared/Damage/Systems/DamagePopupSystem.cs +++ b/Content.Shared/Damage/Systems/DamagePopupSystem.cs @@ -32,8 +32,7 @@ public sealed partial class DamagePopupSystem : EntitySystem _ => "Invalid type", }; - // Turn this back into (msg, ent.Owner, args.Origin) when shooting gets predicted. - _popupSystem.PopupPredicted(msg, ent.Owner, null); + _popupSystem.PopupEntity(msg, ent.Owner); } } @@ -44,7 +43,7 @@ public sealed partial class DamagePopupSystem : EntitySystem var next = (DamagePopupType)(((int)ent.Comp.Type + 1) % Enum.GetValues().Length); ent.Comp.Type = next; Dirty(ent); - _popupSystem.PopupPredicted(Loc.GetString("damage-popup-component-switched", ("setting", ent.Comp.Type)), ent.Owner, args.User); + _popupSystem.PopupEntity(Loc.GetString("damage-popup-component-switched", ("setting", ent.Comp.Type)), ent.Owner); } } } diff --git a/Content.Shared/Delivery/SharedDeliverySystem.cs b/Content.Shared/Delivery/SharedDeliverySystem.cs index 046afe09e5..be20b194cb 100644 --- a/Content.Shared/Delivery/SharedDeliverySystem.cs +++ b/Content.Shared/Delivery/SharedDeliverySystem.cs @@ -145,9 +145,9 @@ public abstract partial class SharedDeliverySystem : EntitySystem { _audio.PlayPredicted(ent.Comp.OpenSound, ent.Owner, user); - if(ent.Comp.ContainedDeliveryAmount == 0) + if (ent.Comp.ContainedDeliveryAmount == 0) { - _popup.PopupPredicted(Loc.GetString("delivery-teleporter-empty", ("entity", ent)), null, ent, user); + _popup.PopupEntity(Loc.GetString("delivery-teleporter-empty", ("entity", ent)), ent, user); return; } @@ -184,8 +184,9 @@ public abstract partial class SharedDeliverySystem : EntitySystem GrantSpesoReward(ent.AsNullable()); if (!force) - _popup.PopupPredicted(Loc.GetString("delivery-unlocked-self", ("delivery", deliveryName)), - Loc.GetString("delivery-unlocked-others", ("delivery", deliveryName), ("recipient", Identity.Entity(user, EntityManager)), ("possadj", user)), user, user); + _popup.PopupEntity(Loc.GetString("delivery-unlocked-self", ("delivery", deliveryName)), + Loc.GetString("delivery-unlocked-others", ("delivery", deliveryName), ("recipient", Identity.Entity(user, EntityManager)), ("possadj", user)), + user, user); return true; } @@ -212,8 +213,9 @@ public abstract partial class SharedDeliverySystem : EntitySystem DirtyField(ent.Owner, ent.Comp, nameof(DeliveryComponent.IsOpened)); if (!force) - _popup.PopupPredicted(Loc.GetString("delivery-opened-self", ("delivery", deliveryName)), - Loc.GetString("delivery-opened-others", ("delivery", deliveryName), ("recipient", Identity.Entity(user, EntityManager)), ("possadj", user)), user, user); + _popup.PopupEntity(Loc.GetString("delivery-opened-self", ("delivery", deliveryName)), + Loc.GetString("delivery-opened-others", ("delivery", deliveryName), ("recipient", Identity.Entity(user, EntityManager)), ("possadj", user)), + user, user); if (!_container.TryGetContainer(ent, ent.Comp.Container, out var container)) return; diff --git a/Content.Shared/Devour/DevourSystem.cs b/Content.Shared/Devour/DevourSystem.cs index 6439265bed..98eb776435 100644 --- a/Content.Shared/Devour/DevourSystem.cs +++ b/Content.Shared/Devour/DevourSystem.cs @@ -80,14 +80,14 @@ public sealed partial class DevourSystem : EntitySystem case MobState.Invalid: case MobState.Alive: default: - _popupSystem.PopupClient(Loc.GetString("devour-action-popup-message-fail-target-alive"), ent.Owner, ent.Owner); + _popupSystem.PopupEntity(Loc.GetString("devour-action-popup-message-fail-target-alive"), ent.Owner, ent.Owner); break; } return; } - _popupSystem.PopupClient(Loc.GetString("devour-action-popup-message-structure"), ent.Owner, ent.Owner); + _popupSystem.PopupEntity(Loc.GetString("devour-action-popup-message-structure"), ent.Owner, ent.Owner); if (ent.Comp.SoundStructureDevour != null) _audioSystem.PlayPredicted(ent.Comp.SoundStructureDevour, ent.Owner, ent.Owner, ent.Comp.SoundStructureDevour.Params); diff --git a/Content.Shared/Dice/SharedDiceSystem.cs b/Content.Shared/Dice/SharedDiceSystem.cs index c289da5939..85b2735efe 100644 --- a/Content.Shared/Dice/SharedDiceSystem.cs +++ b/Content.Shared/Dice/SharedDiceSystem.cs @@ -81,7 +81,7 @@ public abstract partial class SharedDiceSystem : EntitySystem var popupString = Loc.GetString("dice-component-on-roll-land", ("die", entity), ("currentSide", entity.Comp.CurrentValue)); - _popup.PopupPredicted(popupString, entity, user); + _popup.PopupEntity(popupString, entity); _audio.PlayPredicted(entity.Comp.Sound, entity, user); } } diff --git a/Content.Shared/Disposal/Unit/SharedDisposalUnitSystem.Interactions.cs b/Content.Shared/Disposal/Unit/SharedDisposalUnitSystem.Interactions.cs index d05b92c3b2..11d14e36e5 100644 --- a/Content.Shared/Disposal/Unit/SharedDisposalUnitSystem.Interactions.cs +++ b/Content.Shared/Disposal/Unit/SharedDisposalUnitSystem.Interactions.cs @@ -143,9 +143,8 @@ public abstract partial class SharedDisposalUnitSystem if (GetContainedEntityCount(ent) >= ent.Comp.MaxCapacity) { - // TODO: If ContainerIsInsertingAttemptEvent ever ends up having the user - // attached to the event, we'll be able to predict the pop up - _popup.PopupPredicted(Loc.GetString("disposal-unit-is-full"), ent, null); + // TODO: Add user to ContainerIsInsertingAttemptEvent, show the popup only to the entity doing the insertion. + _popup.PopupEntity(Loc.GetString("disposal-unit-is-full"), ent); args.Cancel(); return; diff --git a/Content.Shared/Doors/Systems/SharedFirelockSystem.cs b/Content.Shared/Doors/Systems/SharedFirelockSystem.cs index cdff2c23ec..49532ee729 100644 --- a/Content.Shared/Doors/Systems/SharedFirelockSystem.cs +++ b/Content.Shared/Doors/Systems/SharedFirelockSystem.cs @@ -82,14 +82,14 @@ public abstract partial class SharedFirelockSystem : EntitySystem { if (ent.Comp.Temperature) { - _popupSystem.PopupClient(Loc.GetString("firelock-component-is-holding-fire-message"), + _popupSystem.PopupEntity(Loc.GetString("firelock-component-is-holding-fire-message"), ent.Owner, user, PopupType.MediumCaution); } else if (ent.Comp.Pressure) { - _popupSystem.PopupClient(Loc.GetString("firelock-component-is-holding-pressure-message"), + _popupSystem.PopupEntity(Loc.GetString("firelock-component-is-holding-pressure-message"), ent.Owner, user, PopupType.MediumCaution); diff --git a/Content.Shared/Doors/Systems/SharedTurnstileSystem.cs b/Content.Shared/Doors/Systems/SharedTurnstileSystem.cs index 12621b9265..b27b495da1 100644 --- a/Content.Shared/Doors/Systems/SharedTurnstileSystem.cs +++ b/Content.Shared/Doors/Systems/SharedTurnstileSystem.cs @@ -73,7 +73,7 @@ public abstract partial class SharedTurnstileSystem : EntitySystem { if (_timing.CurTime >= ent.Comp.NextResistTime) { - _popup.PopupClient(Loc.GetString("turnstile-component-popup-resist", ("turnstile", ent.Owner)), ent, args.OtherEntity); + _popup.PopupEntity(Loc.GetString("turnstile-component-popup-resist", ("turnstile", ent.Owner)), ent, args.OtherEntity); ent.Comp.NextResistTime = _timing.CurTime + TimeSpan.FromSeconds(0.1); Dirty(ent); } diff --git a/Content.Shared/Emag/Systems/EmagSystem.cs b/Content.Shared/Emag/Systems/EmagSystem.cs index 0558f094c1..7ed6332d90 100644 --- a/Content.Shared/Emag/Systems/EmagSystem.cs +++ b/Content.Shared/Emag/Systems/EmagSystem.cs @@ -64,7 +64,7 @@ public sealed partial class EmagSystem : EntitySystem Entity chargesEnt = ent.Owner; if (_sharedCharges.IsEmpty(chargesEnt)) { - _popup.PopupClient(Loc.GetString("emag-no-charges"), user, user); + _popup.PopupEntity(Loc.GetString("emag-no-charges"), user, user); return false; } @@ -76,7 +76,7 @@ public sealed partial class EmagSystem : EntitySystem if (!emaggedEvent.Handled) return false; - _popup.PopupPredicted(Loc.GetString("emag-success", ("target", Identity.Entity(target, EntityManager))), user, user, PopupType.Medium); + _popup.PopupEntity(Loc.GetString("emag-success", ("target", Identity.Entity(target, EntityManager))), user, user, PopupType.Medium); _audio.PlayPredicted(ent.Comp.EmagSound, ent, ent); diff --git a/Content.Shared/Engineering/Systems/InflatableSafeDisassemblySystem.cs b/Content.Shared/Engineering/Systems/InflatableSafeDisassemblySystem.cs index 7aa5cf4e58..95114cb406 100644 --- a/Content.Shared/Engineering/Systems/InflatableSafeDisassemblySystem.cs +++ b/Content.Shared/Engineering/Systems/InflatableSafeDisassemblySystem.cs @@ -28,7 +28,7 @@ public sealed partial class InflatableSafeDisassemblySystem : EntitySystem if (!HasComp(args.Used)) return; - _popupSystem.PopupPredicted( + _popupSystem.PopupEntity( Loc.GetString("inflatable-safe-disassembly", ("item", args.Used), ("target", ent.Owner)), ent, args.User); diff --git a/Content.Shared/Ensnaring/SharedEnsnareableSystem.cs b/Content.Shared/Ensnaring/SharedEnsnareableSystem.cs index 961a9438e1..948cdc2f4a 100644 --- a/Content.Shared/Ensnaring/SharedEnsnareableSystem.cs +++ b/Content.Shared/Ensnaring/SharedEnsnareableSystem.cs @@ -75,9 +75,9 @@ public abstract partial class SharedEnsnareableSystem : EntitySystem if (args.Cancelled || component.Container == null || !Container.Remove(args.Args.Used.Value, component.Container)) { if (args.User == args.Target) - Popup.PopupPredicted(Loc.GetString("ensnare-component-try-free-fail", ("ensnare", args.Args.Used)), uid, args.User, PopupType.MediumCaution); + Popup.PopupEntity(Loc.GetString("ensnare-component-try-free-fail", ("ensnare", args.Args.Used)), uid, args.User, PopupType.MediumCaution); else if (args.Target != null) - Popup.PopupPredicted(Loc.GetString("ensnare-component-try-free-fail-other", ("ensnare", args.Args.Used), ("user", args.Target)), uid, args.User, PopupType.MediumCaution); + Popup.PopupEntity(Loc.GetString("ensnare-component-try-free-fail-other", ("ensnare", args.Args.Used), ("user", args.Target)), uid, args.User, PopupType.MediumCaution); return; } @@ -88,9 +88,9 @@ public abstract partial class SharedEnsnareableSystem : EntitySystem ensnaring.Ensnared = null; if (args.User == args.Target) - Popup.PopupPredicted(Loc.GetString("ensnare-component-try-free-complete", ("ensnare", args.Args.Used)), uid, args.User, PopupType.Medium); + Popup.PopupEntity(Loc.GetString("ensnare-component-try-free-complete", ("ensnare", args.Args.Used)), uid, args.User, PopupType.Medium); else if (args.Target != null) - Popup.PopupPredicted(Loc.GetString("ensnare-component-try-free-complete-other", ("ensnare", args.Args.Used), ("user", args.Target)), uid, args.User, PopupType.Medium); + Popup.PopupEntity(Loc.GetString("ensnare-component-try-free-complete-other", ("ensnare", args.Args.Used), ("user", args.Target)), uid, args.User, PopupType.Medium); UpdateAlert(args.Args.Target.Value, component); var ev = new EnsnareRemoveEvent(ensnaring.WalkSpeed, ensnaring.SprintSpeed); @@ -168,9 +168,9 @@ public abstract partial class SharedEnsnareableSystem : EntitySystem return; if (user == target) - Popup.PopupPredicted(Loc.GetString("ensnare-component-try-free", ("ensnare", ensnare)), target, target); + Popup.PopupEntity(Loc.GetString("ensnare-component-try-free", ("ensnare", ensnare)), target, target); else - Popup.PopupPredicted(Loc.GetString("ensnare-component-try-free-other", ("ensnare", ensnare), ("user", Identity.Entity(target, EntityManager))), user, user); + Popup.PopupEntity(Loc.GetString("ensnare-component-try-free-other", ("ensnare", ensnare), ("user", Identity.Entity(target, EntityManager))), user, user); } private void OnStripEnsnareMessage(EntityUid uid, EnsnareableComponent component, StrippingEnsnareButtonPressed args) diff --git a/Content.Shared/Execution/SharedExecutionSystem.cs b/Content.Shared/Execution/SharedExecutionSystem.cs index 2240f8b0ac..17c44cf430 100644 --- a/Content.Shared/Execution/SharedExecutionSystem.cs +++ b/Content.Shared/Execution/SharedExecutionSystem.cs @@ -12,7 +12,6 @@ using Content.Shared.Verbs; using Content.Shared.Weapons.Melee; using Content.Shared.Weapons.Melee.Events; using Content.Shared.Interaction.Events; -using Robust.Shared.Player; using Robust.Shared.Audio.Systems; namespace Content.Shared.Execution; @@ -73,13 +72,11 @@ public sealed partial class SharedExecutionSystem : EntitySystem if (attacker == victim) { - ShowExecutionInternalPopup(comp.InternalSelfExecutionMessage, attacker, victim, weapon); - ShowExecutionExternalPopup(comp.ExternalSelfExecutionMessage, attacker, victim, weapon); + ShowExecutionPopup(comp.InternalSelfExecutionMessage, comp.ExternalSelfExecutionMessage, attacker, victim, weapon); } else { - ShowExecutionInternalPopup(comp.InternalMeleeExecutionMessage, attacker, victim, weapon); - ShowExecutionExternalPopup(comp.ExternalMeleeExecutionMessage, attacker, victim, weapon); + ShowExecutionPopup(comp.InternalMeleeExecutionMessage, comp.ExternalMeleeExecutionMessage, attacker, victim, weapon); } var doAfter = @@ -146,44 +143,20 @@ public sealed partial class SharedExecutionSystem : EntitySystem if (!TryComp(args.Victim, out var damageableComponent)) return; - ShowExecutionInternalPopup(internalMsg, args.Victim, args.Victim, entity, false); - ShowExecutionExternalPopup(externalMsg, args.Victim, args.Victim, entity); + ShowExecutionPopup(internalMsg, externalMsg, args.Victim, args.Victim, entity); _audio.PlayPredicted(melee.HitSound, args.Victim, args.Victim); _suicide.ApplyLethalDamage((args.Victim, damageableComponent), melee.Damage); args.Handled = true; } - private void ShowExecutionInternalPopup(string locString, EntityUid attacker, EntityUid victim, EntityUid weapon, bool predict = true) - { - if (predict) - { - _popup.PopupClient( - Loc.GetString(locString, ("attacker", Identity.Entity(attacker, EntityManager)), ("victim", Identity.Entity(victim, EntityManager)), ("weapon", weapon)), - attacker, - attacker, - PopupType.MediumCaution - ); - } - else - { - _popup.PopupEntity( - Loc.GetString(locString, ("attacker", Identity.Entity(attacker, EntityManager)), ("victim", Identity.Entity(victim, EntityManager)), ("weapon", weapon)), - attacker, - attacker, - PopupType.MediumCaution - ); - } - } - - private void ShowExecutionExternalPopup(string locString, EntityUid attacker, EntityUid victim, EntityUid weapon) + private void ShowExecutionPopup(string targetMessage, string otherMessage, EntityUid attacker, EntityUid victim, EntityUid weapon) { _popup.PopupEntity( - Loc.GetString(locString, ("attacker", Identity.Entity(attacker, EntityManager)), ("victim", Identity.Entity(victim, EntityManager)), ("weapon", weapon)), + Loc.GetString(targetMessage, ("attacker", Identity.Entity(attacker, EntityManager)), ("victim", Identity.Entity(victim, EntityManager)), ("weapon", weapon)), + Loc.GetString(otherMessage, ("attacker", Identity.Entity(attacker, EntityManager)), ("victim", Identity.Entity(victim, EntityManager)), ("weapon", weapon)), attacker, - Filter.PvsExcept(attacker), - true, - PopupType.MediumCaution - ); + attacker, + PopupType.MediumCaution); } private void OnExecutionDoAfter(Entity entity, ref ExecutionDoAfterEvent args) @@ -228,8 +201,7 @@ public sealed partial class SharedExecutionSystem : EntitySystem if (attacker != victim) { - _execution.ShowExecutionInternalPopup(internalMsg, attacker, victim, entity); - _execution.ShowExecutionExternalPopup(externalMsg, attacker, victim, entity); + _execution.ShowExecutionPopup(internalMsg, externalMsg, attacker, victim, entity); } } } diff --git a/Content.Shared/Eye/Blinding/Systems/ActivatableUIRequiresVisionSystem.cs b/Content.Shared/Eye/Blinding/Systems/ActivatableUIRequiresVisionSystem.cs index 6896cefcf5..8e2aa5bee9 100644 --- a/Content.Shared/Eye/Blinding/Systems/ActivatableUIRequiresVisionSystem.cs +++ b/Content.Shared/Eye/Blinding/Systems/ActivatableUIRequiresVisionSystem.cs @@ -25,7 +25,7 @@ public sealed partial class ActivatableUIRequiresVisionSystem : EntitySystem if (TryComp(args.User, out var blindable) && blindable.IsBlind) { if (!args.Silent) - _popupSystem.PopupClient(Loc.GetString("blindness-fail-attempt"), args.User, Shared.Popups.PopupType.MediumCaution); + _popupSystem.PopupEntity(Loc.GetString("blindness-fail-attempt"), args.User, args.User, PopupType.MediumCaution); args.Cancel(); } } diff --git a/Content.Shared/FingerprintReader/FingerprintReaderSystem.cs b/Content.Shared/FingerprintReader/FingerprintReaderSystem.cs index 0711b33434..a121662e35 100644 --- a/Content.Shared/FingerprintReader/FingerprintReaderSystem.cs +++ b/Content.Shared/FingerprintReader/FingerprintReaderSystem.cs @@ -65,7 +65,7 @@ public sealed partial class FingerprintReaderSystem : EntitySystem denyReason = Loc.GetString("fingerprint-reader-fail-gloves", ("blocker", gloves)); if (showPopup) - _popup.PopupClient(denyReason, target, user); + _popup.PopupEntity(denyReason, target, user); return false; } @@ -77,7 +77,7 @@ public sealed partial class FingerprintReaderSystem : EntitySystem denyReason = Loc.GetString("fingerprint-reader-fail"); if (showPopup) - _popup.PopupClient(denyReason, target, user); + _popup.PopupEntity(denyReason, target, user); return false; } diff --git a/Content.Shared/Flash/SharedFlashSystem.cs b/Content.Shared/Flash/SharedFlashSystem.cs index 1fed38d45e..f61a78b3ce 100644 --- a/Content.Shared/Flash/SharedFlashSystem.cs +++ b/Content.Shared/Flash/SharedFlashSystem.cs @@ -189,7 +189,8 @@ public abstract partial class SharedFlashSystem : EntitySystem { _appearance.SetData(ent.Owner, FlashVisuals.Burnt, true); // TODO: Reset if charges are refilled. _tag.AddTag(ent.Owner, TrashTag); - _popup.PopupClient(Loc.GetString("flash-component-becomes-empty"), user); + if (user != null) + _popup.PopupEntity(Loc.GetString("flash-component-becomes-empty"), user.Value, user); } return true; diff --git a/Content.Shared/Fluids/EntitySystems/DrainSystem.cs b/Content.Shared/Fluids/EntitySystems/DrainSystem.cs index 210a7f211f..4d605d96a7 100644 --- a/Content.Shared/Fluids/EntitySystems/DrainSystem.cs +++ b/Content.Shared/Fluids/EntitySystems/DrainSystem.cs @@ -89,7 +89,7 @@ public sealed partial class DrainSystem : EntitySystem // Find the solution in the container that is emptied. if (!_solutionContainerSystem.TryGetDrainableSolution(container, out var containerSoln, out var containerSolution) || containerSolution.Volume == FixedPoint2.Zero) { - _popup.PopupClient( + _popup.PopupEntity( Loc.GetString("drain-component-empty-verb-using-is-empty-message", ("object", container)), ent.Owner, user); @@ -118,7 +118,7 @@ public sealed partial class DrainSystem : EntitySystem { var solutionToSpill = _solutionContainerSystem.SplitSolution(containerSoln.Value, amountToSpillOnGround); _puddle.TrySpillAt(Transform(ent.Owner).Coordinates, solutionToSpill, out _); - _popup.PopupClient( + _popup.PopupEntity( Loc.GetString("drain-component-empty-verb-target-is-full-message", ("object", ent.Owner)), ent.Owner, user); @@ -221,7 +221,7 @@ public sealed partial class DrainSystem : EntitySystem if (drainSolution.AvailableVolume > 0) { - _popup.PopupPredicted(Loc.GetString("drain-component-unclog-notapplicable", ("object", args.Target.Value)), args.Target.Value, args.User); + _popup.PopupEntity(Loc.GetString("drain-component-unclog-notapplicable", ("object", args.Target.Value)), args.Target.Value, args.User); return; } @@ -244,7 +244,7 @@ public sealed partial class DrainSystem : EntitySystem if (!SharedRandomExtensions.PredictedProb(_timing, ent.Comp.UnclogProbability, GetNetEntity(ent))) { - _popup.PopupPredicted(Loc.GetString("drain-component-unclog-fail", ("object", args.Target.Value)), args.Target.Value, args.User); + _popup.PopupEntity(Loc.GetString("drain-component-unclog-fail", ("object", args.Target.Value)), args.Target.Value, args.User); return; } @@ -253,7 +253,7 @@ public sealed partial class DrainSystem : EntitySystem _solutionContainerSystem.RemoveAllSolution(ent.Comp.Solution.Value); _audio.PlayPredicted(ent.Comp.UnclogSound, args.Target.Value, args.User); - _popup.PopupPredicted(Loc.GetString("drain-component-unclog-success", ("object", args.Target.Value)), args.Target.Value, args.User); + _popup.PopupEntity(Loc.GetString("drain-component-unclog-success", ("object", args.Target.Value)), args.Target.Value, args.User); } // Prevent a debug assert. diff --git a/Content.Shared/Fluids/EntitySystems/SolutionDumpingSystem.cs b/Content.Shared/Fluids/EntitySystems/SolutionDumpingSystem.cs index f2bb6b1a4e..59faa77bee 100644 --- a/Content.Shared/Fluids/EntitySystems/SolutionDumpingSystem.cs +++ b/Content.Shared/Fluids/EntitySystems/SolutionDumpingSystem.cs @@ -119,14 +119,14 @@ public sealed partial class SolutionDumpingSystem : EntitySystem sourceSolEnt = null; if (!_actionBlocker.CanComplexInteract(user)) { - _popup.PopupClient(Loc.GetString("mopping-system-no-hands"), user, user); + _popup.PopupEntity(Loc.GetString("mopping-system-no-hands"), user, user); return false; } if (!_solContainer.TryGetSolution(sourceContainer, sourceSolutionName, out sourceSolEnt) || sourceSolEnt.Value.Comp.Solution.Volume == FixedPoint2.Zero) { - _popup.PopupClient(Loc.GetString("mopping-system-empty", ("used", sourceContainer)), + _popup.PopupEntity(Loc.GetString("mopping-system-empty", ("used", sourceContainer)), sourceContainer, user); return false; @@ -134,7 +134,7 @@ public sealed partial class SolutionDumpingSystem : EntitySystem if (checkAvailableVolume && targetSol.AvailableVolume == FixedPoint2.Zero) { - _popup.PopupClient(Loc.GetString("mopping-system-full", ("used", targetContainer)), targetContainer, user); + _popup.PopupEntity(Loc.GetString("mopping-system-full", ("used", targetContainer)), targetContainer, user); return false; } diff --git a/Content.Shared/Fluids/SharedAbsorbentSystem.cs b/Content.Shared/Fluids/SharedAbsorbentSystem.cs index cd59b02edd..9d61e88f64 100644 --- a/Content.Shared/Fluids/SharedAbsorbentSystem.cs +++ b/Content.Shared/Fluids/SharedAbsorbentSystem.cs @@ -162,7 +162,7 @@ public abstract partial class SharedAbsorbentSystem : EntitySystem var absorbentSolution = absorbentSoln.Comp.Solution; if (absorbentSolution.Volume <= 0) { - _popups.PopupClient(Loc.GetString("mopping-system-target-container-empty", ("target", target)), user, user); + _popups.PopupEntity(Loc.GetString("mopping-system-target-container-empty", ("target", target)), user, user); return false; } @@ -173,7 +173,7 @@ public abstract partial class SharedAbsorbentSystem : EntitySystem if (transferAmount <= 0) { - _popups.PopupClient(Loc.GetString("mopping-system-full", ("used", absorbEnt)), absorbEnt, user); + _popups.PopupEntity(Loc.GetString("mopping-system-full", ("used", absorbEnt)), absorbEnt, user); return false; } @@ -208,7 +208,7 @@ public abstract partial class SharedAbsorbentSystem : EntitySystem && absorbentSolution.AvailableVolume == FixedPoint2.Zero) { // Nothing to transfer to refillable and no room to absorb anything extra - _popups.PopupClient(Loc.GetString("mopping-system-puddle-space", ("used", absorbEnt)), user, user); + _popups.PopupEntity(Loc.GetString("mopping-system-puddle-space", ("used", absorbEnt)), user, user); // We can return cleanly because nothing was split from absorbent solution return false; @@ -227,7 +227,7 @@ public abstract partial class SharedAbsorbentSystem : EntitySystem if (waterFromRefillable.Volume == FixedPoint2.Zero && contaminantsFromAbsorbent.Volume == FixedPoint2.Zero) { // Nothing to transfer in either direction - _popups.PopupClient(Loc.GetString("mopping-system-target-container-empty-water", ("target", target)), + _popups.PopupEntity(Loc.GetString("mopping-system-target-container-empty-water", ("target", target)), user, user); @@ -249,7 +249,7 @@ public abstract partial class SharedAbsorbentSystem : EntitySystem if (refillableSolution.AvailableVolume <= 0) { - _popups.PopupClient(Loc.GetString("mopping-system-full", ("used", target)), user, user); + _popups.PopupEntity(Loc.GetString("mopping-system-full", ("used", target)), user, user); } else { @@ -292,7 +292,7 @@ public abstract partial class SharedAbsorbentSystem : EntitySystem puddleSolution.GetTotalPrototypeQuantity(Puddle.GetAbsorbentReagents(puddleSolution)); if (puddleAbsorberVolume == puddleSolution.Volume) { - _popups.PopupClient(Loc.GetString("mopping-system-puddle-already-mopped", ("target", target)), + _popups.PopupEntity(Loc.GetString("mopping-system-puddle-already-mopped", ("target", target)), target, user); return true; @@ -305,7 +305,7 @@ public abstract partial class SharedAbsorbentSystem : EntitySystem // No material if (available == FixedPoint2.Zero) { - _popups.PopupClient(Loc.GetString("mopping-system-no-water", ("used", absorbEnt)), absorbEnt, user); + _popups.PopupEntity(Loc.GetString("mopping-system-no-water", ("used", absorbEnt)), absorbEnt, user); return true; } diff --git a/Content.Shared/Fluids/SharedPuddleSystem.Spillable.cs b/Content.Shared/Fluids/SharedPuddleSystem.Spillable.cs index d7b72c68d6..e14af2d847 100644 --- a/Content.Shared/Fluids/SharedPuddleSystem.Spillable.cs +++ b/Content.Shared/Fluids/SharedPuddleSystem.Spillable.cs @@ -169,7 +169,7 @@ public abstract partial class SharedPuddleSystem Reactive.DoEntityReaction(hit, splitSolution, ReactionMethod.Touch); - Popups.PopupClient(Loc.GetString("spill-melee-hit-attacker", + Popups.PopupEntity(Loc.GetString("spill-melee-hit-attacker", ("amount", totalSplit / hitCount), ("spillable", entity.Owner), ("target", Identity.Entity(hit, EntityManager, args.User))), diff --git a/Content.Shared/Foldable/DeployFoldableSystem.cs b/Content.Shared/Foldable/DeployFoldableSystem.cs index 43595f09ba..82d169645a 100644 --- a/Content.Shared/Foldable/DeployFoldableSystem.cs +++ b/Content.Shared/Foldable/DeployFoldableSystem.cs @@ -69,7 +69,7 @@ public sealed partial class DeployFoldableSystem : EntitySystem if (!TryComp(ent.Owner, out PhysicsComponent? anchorBody) || !_anchorable.TileFree(args.ClickLocation, anchorBody)) { - _popup.PopupPredicted(Loc.GetString("foldable-deploy-fail", ("object", ent)), ent, args.User); + _popup.PopupEntity(Loc.GetString("foldable-deploy-fail", ("object", ent)), ent, args.User); return; } diff --git a/Content.Shared/Foldable/FoldableSystem.cs b/Content.Shared/Foldable/FoldableSystem.cs index 343c212f35..005ff0ca22 100644 --- a/Content.Shared/Foldable/FoldableSystem.cs +++ b/Content.Shared/Foldable/FoldableSystem.cs @@ -101,9 +101,9 @@ public sealed partial class FoldableSystem : EntitySystem if (!result && folder != null) { if (comp.IsFolded) - _popup.PopupPredicted(Loc.GetString("foldable-unfold-fail", ("object", uid)), uid, folder.Value); + _popup.PopupEntity(Loc.GetString("foldable-unfold-fail", ("object", uid)), uid, folder.Value); else - _popup.PopupPredicted(Loc.GetString("foldable-fold-fail", ("object", uid)), uid, folder.Value); + _popup.PopupEntity(Loc.GetString("foldable-fold-fail", ("object", uid)), uid, folder.Value); } return result; } diff --git a/Content.Shared/Friends/Systems/PettableFriendSystem.cs b/Content.Shared/Friends/Systems/PettableFriendSystem.cs index cf95c575db..0b1a13bf5a 100644 --- a/Content.Shared/Friends/Systems/PettableFriendSystem.cs +++ b/Content.Shared/Friends/Systems/PettableFriendSystem.cs @@ -36,7 +36,7 @@ public sealed partial class PettableFriendSystem : EntitySystem if (!_factionException.IsIgnored(exception, user)) { // you have made a new friend :) - _popup.PopupClient(Loc.GetString(comp.SuccessString, ("target", uid)), user, user); + _popup.PopupEntity(Loc.GetString(comp.SuccessString, ("target", uid)), user, user); _factionException.IgnoreEntity(exception, user); args.Handled = true; return; @@ -45,7 +45,7 @@ public sealed partial class PettableFriendSystem : EntitySystem if (_useDelayQuery.TryComp(uid, out var useDelay) && !_useDelay.TryResetDelay((uid, useDelay), true)) return; - _popup.PopupClient(Loc.GetString(comp.FailureString, ("target", uid)), user, user); + _popup.PopupEntity(Loc.GetString(comp.FailureString, ("target", uid)), user, user); } private void OnRehydrated(Entity ent, ref GotRehydratedEvent args) diff --git a/Content.Shared/Glue/GlueSystem.cs b/Content.Shared/Glue/GlueSystem.cs index 20b6a25dae..5da4150fdc 100644 --- a/Content.Shared/Glue/GlueSystem.cs +++ b/Content.Shared/Glue/GlueSystem.cs @@ -108,7 +108,7 @@ public sealed partial class GlueSystem : EntitySystem // This effectively means any unremoveable item could be removed with a bottle of glue. if (HasComp(target) || !HasComp(target) || HasComp(target)) { - _popup.PopupClient(Loc.GetString("glue-failure", ("target", target)), actor, actor, PopupType.Medium); + _popup.PopupEntity(Loc.GetString("glue-failure", ("target", target)), actor, actor, PopupType.Medium); return false; } @@ -118,7 +118,7 @@ public sealed partial class GlueSystem : EntitySystem if (quantity > 0) { _audio.PlayPredicted(entity.Comp.Squeeze, entity.Owner, actor); - _popup.PopupClient(Loc.GetString("glue-success", ("target", target)), actor, actor, PopupType.Medium); + _popup.PopupEntity(Loc.GetString("glue-success", ("target", target)), actor, actor, PopupType.Medium); _adminLogger.Add(LogType.Action, LogImpact.Medium, $"{ToPrettyString(actor):actor} glued {ToPrettyString(target):subject} with {ToPrettyString(entity.Owner):tool}"); var gluedComp = EnsureComp(target); gluedComp.Duration = quantity.Double() * entity.Comp.DurationPerUnit; @@ -130,7 +130,7 @@ public sealed partial class GlueSystem : EntitySystem } } - _popup.PopupClient(Loc.GetString("glue-failure", ("target", target)), actor, actor, PopupType.Medium); + _popup.PopupEntity(Loc.GetString("glue-failure", ("target", target)), actor, actor, PopupType.Medium); return false; } diff --git a/Content.Shared/Gravity/SharedGravityGeneratorSystem.cs b/Content.Shared/Gravity/SharedGravityGeneratorSystem.cs index 9cc4ae95e8..cc1121f5f8 100644 --- a/Content.Shared/Gravity/SharedGravityGeneratorSystem.cs +++ b/Content.Shared/Gravity/SharedGravityGeneratorSystem.cs @@ -22,7 +22,7 @@ public abstract partial class SharedGravityGeneratorSystem : EntitySystem if (!ent.Comp.GravityActive) return; - _popupSystem.PopupClient(Loc.GetString("gravity-generator-unanchoring-failed"), ent.Owner, args.User, PopupType.Medium); + _popupSystem.PopupEntity(Loc.GetString("gravity-generator-unanchoring-failed"), ent.Owner, args.User, PopupType.Medium); args.Cancel(); } diff --git a/Content.Shared/Guardian/GuardianSystem.cs b/Content.Shared/Guardian/GuardianSystem.cs index fff4d97925..7b97892ac9 100644 --- a/Content.Shared/Guardian/GuardianSystem.cs +++ b/Content.Shared/Guardian/GuardianSystem.cs @@ -84,7 +84,7 @@ public sealed partial class GuardianSystem : EntitySystem if (_container.IsEntityInContainer(ent.Owner)) { - _popup.PopupPredicted(Loc.GetString("guardian-inside-container"), ent.Owner, ent.Owner); + _popup.PopupEntity(Loc.GetString("guardian-inside-container"), ent.Owner, ent.Owner); return; } @@ -119,7 +119,7 @@ public sealed partial class GuardianSystem : EntitySystem return; } - _popup.PopupPredicted(Loc.GetString("guardian-available"), host.Value, host.Value); + _popup.PopupEntity(Loc.GetString("guardian-available"), host.Value, host.Value); } private void OnHostInit(Entity ent, ref ComponentInit args) @@ -149,7 +149,7 @@ public sealed partial class GuardianSystem : EntitySystem if (args.Cancelled || args.Target != ent.Comp.Host) return; - _popup.PopupPredictedCursor(Loc.GetString("guardian-attack-host"), ent.Owner, PopupType.LargeCaution); + _popup.PopupCursor(Loc.GetString("guardian-attack-host"), ent.Owner, PopupType.LargeCaution); args.Cancel(); } @@ -159,7 +159,7 @@ public sealed partial class GuardianSystem : EntitySystem if (args.Args.Cancelled) return; - _popup.PopupPredictedCursor(Loc.GetString("guardian-attack-host"), + _popup.PopupCursor(Loc.GetString("guardian-attack-host"), args.Args.Attacker, PopupType.LargeCaution); args.Args.Cancelled = true; @@ -201,7 +201,7 @@ public sealed partial class GuardianSystem : EntitySystem { if (ent.Comp.Used) { - _popup.PopupPredicted(Loc.GetString(ent.Comp.EmptyPopup), user, user); + _popup.PopupEntity(Loc.GetString(ent.Comp.EmptyPopup), user, user); return; } @@ -211,14 +211,14 @@ public sealed partial class GuardianSystem : EntitySystem { var msg = Loc.GetString("guardian-activator-invalid-target", ("entity", Identity.Entity(target, EntityManager, user))); - _popup.PopupPredicted(msg, user, user); + _popup.PopupEntity(msg, user, user); return; } // If user is already a host don't duplicate. if (HasComp(target)) { - _popup.PopupPredicted(Loc.GetString("guardian-already-present-invalid-creation"), user, user); + _popup.PopupEntity(Loc.GetString("guardian-already-present-invalid-creation"), user, user); return; } @@ -259,7 +259,7 @@ public sealed partial class GuardianSystem : EntitySystem _audio.PlayPredicted(ent.Comp.UsedSound, ent.Owner, args.Args.Target); - _popup.PopupClient(Loc.GetString(ent.Comp.GuardianHauntedPopup), + _popup.PopupEntity(Loc.GetString(ent.Comp.GuardianHauntedPopup), args.Args.Target.Value, args.Args.Target.Value); // Exhaust the activator @@ -286,7 +286,7 @@ public sealed partial class GuardianSystem : EntitySystem if (args.NewMobState == MobState.Critical) { - _popup.PopupClient(Loc.GetString(ent.Comp.GuardianHostCritWarn), + _popup.PopupEntity(Loc.GetString(ent.Comp.GuardianHostCritWarn), ent.Comp.HostedGuardian.Value, ent.Comp.HostedGuardian.Value); _audio.PlayPredicted(guardianComp.CriticalSound, ent.Comp.HostedGuardian.Value, args.Target); @@ -315,7 +315,7 @@ public sealed partial class GuardianSystem : EntitySystem origin: args.Origin, ignoreResistances: true, interruptsDoAfters: false); - _popup.PopupClient(Loc.GetString(ent.Comp.GuardianDamagePopup), ent.Comp.Host.Value, ent.Comp.Host.Value); + _popup.PopupEntity(Loc.GetString(ent.Comp.GuardianDamagePopup), ent.Comp.Host.Value, ent.Comp.Host.Value); } /// @@ -414,7 +414,7 @@ public sealed partial class GuardianSystem : EntitySystem } _container.Insert(guardian.Owner, host.Comp.GuardianContainer); - _popup.PopupPredicted(Loc.GetString(host.Comp.GuardianHostRecall), host.Owner, host.Owner); + _popup.PopupEntity(Loc.GetString(host.Comp.GuardianHostRecall), host.Owner, host.Owner); guardian.Comp.GuardianLoose = false; Dirty(host); diff --git a/Content.Shared/HijackBeacon/HijackBeaconSystem.cs b/Content.Shared/HijackBeacon/HijackBeaconSystem.cs index 678dbc9b48..20a530a772 100644 --- a/Content.Shared/HijackBeacon/HijackBeaconSystem.cs +++ b/Content.Shared/HijackBeacon/HijackBeaconSystem.cs @@ -298,7 +298,7 @@ public sealed partial class HijackBeaconSystem : EntitySystem return; _transform.AnchorEntity(ent, beaconXForm); - _popup.PopupPredicted(Loc.GetString("hijack-beacon-popup-anchor"), ent, null); + _popup.PopupEntity(Loc.GetString("hijack-beacon-popup-anchor"), ent); } /// @@ -312,7 +312,7 @@ public sealed partial class HijackBeaconSystem : EntitySystem return; _transform.Unanchor(ent, beaconXForm); - _popup.PopupPredicted(Loc.GetString("hijack-beacon-popup-unanchor"), ent, null); + _popup.PopupEntity(Loc.GetString("hijack-beacon-popup-unanchor"), ent); } /// diff --git a/Content.Shared/HotPotato/SharedHotPotatoSystem.cs b/Content.Shared/HotPotato/SharedHotPotatoSystem.cs index 06d4386c19..dedd485194 100644 --- a/Content.Shared/HotPotato/SharedHotPotatoSystem.cs +++ b/Content.Shared/HotPotato/SharedHotPotatoSystem.cs @@ -57,15 +57,14 @@ public abstract partial class SharedHotPotatoSystem : EntitySystem if (!_hands.IsHolding((hitEntity, hands), ent.Owner, out _) && _hands.TryForcePickupAnyHand(hitEntity, ent.Owner, handsComp: hands)) { - _popup.PopupPredicted( + _popup.PopupEntity( Loc.GetString("hot-potato-passed", ("from", Identity.Entity(args.User, EntityManager)), ("to", Identity.Entity(hitEntity, EntityManager))), ent.Owner, - args.User, PopupType.Medium); break; } - _popup.PopupClient( + _popup.PopupEntity( Loc.GetString("hot-potato-failed", ("to", Identity.Entity(hitEntity, EntityManager))), ent.Owner, args.User, diff --git a/Content.Shared/Implants/SharedImplanterSystem.cs b/Content.Shared/Implants/SharedImplanterSystem.cs index e9240f182e..ea22c2941e 100644 --- a/Content.Shared/Implants/SharedImplanterSystem.cs +++ b/Content.Shared/Implants/SharedImplanterSystem.cs @@ -117,7 +117,7 @@ public abstract partial class SharedImplanterSystem : EntitySystem // show popup to the user saying implant failed var name = Identity.Name(target, EntityManager, args.User); var msg = Loc.GetString("implanter-component-implant-failed", ("implant", implant), ("target", name)); - _popup.PopupClient(msg, target, args.User); + _popup.PopupEntity(msg, target, args.User); // prevent further interaction since popup was shown args.Handled = true; return; @@ -199,7 +199,7 @@ public abstract partial class SharedImplanterSystem : EntitySystem if (!_doAfter.TryStartDoAfter(args)) return; - _popup.PopupClient(Loc.GetString("injector-component-needle-injecting-user"), target, user); + _popup.PopupEntity(Loc.GetString("injector-component-needle-injecting-user"), target, user); if (user != target) { @@ -224,7 +224,7 @@ public abstract partial class SharedImplanterSystem : EntitySystem if (!_doAfter.TryStartDoAfter(args)) return; - _popup.PopupClient(Loc.GetString("injector-component-needle-injecting-user"), target, user); + _popup.PopupEntity(Loc.GetString("injector-component-needle-injecting-user"), target, user); if (user != target) { @@ -268,7 +268,7 @@ public abstract partial class SharedImplanterSystem : EntitySystem { var name = Identity.Name(target, EntityManager, user); var msg = Loc.GetString("implanter-component-implant-already", ("implant", implant), ("target", name)); - _popup.PopupClient(msg, target, user); + _popup.PopupEntity(msg, target, user); return; } @@ -424,7 +424,7 @@ public abstract partial class SharedImplanterSystem : EntitySystem var failedPermanentMessage = Loc.GetString("implanter-draw-failed-permanent", ("implant", implantName), ("target", targetName)); - _popup.PopupClient(failedPermanentMessage, target, user); + _popup.PopupEntity(failedPermanentMessage, target, user); } /// @@ -447,7 +447,7 @@ public abstract partial class SharedImplanterSystem : EntitySystem _damageable.TryChangeDamage(user, ent.Comp.DeimplantFailureDamage, ignoreResistances: true, origin: ent.Owner); var userName = Identity.Entity(user, EntityManager); var failedCatastrophicallyMessage = Loc.GetString("implanter-draw-failed-catastrophically", ("user", userName)); - _popup.PopupPredicted(failedCatastrophicallyMessage, user, user, PopupType.MediumCaution); + _popup.PopupEntity(failedCatastrophicallyMessage, user, user, PopupType.MediumCaution); _audio.PlayPredicted(ent.Comp.ImplanterDrawFailSound, ent, user); } diff --git a/Content.Shared/Interaction/InteractionPopupSystem.cs b/Content.Shared/Interaction/InteractionPopupSystem.cs index 871381694b..20f42385d8 100644 --- a/Content.Shared/Interaction/InteractionPopupSystem.cs +++ b/Content.Shared/Interaction/InteractionPopupSystem.cs @@ -127,10 +127,10 @@ public sealed partial class InteractionPopupSystem : EntitySystem _popupSystem.PopupEntity(msgOthers, uid, Filter.PvsExcept(user, entityManager: EntityManager), true); } + _popupSystem.PopupEntity(msg, uid, user); + if (!predict) { - _popupSystem.PopupEntity(msg, uid, user); - if (component.SoundPerceivedByOthers) _audio.PlayPvs(sfx, target); else @@ -138,8 +138,6 @@ public sealed partial class InteractionPopupSystem : EntitySystem return; } - _popupSystem.PopupClient(msg, uid, user); - if (sfx == null) return; diff --git a/Content.Shared/Interaction/SharedInteractionSystem.cs b/Content.Shared/Interaction/SharedInteractionSystem.cs index 541736d869..0a6828dff2 100644 --- a/Content.Shared/Interaction/SharedInteractionSystem.cs +++ b/Content.Shared/Interaction/SharedInteractionSystem.cs @@ -829,7 +829,7 @@ namespace Content.Shared.Interaction if (!inRange && popup && _gameTiming.IsFirstTimePredicted) { var message = Loc.GetString("interaction-system-user-interaction-cannot-reach"); - _popupSystem.PopupClient(message, origin, origin); + _popupSystem.PopupEntity(message, origin, origin); } return inRange; diff --git a/Content.Shared/Interaction/SmartEquipSystem.cs b/Content.Shared/Interaction/SmartEquipSystem.cs index 95fc27e5df..464383a81e 100644 --- a/Content.Shared/Interaction/SmartEquipSystem.cs +++ b/Content.Shared/Interaction/SmartEquipSystem.cs @@ -93,14 +93,14 @@ public sealed partial class SmartEquipSystem : EntitySystem if (!TryComp(uid, out var inventory) || !_inventory.HasSlot(uid, equipmentSlot, inventory)) { - _popup.PopupClient(Loc.GetString("smart-equip-missing-equipment-slot", ("slotName", equipmentSlot)), uid, uid); + _popup.PopupEntity(Loc.GetString("smart-equip-missing-equipment-slot", ("slotName", equipmentSlot)), uid, uid); return; } // early out if we have an item and cant drop it at all if (handItem != null && !_hands.CanDropHeld(uid, hands.ActiveHandId)) { - _popup.PopupClient(Loc.GetString("smart-equip-cant-drop"), uid, uid); + _popup.PopupEntity(Loc.GetString("smart-equip-cant-drop"), uid, uid); return; } @@ -129,13 +129,13 @@ public sealed partial class SmartEquipSystem : EntitySystem { if (handItem == null) { - _popup.PopupClient(emptyEquipmentSlotString, uid, uid); + _popup.PopupEntity(emptyEquipmentSlotString, uid, uid); return; } if (!_inventory.CanEquip(uid, handItem.Value, equipmentSlot, out var reason)) { - _popup.PopupClient(Loc.GetString(reason), uid, uid); + _popup.PopupEntity(Loc.GetString(reason), uid, uid); return; } @@ -150,7 +150,7 @@ public sealed partial class SmartEquipSystem : EntitySystem switch (handItem) { case null when storage.Container.ContainedEntities.Count == 0: - _popup.PopupClient(emptyEquipmentSlotString, uid, uid); + _popup.PopupEntity(emptyEquipmentSlotString, uid, uid); return; case null: var removing = storage.Container.ContainedEntities[^1]; @@ -162,7 +162,7 @@ public sealed partial class SmartEquipSystem : EntitySystem if (!_storage.CanInsert(slotItem, handItem.Value, out var reason)) { if (reason != null) - _popup.PopupClient(Loc.GetString(reason), uid, uid); + _popup.PopupEntity(Loc.GetString(reason), uid, uid); return; } @@ -196,7 +196,7 @@ public sealed partial class SmartEquipSystem : EntitySystem if (toEjectFrom == null) { - _popup.PopupClient(emptyEquipmentSlotString, uid, uid); + _popup.PopupEntity(emptyEquipmentSlotString, uid, uid); return; } @@ -218,7 +218,7 @@ public sealed partial class SmartEquipSystem : EntitySystem if (toInsertTo == null) { - _popup.PopupClient(Loc.GetString("smart-equip-no-valid-item-slot-insert", ("item", handItem.Value)), uid, uid); + _popup.PopupEntity(Loc.GetString("smart-equip-no-valid-item-slot-insert", ("item", handItem.Value)), uid, uid); return; } @@ -232,7 +232,7 @@ public sealed partial class SmartEquipSystem : EntitySystem if (!_inventory.CanUnequip(uid, equipmentSlot, out var inventoryReason)) { - _popup.PopupClient(Loc.GetString(inventoryReason), uid, uid); + _popup.PopupEntity(Loc.GetString(inventoryReason), uid, uid); return; } diff --git a/Content.Shared/Inventory/InventorySystem.Equip.cs b/Content.Shared/Inventory/InventorySystem.Equip.cs index 757589623f..4214398c70 100644 --- a/Content.Shared/Inventory/InventorySystem.Equip.cs +++ b/Content.Shared/Inventory/InventorySystem.Equip.cs @@ -488,7 +488,7 @@ public abstract partial class InventorySystem // the reason we check for > 1 is because the first item is always the one we are trying to unequip, // whereas we only want to notify for extra dropped items. if (!silent && firstRun && itemsDropped > 1) - _popup.PopupClient(Loc.GetString("inventory-component-dropped-from-unequip", ("items", itemsDropped - 1)), target, target); + _popup.PopupEntity(Loc.GetString("inventory-component-dropped-from-unequip", ("items", itemsDropped - 1)), target, target); // TODO: Inventory needs a hot cleanup hoo boy // Check if something else (AKA toggleable) dumped it into a container. diff --git a/Content.Shared/Inventory/VirtualItem/SharedVirtualItemSystem.cs b/Content.Shared/Inventory/VirtualItem/SharedVirtualItemSystem.cs index 7e152f1bad..0ba0f388fc 100644 --- a/Content.Shared/Inventory/VirtualItem/SharedVirtualItemSystem.cs +++ b/Content.Shared/Inventory/VirtualItem/SharedVirtualItemSystem.cs @@ -130,7 +130,7 @@ public abstract partial class SharedVirtualItemSystem : EntitySystem continue; if (!silent && !TerminatingOrDeleted(held)) - _popup.PopupClient(Loc.GetString("virtual-item-dropped-other", ("dropped", held)), user, user); + _popup.PopupEntity(Loc.GetString("virtual-item-dropped-other", ("dropped", held)), user, user); empty = hand; break; diff --git a/Content.Shared/Item/ItemToggle/ItemToggleSystem.cs b/Content.Shared/Item/ItemToggle/ItemToggleSystem.cs index a9dc6620d5..2ec48f0909 100644 --- a/Content.Shared/Item/ItemToggle/ItemToggleSystem.cs +++ b/Content.Shared/Item/ItemToggle/ItemToggleSystem.cs @@ -186,10 +186,7 @@ public sealed partial class ItemToggleSystem : EntitySystem if (showPopup && attempt.Popup != null && user != null) { - if (predicted) - _popup.PopupClient(attempt.Popup, uid, user.Value); - else - _popup.PopupEntity(attempt.Popup, uid, user.Value); + _popup.PopupEntity(attempt.Popup, uid, user.Value); } return false; @@ -244,10 +241,7 @@ public sealed partial class ItemToggleSystem : EntitySystem if (showPopup && attempt.Popup != null && user != null) { - if (predicted) - _popup.PopupClient(attempt.Popup, uid, user.Value); - else - _popup.PopupEntity(attempt.Popup, uid, user.Value); + _popup.PopupEntity(attempt.Popup, uid, user.Value); } return false; @@ -261,18 +255,14 @@ public sealed partial class ItemToggleSystem : EntitySystem { var (uid, comp) = ent; var soundToPlay = comp.SoundActivate; + if (predicted) - { _audio.PlayPredicted(soundToPlay, uid, user); - if (showPopup && ent.Comp.PopupActivate != null && user != null) - _popup.PopupClient(Loc.GetString(ent.Comp.PopupActivate), user.Value, user.Value); - } else - { _audio.PlayPvs(soundToPlay, uid); - if (showPopup && ent.Comp.PopupActivate != null && user != null) - _popup.PopupEntity(Loc.GetString(ent.Comp.PopupActivate), user.Value, user.Value); - } + + if (showPopup && ent.Comp.PopupActivate != null && user != null) + _popup.PopupEntity(Loc.GetString(ent.Comp.PopupActivate), user.Value, user.Value); comp.Activated = true; UpdateVisuals((uid, comp)); @@ -293,7 +283,7 @@ public sealed partial class ItemToggleSystem : EntitySystem { _audio.PlayPredicted(soundToPlay, uid, user); if (showPopup && ent.Comp.PopupDeactivate != null && user != null) - _popup.PopupClient(Loc.GetString(ent.Comp.PopupDeactivate), user.Value, user.Value); + _popup.PopupEntity(Loc.GetString(ent.Comp.PopupDeactivate), user.Value, user.Value); } else { diff --git a/Content.Shared/Item/MultiHandedItemSystem.cs b/Content.Shared/Item/MultiHandedItemSystem.cs index e3b2f7639a..5c29e54418 100644 --- a/Content.Shared/Item/MultiHandedItemSystem.cs +++ b/Content.Shared/Item/MultiHandedItemSystem.cs @@ -43,7 +43,7 @@ public sealed partial class MultiHandedItemSystem : EntitySystem args.Cancel(); if (args.ShowPopup) - _popup.PopupPredictedCursor( + _popup.PopupCursor( Loc.GetString("multi-handed-item-pick-up-fail", ("number", ent.Comp.HandsNeeded - 1), ("item", ent.Owner)), diff --git a/Content.Shared/ItemRecall/SharedItemRecallSystem.cs b/Content.Shared/ItemRecall/SharedItemRecallSystem.cs index a15071dcac..97a55675c8 100644 --- a/Content.Shared/ItemRecall/SharedItemRecallSystem.cs +++ b/Content.Shared/ItemRecall/SharedItemRecallSystem.cs @@ -50,17 +50,17 @@ public abstract partial class SharedItemRecallSystem : EntitySystem if (markItem == null) { - _popups.PopupClient(Loc.GetString("item-recall-item-mark-empty"), args.Performer, args.Performer); + _popups.PopupEntity(Loc.GetString("item-recall-item-mark-empty"), args.Performer, args.Performer); return; } if (HasComp(markItem)) { - _popups.PopupClient(Loc.GetString("item-recall-item-already-marked", ("item", markItem)), args.Performer, args.Performer); + _popups.PopupEntity(Loc.GetString("item-recall-item-already-marked", ("item", markItem)), args.Performer, args.Performer); return; } - _popups.PopupClient(Loc.GetString("item-recall-item-marked", ("item", markItem.Value)), args.Performer, args.Performer); + _popups.PopupEntity(Loc.GetString("item-recall-item-marked", ("item", markItem.Value)), args.Performer, args.Performer); TryMarkItem(ent, markItem.Value); return; } @@ -83,10 +83,10 @@ public abstract partial class SharedItemRecallSystem : EntitySystem if (TryComp(ent, out var projectile)) _proj.EmbedDetach(ent, projectile, user); - _popups.PopupPredicted(Loc.GetString("item-recall-item-summon-self", ("item", ent)), + _popups.PopupEntity(Loc.GetString("item-recall-item-summon-self", ("item", ent)), Loc.GetString("item-recall-item-summon-others", ("item", ent), ("name", Identity.Entity(user, EntityManager))), user, user); - _popups.PopupPredictedCoordinates(Loc.GetString("item-recall-item-disappear", ("item", ent)), Transform(ent).Coordinates, user); + _popups.PopupCoordinates(Loc.GetString("item-recall-item-disappear", ("item", ent)), Transform(ent).Coordinates, user); _hands.TryForcePickupAnyHand(user, ent); } @@ -126,12 +126,12 @@ public abstract partial class SharedItemRecallSystem : EntitySystem if (TryComp(action, out var itemRecall)) { - // For some reason client thinks the station grid owns the action on client and this doesn't work. It doesn't work in PopupEntity(mispredicts) and PopupPredicted either(doesnt show). + // For some reason client thinks the station grid owns the action on client and this doesn't work. // I don't have the heart to move this code to server because of this small thing. // This line will only do something once that is fixed. - if (action.Comp.AttachedEntity is {} user) + if (action.Comp.AttachedEntity is { } user) { - _popups.PopupClient(Loc.GetString("item-recall-item-unmark", ("item", item)), user, user, PopupType.MediumCaution); + _popups.PopupEntity(Loc.GetString("item-recall-item-unmark", ("item", item)), user, user, PopupType.MediumCaution); RemoveFromPvsOverride(item, user); } diff --git a/Content.Shared/Kitchen/EntitySystems/SharedReagentGrinderSystem.cs b/Content.Shared/Kitchen/EntitySystems/SharedReagentGrinderSystem.cs index 5b1f77abd4..645b84ba18 100644 --- a/Content.Shared/Kitchen/EntitySystems/SharedReagentGrinderSystem.cs +++ b/Content.Shared/Kitchen/EntitySystems/SharedReagentGrinderSystem.cs @@ -159,7 +159,7 @@ public abstract partial class SharedReagentGrinderSystem : EntitySystem if (!HasComp(heldEnt)) { // This is ugly but we can't use whitelistFailPopup because there are 2 containers with different whitelists. - _popupSystem.PopupClient(Loc.GetString("reagent-grinder-component-cannot-put-entity-message"), ent.Owner, args.User); + _popupSystem.PopupEntity(Loc.GetString("reagent-grinder-component-cannot-put-entity-message"), ent.Owner, args.User); } // Entity did NOT pass the whitelist for grind/juice. diff --git a/Content.Shared/Kitchen/SharedKitchenSpikeSystem.cs b/Content.Shared/Kitchen/SharedKitchenSpikeSystem.cs index e99d9d5ca6..3f42b72517 100644 --- a/Content.Shared/Kitchen/SharedKitchenSpikeSystem.cs +++ b/Content.Shared/Kitchen/SharedKitchenSpikeSystem.cs @@ -132,7 +132,7 @@ public sealed partial class SharedKitchenSpikeSystem : EntitySystem return; var quality = ProtoMan.Index(ent.Comp.RequiredToolQuality); - _popupSystem.PopupClient(Loc.GetString("comp-kitchen-spike-need-tool-quality", + _popupSystem.PopupEntity(Loc.GetString("comp-kitchen-spike-need-tool-quality", ("target", Identity.Entity(victim.Value, EntityManager)), ("quality", Loc.GetString(quality.Name))), ent, @@ -154,7 +154,7 @@ public sealed partial class SharedKitchenSpikeSystem : EntitySystem if (!TryComp(args.Used, out var tool) || !_toolSystem.HasQuality(args.Used, ent.Comp.RequiredToolQuality, tool)) { var quality = ProtoMan.Index(ent.Comp.RequiredToolQuality); - _popupSystem.PopupClient(Loc.GetString("comp-kitchen-spike-need-tool-quality", + _popupSystem.PopupEntity(Loc.GetString("comp-kitchen-spike-need-tool-quality", ("target", Identity.Entity(victim.Value, EntityManager)), ("quality", Loc.GetString(quality.Name))), ent, @@ -166,7 +166,7 @@ public sealed partial class SharedKitchenSpikeSystem : EntitySystem var victimIdentity = Identity.Entity(victim.Value, EntityManager); - _popupSystem.PopupPredicted(Loc.GetString("comp-kitchen-spike-begin-butcher-self", ("victim", victimIdentity)), + _popupSystem.PopupEntity(Loc.GetString("comp-kitchen-spike-begin-butcher-self", ("victim", victimIdentity)), Loc.GetString("comp-kitchen-spike-begin-butcher", ("user", Identity.Entity(args.User, EntityManager)), ("victim", victimIdentity)), ent, args.User, @@ -290,7 +290,7 @@ public sealed partial class SharedKitchenSpikeSystem : EntitySystem var victimIdentity = Identity.Entity(args.Target.Value, EntityManager); - _popupSystem.PopupPredicted(Loc.GetString("comp-kitchen-spike-butcher-self", ("victim", victimIdentity)), + _popupSystem.PopupEntity(Loc.GetString("comp-kitchen-spike-butcher-self", ("victim", victimIdentity)), Loc.GetString("comp-kitchen-spike-butcher", ("user", Identity.Entity(args.User, EntityManager)), ("victim", victimIdentity)), ent, args.User, @@ -457,7 +457,7 @@ public sealed partial class SharedKitchenSpikeSystem : EntitySystem ("hook", hook)); } - _popupSystem.PopupPredicted(messageSelf, messageOthers, hook, user, PopupType.MediumCaution); + _popupSystem.PopupEntity(messageSelf, messageOthers, hook, user, PopupType.MediumCaution); } /// diff --git a/Content.Shared/Lock/LockSystem.cs b/Content.Shared/Lock/LockSystem.cs index e498f5b6aa..fcae4bd689 100644 --- a/Content.Shared/Lock/LockSystem.cs +++ b/Content.Shared/Lock/LockSystem.cs @@ -109,7 +109,7 @@ public sealed partial class LockSystem : EntitySystem return; if (!args.Silent) - _sharedPopupSystem.PopupClient(Loc.GetString("entity-storage-component-locked-message"), uid, args.User); + _sharedPopupSystem.PopupEntity(Loc.GetString("entity-storage-component-locked-message"), uid, args.User); args.Cancelled = true; } @@ -176,7 +176,7 @@ public sealed partial class LockSystem : EntitySystem if (user is { Valid: true }) { - _sharedPopupSystem.PopupClient(Loc.GetString("lock-comp-do-lock-success", + _sharedPopupSystem.PopupEntity(Loc.GetString("lock-comp-do-lock-success", ("entityName", Identity.Name(uid, EntityManager))), uid, user); } @@ -209,7 +209,7 @@ public sealed partial class LockSystem : EntitySystem if (user is { Valid: true }) { - _sharedPopupSystem.PopupClient(Loc.GetString("lock-comp-do-unlock-success", + _sharedPopupSystem.PopupEntity(Loc.GetString("lock-comp-do-unlock-success", ("entityName", Identity.Name(uid, EntityManager))), uid, user.Value); } @@ -352,7 +352,7 @@ public sealed partial class LockSystem : EntitySystem if (!quiet) { var denyReason = accessEv.DenyReason ?? Loc.GetString(_defaultDenyReason); - _sharedPopupSystem.PopupClient(denyReason, ent, user); + _sharedPopupSystem.PopupEntity(denyReason, ent, user); } return false; @@ -430,7 +430,7 @@ public sealed partial class LockSystem : EntitySystem if (!args.Silent) { - _sharedPopupSystem.PopupClient(Loc.GetString("construction-step-condition-wire-panel-close"), + _sharedPopupSystem.PopupEntity(Loc.GetString("construction-step-condition-wire-panel-close"), ent, args.User); } @@ -446,7 +446,7 @@ public sealed partial class LockSystem : EntitySystem if (!TryComp(ent, out var lockComp) || !lockComp.Locked) return; - _sharedPopupSystem.PopupClient(Loc.GetString("lock-comp-generic-fail", + _sharedPopupSystem.PopupEntity(Loc.GetString("lock-comp-generic-fail", ("target", Identity.Entity(ent, EntityManager))), ent, args.User); @@ -461,7 +461,7 @@ public sealed partial class LockSystem : EntitySystem if (!TryComp(ent, out var lockComp) || !lockComp.Locked) return; - _sharedPopupSystem.PopupClient(Loc.GetString("lock-comp-generic-fail", + _sharedPopupSystem.PopupEntity(Loc.GetString("lock-comp-generic-fail", ("target", Identity.Entity(ent, EntityManager))), ent, args.User); @@ -483,7 +483,7 @@ public sealed partial class LockSystem : EntitySystem if (lockComp.Locked && component.Popup != null) { - _sharedPopupSystem.PopupClient(Loc.GetString(component.Popup), uid, args.User); + _sharedPopupSystem.PopupEntity(Loc.GetString(component.Popup), uid, args.User); } _audio.PlayPredicted(component.AccessDeniedSound, uid, args.User); @@ -518,7 +518,7 @@ public sealed partial class LockSystem : EntitySystem if (lockComp.Locked && component.LockedPopup != null) { - _sharedPopupSystem.PopupClient(Loc.GetString(component.LockedPopup, + _sharedPopupSystem.PopupEntity(Loc.GetString(component.LockedPopup, ("target", Identity.Entity(uid, EntityManager))), uid, args.User); diff --git a/Content.Shared/Lock/LockingWhitelistSystem.cs b/Content.Shared/Lock/LockingWhitelistSystem.cs index c105d63cdb..5966083fdd 100644 --- a/Content.Shared/Lock/LockingWhitelistSystem.cs +++ b/Content.Shared/Lock/LockingWhitelistSystem.cs @@ -21,7 +21,7 @@ public sealed partial class LockingWhitelistSystem : EntitySystem return; if (!args.Silent) - _popupSystem.PopupClient(Loc.GetString("locking-whitelist-component-lock-toggle-deny"), ent.Owner); + _popupSystem.PopupEntity(Loc.GetString("locking-whitelist-component-lock-toggle-deny"), ent.Owner, ent.Owner); args.Cancelled = true; } diff --git a/Content.Shared/Lube/LubeSystem.cs b/Content.Shared/Lube/LubeSystem.cs index 0c5d8d0481..b4e489d9d0 100644 --- a/Content.Shared/Lube/LubeSystem.cs +++ b/Content.Shared/Lube/LubeSystem.cs @@ -70,7 +70,7 @@ public sealed partial class LubeSystem : EntitySystem { if (HasComp(target) || !HasComp(target)) { - _popup.PopupClient(Loc.GetString("lube-failure", ("target", Identity.Entity(target, EntityManager))), actor, actor, PopupType.Medium); + _popup.PopupEntity(Loc.GetString("lube-failure", ("target", Identity.Entity(target, EntityManager))), actor, actor, PopupType.Medium); return false; } @@ -80,7 +80,7 @@ public sealed partial class LubeSystem : EntitySystem if (quantity > 0) { _audio.PlayPredicted(entity.Comp.Squeeze, entity.Owner, actor); - _popup.PopupClient(Loc.GetString("lube-success", ("target", Identity.Entity(target, EntityManager))), actor, actor, PopupType.Medium); + _popup.PopupEntity(Loc.GetString("lube-success", ("target", Identity.Entity(target, EntityManager))), actor, actor, PopupType.Medium); _adminLogger.Add(LogType.Action, LogImpact.Medium, $"{ToPrettyString(actor):actor} lubed {ToPrettyString(target):subject} with {ToPrettyString(entity.Owner):tool}"); var lubed = EnsureComp(target); var rand = SharedRandomExtensions.PredictedRandom(_timing, GetNetEntity(entity)); @@ -93,7 +93,7 @@ public sealed partial class LubeSystem : EntitySystem return true; } } - _popup.PopupClient(Loc.GetString("lube-failure", ("target", Identity.Entity(target, EntityManager))), actor, actor, PopupType.Medium); + _popup.PopupEntity(Loc.GetString("lube-failure", ("target", Identity.Entity(target, EntityManager))), actor, actor, PopupType.Medium); return false; } } diff --git a/Content.Shared/Magic/SharedMagicSystem.cs b/Content.Shared/Magic/SharedMagicSystem.cs index 7b85d31076..17d366985b 100644 --- a/Content.Shared/Magic/SharedMagicSystem.cs +++ b/Content.Shared/Magic/SharedMagicSystem.cs @@ -116,7 +116,7 @@ public abstract partial class SharedMagicSystem : EntitySystem return; args.Cancelled = true; - _popup.PopupClient(Loc.GetString("spell-requirements-failed"), args.Performer, args.Performer); + _popup.PopupEntity(Loc.GetString("spell-requirements-failed"), args.Performer, args.Performer); // TODO: Pre-cast do after, either here or in SharedActionsSystem } diff --git a/Content.Shared/Medical/Cryogenics/SharedCryoPodSystem.cs b/Content.Shared/Medical/Cryogenics/SharedCryoPodSystem.cs index b4a394b7ef..9d2e0db970 100644 --- a/Content.Shared/Medical/Cryogenics/SharedCryoPodSystem.cs +++ b/Content.Shared/Medical/Cryogenics/SharedCryoPodSystem.cs @@ -281,7 +281,7 @@ public abstract partial class SharedCryoPodSystem : EntitySystem if (cryoPodComponent.Locked) { - _popup.PopupClient(Loc.GetString("cryo-pod-locked"), uid, userId); + _popup.PopupEntity(Loc.GetString("cryo-pod-locked"), uid, userId); return; } diff --git a/Content.Shared/Medical/Healing/HealingSystem.cs b/Content.Shared/Medical/Healing/HealingSystem.cs index 4b6bac84f9..f7eaffedc1 100644 --- a/Content.Shared/Medical/Healing/HealingSystem.cs +++ b/Content.Shared/Medical/Healing/HealingSystem.cs @@ -72,7 +72,7 @@ public sealed partial class HealingSystem : EntitySystem var popup = (args.User == target.Owner) ? Loc.GetString("medical-item-stop-bleeding-self") : Loc.GetString("medical-item-stop-bleeding", ("target", Identity.Entity(target.Owner, EntityManager))); - _popupSystem.PopupClient(popup, target, args.User); + _popupSystem.PopupEntity(popup, target, args.User); } } @@ -118,7 +118,7 @@ public sealed partial class HealingSystem : EntitySystem if (!args.Repeat) { - _popupSystem.PopupClient(Loc.GetString("medical-item-finished-using", ("item", args.Used)), target.Owner, args.User); + _popupSystem.PopupEntity(Loc.GetString("medical-item-finished-using", ("item", args.Used)), target.Owner, args.User); return; } @@ -200,7 +200,7 @@ public sealed partial class HealingSystem : EntitySystem if (!HasDamage(healing, target!)) { - _popupSystem.PopupClient(Loc.GetString("medical-item-cant-use", ("item", healing.Owner)), healing, user); + _popupSystem.PopupEntity(Loc.GetString("medical-item-cant-use", ("item", healing.Owner)), healing, user); return false; } diff --git a/Content.Shared/Medical/SharedDefibrillatorSystem.cs b/Content.Shared/Medical/SharedDefibrillatorSystem.cs index 0341d6f278..6fbe32ed37 100644 --- a/Content.Shared/Medical/SharedDefibrillatorSystem.cs +++ b/Content.Shared/Medical/SharedDefibrillatorSystem.cs @@ -90,7 +90,7 @@ public abstract partial class SharedDefibrillatorSystem : EntitySystem if (!_toggle.IsActivated(ent.Owner)) { - _popup.PopupClient(Loc.GetString("defibrillator-not-on"), ent.Owner, user); + _popup.PopupEntity(Loc.GetString("defibrillator-not-on"), ent.Owner, user); return false; } diff --git a/Content.Shared/Medical/Stethoscope/StethoscopeSystem.cs b/Content.Shared/Medical/Stethoscope/StethoscopeSystem.cs index 6676ea37e0..a2c290f306 100644 --- a/Content.Shared/Medical/Stethoscope/StethoscopeSystem.cs +++ b/Content.Shared/Medical/Stethoscope/StethoscopeSystem.cs @@ -97,11 +97,11 @@ public sealed partial class StethoscopeSystem : EntitySystem { // TODO: Add check for respirator component when it gets moved to shared. // If the mob is dead or cannot asphyxiation damage, the popup shows nothing. - if (!TryComp(target, out var mobState) || - _mobState.IsDead(target, mobState) || - !_damageable.GetAllDamage(target).DamageDict.TryGetValue(DamageToListenFor, out var asphyxDmg)) + if (!TryComp(target, out var mobState) + || _mobState.IsDead(target, mobState) + || !_damageable.GetAllDamage(target).DamageDict.TryGetValue(DamageToListenFor, out var asphyxDmg)) { - _popup.PopupPredicted(Loc.GetString("stethoscope-nothing"), target, user); + _popup.PopupEntity(Loc.GetString("stethoscope-nothing"), target, user); stethoscope.Comp.LastMeasuredDamage = null; return; } @@ -111,12 +111,12 @@ public sealed partial class StethoscopeSystem : EntitySystem // Don't show the change if this is the first time listening. if (stethoscope.Comp.LastMeasuredDamage == null) { - _popup.PopupPredicted(absString, target, user); + _popup.PopupEntity(absString, target, user); } else { var deltaString = GetDeltaDamageString(stethoscope.Comp.LastMeasuredDamage.Value, asphyxDmg); - _popup.PopupPredicted(Loc.GetString("stethoscope-combined-status", ("absolute", absString), ("delta", deltaString)), target, user); + _popup.PopupEntity(Loc.GetString("stethoscope-combined-status", ("absolute", absString), ("delta", deltaString)), target, user); } stethoscope.Comp.LastMeasuredDamage = asphyxDmg; diff --git a/Content.Shared/Medical/SuitSensors/SharedSuitSensorSystem.cs b/Content.Shared/Medical/SuitSensors/SharedSuitSensorSystem.cs index d03fd20ddc..0bc91d25af 100644 --- a/Content.Shared/Medical/SuitSensors/SharedSuitSensorSystem.cs +++ b/Content.Shared/Medical/SuitSensors/SharedSuitSensorSystem.cs @@ -335,7 +335,7 @@ public abstract partial class SharedSuitSensorSystem : EntitySystem if (userUid != null) { var msg = Loc.GetString("suit-sensor-mode-state", ("mode", GetModeName(mode))); - _popupSystem.PopupClient(msg, sensors, userUid.Value); + _popupSystem.PopupEntity(msg, sensors, userUid.Value); } } diff --git a/Content.Shared/Movement/Systems/SharedJetpackSystem.cs b/Content.Shared/Movement/Systems/SharedJetpackSystem.cs index 740dca7f6c..113967335b 100644 --- a/Content.Shared/Movement/Systems/SharedJetpackSystem.cs +++ b/Content.Shared/Movement/Systems/SharedJetpackSystem.cs @@ -62,7 +62,7 @@ public abstract partial class SharedJetpackSystem : EntitySystem if (transform.GridUid == gridUid && ev.HasGravity && _jetpackQuery.TryGetComponent(user.Jetpack, out var jetpack)) { - _popup.PopupClient(Loc.GetString("jetpack-to-grid"), uid, uid); + _popup.PopupEntity(Loc.GetString("jetpack-to-grid"), uid, uid); SetEnabled(user.Jetpack, jetpack, false, uid); } @@ -92,7 +92,7 @@ public abstract partial class SharedJetpackSystem : EntitySystem { SetEnabled(component.Jetpack, jetpack, false, uid); - _popup.PopupClient(Loc.GetString("jetpack-to-grid"), uid, uid); + _popup.PopupEntity(Loc.GetString("jetpack-to-grid"), uid, uid); } } @@ -132,7 +132,7 @@ public abstract partial class SharedJetpackSystem : EntitySystem if (TryComp(uid, out TransformComponent? xform) && !CanEnableOnGrid(xform.GridUid)) { - _popup.PopupClient(Loc.GetString("jetpack-no-station"), uid, args.Performer); + _popup.PopupEntity(Loc.GetString("jetpack-no-station"), uid, args.Performer); return; } diff --git a/Content.Shared/Movement/Systems/SharedJumpAbilitySystem.cs b/Content.Shared/Movement/Systems/SharedJumpAbilitySystem.cs index 3fbbac4fc5..65097facf5 100644 --- a/Content.Shared/Movement/Systems/SharedJumpAbilitySystem.cs +++ b/Content.Shared/Movement/Systems/SharedJumpAbilitySystem.cs @@ -72,7 +72,7 @@ public sealed partial class SharedJumpAbilitySystem : EntitySystem if (_gravity.IsWeightless(args.Performer) || _standing.IsDown(args.Performer)) { if (entity.Comp.JumpFailedPopup != null) - _popup.PopupClient(Loc.GetString(entity.Comp.JumpFailedPopup.Value), args.Performer, args.Performer); + _popup.PopupEntity(Loc.GetString(entity.Comp.JumpFailedPopup.Value), args.Performer, args.Performer); return; } diff --git a/Content.Shared/Ninja/Systems/DashAbilitySystem.cs b/Content.Shared/Ninja/Systems/DashAbilitySystem.cs index ecbe46ff41..cd0a2c5d0c 100644 --- a/Content.Shared/Ninja/Systems/DashAbilitySystem.cs +++ b/Content.Shared/Ninja/Systems/DashAbilitySystem.cs @@ -57,7 +57,7 @@ public sealed partial class DashAbilitySystem : EntitySystem if (!_hands.IsHolding(user, uid, out var _)) { - _popup.PopupClient(Loc.GetString("dash-ability-not-held", ("item", uid)), user, user); + _popup.PopupEntity(Loc.GetString("dash-ability-not-held", ("item", uid)), user, user); return; } @@ -66,13 +66,13 @@ public sealed partial class DashAbilitySystem : EntitySystem if (!_examine.InRangeUnOccluded(origin, target, SharedInteractionSystem.MaxRaycastRange, null)) { // can only dash if the destination is visible on screen - _popup.PopupClient(Loc.GetString("dash-ability-cant-see", ("item", uid)), user, user); + _popup.PopupEntity(Loc.GetString("dash-ability-cant-see", ("item", uid)), user, user); return; } if (!_sharedCharges.TryUseCharge(uid)) { - _popup.PopupClient(Loc.GetString("dash-ability-no-charges", ("item", uid)), user, user); + _popup.PopupEntity(Loc.GetString("dash-ability-no-charges", ("item", uid)), user, user); return; } diff --git a/Content.Shared/Ninja/Systems/SharedNinjaGlovesSystem.cs b/Content.Shared/Ninja/Systems/SharedNinjaGlovesSystem.cs index c8faef8e45..dde27c880c 100644 --- a/Content.Shared/Ninja/Systems/SharedNinjaGlovesSystem.cs +++ b/Content.Shared/Ninja/Systems/SharedNinjaGlovesSystem.cs @@ -93,7 +93,7 @@ public abstract partial class SharedNinjaGlovesSystem : EntitySystem return; var message = Loc.GetString(args.Activated ? "ninja-gloves-on" : "ninja-gloves-off"); - _popup.PopupClient(message, user, user); + _popup.PopupEntity(message, user, user); if (args.Activated && _ninja.NinjaQuery.TryComp(user, out var ninja)) EnableGloves(ent, (user, ninja)); diff --git a/Content.Shared/Ninja/Systems/SharedNinjaSuitSystem.cs b/Content.Shared/Ninja/Systems/SharedNinjaSuitSystem.cs index 48bd92d89b..e58c74f72f 100644 --- a/Content.Shared/Ninja/Systems/SharedNinjaSuitSystem.cs +++ b/Content.Shared/Ninja/Systems/SharedNinjaSuitSystem.cs @@ -118,7 +118,7 @@ public abstract partial class SharedNinjaSuitSystem : EntitySystem // previously cloaked, disable abilities for a short time _audio.PlayPredicted(comp.RevealSound, uid, user); - Popup.PopupClient(Loc.GetString("ninja-revealed"), user, user, PopupType.MediumCaution); + Popup.PopupEntity(Loc.GetString("ninja-revealed"), user, user, PopupType.MediumCaution); _useDelay.TryResetDelay(uid, id: comp.DisableDelayId); } diff --git a/Content.Shared/Ninja/Systems/SharedSpaceNinjaSystem.cs b/Content.Shared/Ninja/Systems/SharedSpaceNinjaSystem.cs index 1325d3cec1..9866cbe5b6 100644 --- a/Content.Shared/Ninja/Systems/SharedSpaceNinjaSystem.cs +++ b/Content.Shared/Ninja/Systems/SharedSpaceNinjaSystem.cs @@ -104,7 +104,7 @@ public abstract partial class SharedSpaceNinjaSystem : EntitySystem /// private void OnShotAttempted(Entity ent, ref ShotAttemptedEvent args) { - Popup.PopupClient(Loc.GetString("gun-disabled"), ent, ent); + Popup.PopupEntity(Loc.GetString("gun-disabled"), ent, ent); args.Cancel(); } } diff --git a/Content.Shared/Nutrition/EntitySystems/FoodSequenceSystem.cs b/Content.Shared/Nutrition/EntitySystems/FoodSequenceSystem.cs index 4c991496a6..51a5f3ada2 100644 --- a/Content.Shared/Nutrition/EntitySystems/FoodSequenceSystem.cs +++ b/Content.Shared/Nutrition/EntitySystems/FoodSequenceSystem.cs @@ -124,7 +124,7 @@ public sealed partial class FoodSequenceSystem : SharedFoodSequenceSystem if (start.Comp.FoodLayers.Count >= start.Comp.MaxLayers && !elementIndexed.Final || start.Comp.Finished) { if (user is not null) - _popup.PopupClient(Loc.GetString("food-sequence-no-space"), start, user.Value); + _popup.PopupEntity(Loc.GetString("food-sequence-no-space"), start, user.Value); return false; } diff --git a/Content.Shared/Nutrition/EntitySystems/IngestionSystem.API.cs b/Content.Shared/Nutrition/EntitySystems/IngestionSystem.API.cs index ca8beea28f..3c8dbb9e74 100644 --- a/Content.Shared/Nutrition/EntitySystems/IngestionSystem.API.cs +++ b/Content.Shared/Nutrition/EntitySystems/IngestionSystem.API.cs @@ -76,7 +76,7 @@ public sealed partial class IngestionSystem if (!_transform.GetMapCoordinates(user).InRange(_transform.GetMapCoordinates(target), MaxFeedDistance)) { var message = Loc.GetString("interaction-system-user-interaction-cannot-reach"); - _popup.PopupClient(message, user, user); + _popup.PopupEntity(message, user, user); return false; } @@ -87,7 +87,7 @@ public sealed partial class IngestionSystem return true; if (attempt.Blocker != null) - _popup.PopupClient(Loc.GetString("ingestion-remove-mask", ("entity", attempt.Blocker.Value)), target, user); + _popup.PopupEntity(Loc.GetString("ingestion-remove-mask", ("entity", attempt.Blocker.Value)), target, user); return false; } @@ -314,7 +314,7 @@ public sealed partial class IngestionSystem if (solution == null) { - _popup.PopupClient(Loc.GetString("ingestion-try-use-is-empty", ("entity", ingested)), ingested, user); + _popup.PopupEntity(Loc.GetString("ingestion-try-use-is-empty", ("entity", ingested)), ingested, user); return false; } diff --git a/Content.Shared/Nutrition/EntitySystems/IngestionSystem.Blockers.cs b/Content.Shared/Nutrition/EntitySystems/IngestionSystem.Blockers.cs index 3764555540..c4db40c713 100644 --- a/Content.Shared/Nutrition/EntitySystems/IngestionSystem.Blockers.cs +++ b/Content.Shared/Nutrition/EntitySystems/IngestionSystem.Blockers.cs @@ -83,7 +83,7 @@ public sealed partial class IngestionSystem { args.Cancelled = true; - _popup.PopupClient(Loc.GetString("ingestion-try-use-is-empty", ("entity", entity)), entity, args.User); + _popup.PopupEntity(Loc.GetString("ingestion-try-use-is-empty", ("entity", entity)), entity, args.User); return; } @@ -101,7 +101,7 @@ public sealed partial class IngestionSystem args.Cancelled = true; - _popup.PopupClient(Loc.GetString("edible-has-used-storage", ("food", ent), ("verb", GetEdibleVerb(ent.Owner))), args.User, args.User); + _popup.PopupEntity(Loc.GetString("edible-has-used-storage", ("food", ent), ("verb", GetEdibleVerb(ent.Owner))), args.User, args.User); } private void OnItemSlotsEdible(Entity ent, ref EdibleEvent args) @@ -114,7 +114,7 @@ public sealed partial class IngestionSystem args.Cancelled = true; - _popup.PopupClient(Loc.GetString("edible-has-used-storage", ("food", ent), ("verb", GetEdibleVerb(ent.Owner))), args.User, args.User); + _popup.PopupEntity(Loc.GetString("edible-has-used-storage", ("food", ent), ("verb", GetEdibleVerb(ent.Owner))), args.User, args.User); } private void OnOpenableEdible(Entity ent, ref EdibleEvent args) diff --git a/Content.Shared/Nutrition/EntitySystems/IngestionSystem.Utensils.cs b/Content.Shared/Nutrition/EntitySystems/IngestionSystem.Utensils.cs index 16af36193f..4a71968b31 100644 --- a/Content.Shared/Nutrition/EntitySystems/IngestionSystem.Utensils.cs +++ b/Content.Shared/Nutrition/EntitySystems/IngestionSystem.Utensils.cs @@ -43,7 +43,7 @@ public sealed partial class IngestionSystem //Prevents food usage with a wrong utensil if (ev.Types != UtensilType.None && (ev.Types & utensil.Comp.Types) == 0) { - _popup.PopupClient(Loc.GetString("ingestion-try-use-wrong-utensil", ("verb", GetEdibleVerb(target)), ("food", target), ("utensil", utensil.Owner)), user, user); + _popup.PopupEntity(Loc.GetString("ingestion-try-use-wrong-utensil", ("verb", GetEdibleVerb(target)), ("food", target), ("utensil", utensil.Owner)), user, user); return true; } @@ -120,7 +120,7 @@ public sealed partial class IngestionSystem if (!required || (usedTypes & requiredTypes) == requiredTypes) return true; - _popup.PopupClient(Loc.GetString("ingestion-you-need-to-hold-utensil", ("utensil", requiredTypes ^ usedTypes)), entity, entity); + _popup.PopupEntity(Loc.GetString("ingestion-you-need-to-hold-utensil", ("utensil", requiredTypes ^ usedTypes)), entity, entity); return false; } diff --git a/Content.Shared/Nutrition/EntitySystems/IngestionSystem.cs b/Content.Shared/Nutrition/EntitySystems/IngestionSystem.cs index 9d6af07b34..8661b6a199 100644 --- a/Content.Shared/Nutrition/EntitySystems/IngestionSystem.cs +++ b/Content.Shared/Nutrition/EntitySystems/IngestionSystem.cs @@ -251,9 +251,9 @@ public sealed partial class IngestionSystem : EntitySystem return; if (forceFed) - _popup.PopupClient(Loc.GetString("ingestion-cant-digest-other", ("target", entity), ("entity", food)), entity, args.User); + _popup.PopupEntity(Loc.GetString("ingestion-cant-digest-other", ("target", entity), ("entity", food)), entity, args.User); else - _popup.PopupClient(Loc.GetString("ingestion-cant-digest", ("entity", food)), entity, entity); + _popup.PopupEntity(Loc.GetString("ingestion-cant-digest", ("entity", food)), entity, entity); return; } @@ -333,11 +333,11 @@ public sealed partial class IngestionSystem : EntitySystem if (stomachToUse == null) { // Very long - _popup.PopupClient(Loc.GetString("ingestion-you-cannot-ingest-any-more", ("verb", GetEdibleVerb(food))), entity, entity); + _popup.PopupEntity(Loc.GetString("ingestion-you-cannot-ingest-any-more", ("verb", GetEdibleVerb(food))), entity, entity); if (!forceFed) return; - _popup.PopupClient(Loc.GetString("ingestion-other-cannot-ingest-any-more", ("target", entity), ("verb", GetEdibleVerb(food))), args.Target.Value, args.User); + _popup.PopupEntity(Loc.GetString("ingestion-other-cannot-ingest-any-more", ("target", entity), ("verb", GetEdibleVerb(food))), args.Target.Value, args.User); return; } @@ -348,11 +348,11 @@ public sealed partial class IngestionSystem : EntitySystem if (beforeEv.Cancelled || beforeEv.Min > beforeEv.Max) { // Very long x2 - _popup.PopupClient(Loc.GetString("ingestion-you-cannot-ingest-any-more", ("verb", GetEdibleVerb(food))), entity, entity); + _popup.PopupEntity(Loc.GetString("ingestion-you-cannot-ingest-any-more", ("verb", GetEdibleVerb(food))), entity, entity); if (!forceFed) return; - _popup.PopupClient(Loc.GetString("ingestion-other-cannot-ingest-any-more", ("target", entity), ("verb", GetEdibleVerb(food))), args.Target.Value, args.User); + _popup.PopupEntity(Loc.GetString("ingestion-other-cannot-ingest-any-more", ("target", entity), ("verb", GetEdibleVerb(food))), args.Target.Value, args.User); return; } @@ -460,7 +460,7 @@ public sealed partial class IngestionSystem : EntitySystem var userName = Identity.Entity(args.User, EntityManager); _popup.PopupEntity(Loc.GetString("edible-force-feed-success", ("user", userName), ("verb", edible.Verb), ("flavors", flavors), ("satiated", args.Satiated)), entity, entity); - _popup.PopupClient(Loc.GetString("edible-force-feed-success-user", ("target", targetName), ("verb", edible.Verb)), args.User, args.User); + _popup.PopupEntity(Loc.GetString("edible-force-feed-success-user", ("target", targetName), ("verb", edible.Verb)), args.User, args.User); // log successful forced feeding // TODO: Use correct verb @@ -468,7 +468,7 @@ public sealed partial class IngestionSystem : EntitySystem } else { - _popup.PopupPredicted(Loc.GetString(edible.Message, ("food", entity.Owner), ("flavors", flavors), ("satiated", args.Satiated)), + _popup.PopupEntity(Loc.GetString(edible.Message, ("food", entity.Owner), ("flavors", flavors), ("satiated", args.Satiated)), Loc.GetString(edible.OtherMessage), args.User, args.User); diff --git a/Content.Shared/Nutrition/EntitySystems/MessyDrinkerSystem.cs b/Content.Shared/Nutrition/EntitySystems/MessyDrinkerSystem.cs index 7f7cc623d8..6024575b7e 100644 --- a/Content.Shared/Nutrition/EntitySystems/MessyDrinkerSystem.cs +++ b/Content.Shared/Nutrition/EntitySystems/MessyDrinkerSystem.cs @@ -41,7 +41,7 @@ public sealed partial class MessyDrinkerSystem : EntitySystem return; if (ent.Comp.SpillMessagePopup != null) - _popup.PopupPredicted(Loc.GetString(ent.Comp.SpillMessagePopup), null, ent, ent, PopupType.MediumCaution); + _popup.PopupEntity(Loc.GetString(ent.Comp.SpillMessagePopup), ent, ent, PopupType.MediumCaution); var split = ev.Split.SplitSolution(ent.Comp.SpillAmount); diff --git a/Content.Shared/Nutrition/EntitySystems/OpenableSystem.cs b/Content.Shared/Nutrition/EntitySystems/OpenableSystem.cs index c4ec955c00..464a7eb659 100644 --- a/Content.Shared/Nutrition/EntitySystems/OpenableSystem.cs +++ b/Content.Shared/Nutrition/EntitySystems/OpenableSystem.cs @@ -162,10 +162,7 @@ public sealed partial class OpenableSystem : EntitySystem if (user != null) { - if (predicted) - _popup.PopupClient(Loc.GetString(comp.ClosedPopup, ("owner", uid)), user.Value, user.Value); - else - _popup.PopupEntity(Loc.GetString(comp.ClosedPopup, ("owner", uid)), user.Value, user.Value); + _popup.PopupEntity(Loc.GetString(comp.ClosedPopup, ("owner", uid)), user.Value, user.Value); } return true; diff --git a/Content.Shared/Nutrition/EntitySystems/PressurizedSolutionSystem.cs b/Content.Shared/Nutrition/EntitySystems/PressurizedSolutionSystem.cs index d217fda3dd..0714bd3aef 100644 --- a/Content.Shared/Nutrition/EntitySystems/PressurizedSolutionSystem.cs +++ b/Content.Shared/Nutrition/EntitySystems/PressurizedSolutionSystem.cs @@ -187,7 +187,7 @@ public sealed partial class PressurizedSolutionSystem : EntitySystem var selfMessage = Loc.GetString(entity.Comp.SprayHolderMessageSelf, ("victim", victimName), ("drink", drinkName)); var othersMessage = Loc.GetString(entity.Comp.SprayHolderMessageOthers, ("victim", victimName), ("drink", drinkName)); - _popup.PopupPredicted(selfMessage, othersMessage, target.Value, target.Value); + _popup.PopupEntity(selfMessage, othersMessage, target.Value, target.Value); } else { diff --git a/Content.Shared/Nutrition/EntitySystems/ShakeableSystem.cs b/Content.Shared/Nutrition/EntitySystems/ShakeableSystem.cs index a73e8d0505..509d5151a0 100644 --- a/Content.Shared/Nutrition/EntitySystems/ShakeableSystem.cs +++ b/Content.Shared/Nutrition/EntitySystems/ShakeableSystem.cs @@ -86,7 +86,7 @@ public sealed partial class ShakeableSystem : EntitySystem var selfMessage = Loc.GetString(entity.Comp.ShakePopupMessageSelf, ("user", userName), ("shakeable", shakeableName)); var othersMessage = Loc.GetString(entity.Comp.ShakePopupMessageOthers, ("user", userName), ("shakeable", shakeableName)); - _popup.PopupPredicted(selfMessage, othersMessage, user, user); + _popup.PopupEntity(selfMessage, othersMessage, user, user); _audio.PlayPredicted(entity.Comp.ShakeSound, entity, user); diff --git a/Content.Shared/Nutrition/EntitySystems/SharedCreamPieSystem.cs b/Content.Shared/Nutrition/EntitySystems/SharedCreamPieSystem.cs index 67988072dc..d87cd5959b 100644 --- a/Content.Shared/Nutrition/EntitySystems/SharedCreamPieSystem.cs +++ b/Content.Shared/Nutrition/EntitySystems/SharedCreamPieSystem.cs @@ -131,26 +131,19 @@ public abstract partial class SharedCreamPieSystem : EntitySystem SetCreamPied(creamPied.AsNullable(), true); // Throwing is not predicted, so the thrower is not equal to the client predicting the collision, so we cannot pass in a user. - // TODO: Make the popup API sane. if (_net.IsClient) return; - // Shown only to the player that was hit. _popup.PopupEntity( Loc.GetString( "cream-pied-component-on-hit-by-message", ("thrown", args.Thrown)), - creamPied.Owner, creamPied.Owner); - - var otherPlayers = Filter.PvsExcept(creamPied.Owner); - - // Show to everyone else. - _popup.PopupEntity( Loc.GetString( "cream-pied-component-on-hit-by-message-others", ("owner", Identity.Entity(creamPied.Owner, EntityManager)), ("thrown", args.Thrown)), - creamPied.Owner, otherPlayers, false); + creamPied.Owner, + creamPied.Owner); } private void OnRejuvenate(Entity ent, ref RejuvenateEvent args) diff --git a/Content.Shared/PDA/SharedRingerSystem.cs b/Content.Shared/PDA/SharedRingerSystem.cs index d8f383bce0..3841ed56e4 100644 --- a/Content.Shared/PDA/SharedRingerSystem.cs +++ b/Content.Shared/PDA/SharedRingerSystem.cs @@ -209,9 +209,8 @@ public abstract partial class SharedRingerSystem : EntitySystem UpdateRingerUi(ent); - _popup.PopupPredicted(Loc.GetString("comp-ringer-vibration-popup"), + _popup.PopupEntity(Loc.GetString("comp-ringer-vibration-popup"), ent, - ent.Owner, Filter.Pvs(ent, 0.05f), false, PopupType.Medium); diff --git a/Content.Shared/Paper/PaperSystem.cs b/Content.Shared/Paper/PaperSystem.cs index 6bca133986..568ba228fb 100644 --- a/Content.Shared/Paper/PaperSystem.cs +++ b/Content.Shared/Paper/PaperSystem.cs @@ -120,7 +120,7 @@ public sealed partial class PaperSystem : EntitySystem if (entity.Comp.EditingDisabled) { var paperEditingDisabledMessage = Loc.GetString("paper-tamper-proof-modified-message"); - _popupSystem.PopupClient(paperEditingDisabledMessage, entity, args.User); + _popupSystem.PopupEntity(paperEditingDisabledMessage, entity, args.User); args.Handled = true; return; @@ -133,7 +133,7 @@ public sealed partial class PaperSystem : EntitySystem if (ev.FailReason is not null) { var fileWriteMessage = Loc.GetString(ev.FailReason); - _popupSystem.PopupClient(fileWriteMessage, entity.Owner, args.User); + _popupSystem.PopupEntity(fileWriteMessage, entity.Owner, args.User); } args.Handled = true; @@ -159,12 +159,10 @@ public sealed partial class PaperSystem : EntitySystem ("user", args.User), ("target", args.Target), ("stamp", args.Used)); - - _popupSystem.PopupEntity(stampPaperOtherMessage, args.User, Filter.PvsExcept(args.User, entityManager: EntityManager), true); var stampPaperSelfMessage = Loc.GetString("paper-component-action-stamp-paper-self", ("target", args.Target), ("stamp", args.Used)); - _popupSystem.PopupClient(stampPaperSelfMessage, args.User, args.User); + _popupSystem.PopupEntity(stampPaperSelfMessage, stampPaperOtherMessage, args.User, args.User); _audio.PlayPredicted(stampComp.Sound, entity, args.User); diff --git a/Content.Shared/ParcelWrap/Systems/ParcelWrappingSystem.WrappedParcel.cs b/Content.Shared/ParcelWrap/Systems/ParcelWrappingSystem.WrappedParcel.cs index 2cff05a056..8a5a8f4fc3 100644 --- a/Content.Shared/ParcelWrap/Systems/ParcelWrappingSystem.WrappedParcel.cs +++ b/Content.Shared/ParcelWrap/Systems/ParcelWrappingSystem.WrappedParcel.cs @@ -105,9 +105,8 @@ public sealed partial class ParcelWrappingSystem // Unwrap the package and if something was in it, show a popup describing "wow something came out!" if (UnwrapInternal(user: null, parcel) is { } contents) { - _popup.PopupPredicted(Loc.GetString("parcel-wrap-popup-parcel-destroyed", ("contents", contents)), + _popup.PopupEntity(Loc.GetString("parcel-wrap-popup-parcel-destroyed", ("contents", contents)), contents, - null, PopupType.MediumCaution); } } diff --git a/Content.Shared/Plunger/Systems/PlungerSystem.cs b/Content.Shared/Plunger/Systems/PlungerSystem.cs index 04e389a572..5fff8f77d2 100644 --- a/Content.Shared/Plunger/Systems/PlungerSystem.cs +++ b/Content.Shared/Plunger/Systems/PlungerSystem.cs @@ -60,7 +60,7 @@ public sealed partial class PlungerSystem : EntitySystem if (!TryComp(target, out PlungerUseComponent? plunge)) return; - _popup.PopupClient(Loc.GetString("plunger-unblock", ("target", target)), args.User, args.User, PopupType.Medium); + _popup.PopupEntity(Loc.GetString("plunger-unblock", ("target", target)), args.User, args.User, PopupType.Medium); plunge.Plunged = true; var spawn = ProtoMan.Index(plunge.PlungerLoot).Pick(_random); diff --git a/Content.Shared/Polymorph/Systems/SharedChameleonProjectorSystem.cs b/Content.Shared/Polymorph/Systems/SharedChameleonProjectorSystem.cs index c72afa668c..f57c81451d 100644 --- a/Content.Shared/Polymorph/Systems/SharedChameleonProjectorSystem.cs +++ b/Content.Shared/Polymorph/Systems/SharedChameleonProjectorSystem.cs @@ -148,13 +148,13 @@ public abstract partial class SharedChameleonProjectorSystem : EntitySystem { if (_container.IsEntityInContainer(target) || _container.IsEntityInContainer(user)) { - _popup.PopupClient(Loc.GetString("chameleon-projector-inside-container"), target, user); + _popup.PopupEntity(Loc.GetString("chameleon-projector-inside-container"), target, user); return false; } if (IsInvalid(ent.Comp, target)) { - _popup.PopupClient(Loc.GetString("chameleon-projector-invalid"), target, user); + _popup.PopupEntity(Loc.GetString("chameleon-projector-invalid"), target, user); return false; } @@ -162,7 +162,7 @@ public abstract partial class SharedChameleonProjectorSystem : EntitySystem if (TryComp(ent.Owner, out var itemToggle) && !_toggle.TryActivate((ent.Owner, itemToggle), user)) return false; - _popup.PopupClient(Loc.GetString("chameleon-projector-success"), target, user); + _popup.PopupEntity(Loc.GetString("chameleon-projector-success"), target, user); Disguise(ent, user, target); return true; } diff --git a/Content.Shared/PowerCell/PowerCellSystem.API.cs b/Content.Shared/PowerCell/PowerCellSystem.API.cs index 36590c7983..51d12ef10b 100644 --- a/Content.Shared/PowerCell/PowerCellSystem.API.cs +++ b/Content.Shared/PowerCell/PowerCellSystem.API.cs @@ -138,10 +138,7 @@ public sealed partial class PowerCellSystem if (user == null) return false; - if (predicted) - _popup.PopupClient(Loc.GetString("power-cell-no-battery"), ent.Owner, user.Value); - else - _popup.PopupEntity(Loc.GetString("power-cell-no-battery"), ent.Owner, user.Value); + _popup.PopupEntity(Loc.GetString("power-cell-no-battery"), ent.Owner, user.Value); return false; } @@ -151,10 +148,7 @@ public sealed partial class PowerCellSystem if (user == null) return false; - if (predicted) - _popup.PopupClient(Loc.GetString("power-cell-insufficient"), ent.Owner, user.Value); - else - _popup.PopupEntity(Loc.GetString("power-cell-insufficient"), ent.Owner, user.Value); + _popup.PopupEntity(Loc.GetString("power-cell-insufficient"), ent.Owner, user.Value); return false; } @@ -177,10 +171,7 @@ public sealed partial class PowerCellSystem if (user == null) return false; - if (predicted) - _popup.PopupClient(Loc.GetString("power-cell-no-battery"), ent.Owner, user.Value); - else - _popup.PopupEntity(Loc.GetString("power-cell-no-battery"), ent.Owner, user.Value); + _popup.PopupEntity(Loc.GetString("power-cell-no-battery"), ent.Owner, user.Value); return false; } @@ -190,10 +181,7 @@ public sealed partial class PowerCellSystem if (user == null) return false; - if (predicted) - _popup.PopupClient(Loc.GetString("power-cell-insufficient"), ent.Owner, user.Value); - else - _popup.PopupEntity(Loc.GetString("power-cell-insufficient"), ent.Owner, user.Value); + _popup.PopupEntity(Loc.GetString("power-cell-insufficient"), ent.Owner, user.Value); return false; } diff --git a/Content.Shared/Prying/Systems/PryingSystem.cs b/Content.Shared/Prying/Systems/PryingSystem.cs index d5732cd9b9..639ecd8709 100644 --- a/Content.Shared/Prying/Systems/PryingSystem.cs +++ b/Content.Shared/Prying/Systems/PryingSystem.cs @@ -95,7 +95,7 @@ public sealed partial class PryingSystem : EntitySystem if (!CanPry(target, user, out var message, comp)) { if (!string.IsNullOrWhiteSpace(message)) - _popup.PopupClient(Loc.GetString(message), target, user); + _popup.PopupEntity(Loc.GetString(message), target, user); // If we have reached this point we want the event that caused this // to be marked as handled. return true; @@ -185,7 +185,7 @@ public sealed partial class PryingSystem : EntitySystem if (!CanPry(uid, args.User, out var message, comp)) { if (!string.IsNullOrWhiteSpace(message)) - _popup.PopupClient(Loc.GetString(message), uid, args.User); + _popup.PopupEntity(Loc.GetString(message), uid, args.User); return; } diff --git a/Content.Shared/RCD/Systems/RCDAmmoSystem.cs b/Content.Shared/RCD/Systems/RCDAmmoSystem.cs index 7d9abed698..566db831be 100644 --- a/Content.Shared/RCD/Systems/RCDAmmoSystem.cs +++ b/Content.Shared/RCD/Systems/RCDAmmoSystem.cs @@ -47,11 +47,11 @@ public sealed partial class RCDAmmoSystem : EntitySystem var count = Math.Min(charges.MaxCharges - current, comp.Charges); if (count <= 0) { - _popup.PopupClient(Loc.GetString("rcd-ammo-component-after-interact-full"), target, user); + _popup.PopupEntity(Loc.GetString("rcd-ammo-component-after-interact-full"), target, user); return; } - _popup.PopupClient(Loc.GetString("rcd-ammo-component-after-interact-refilled"), target, user); + _popup.PopupEntity(Loc.GetString("rcd-ammo-component-after-interact-refilled"), target, user); _sharedCharges.AddCharges(target, count); comp.Charges -= count; Dirty(uid, comp); diff --git a/Content.Shared/RCD/Systems/RCDSystem.cs b/Content.Shared/RCD/Systems/RCDSystem.cs index b66fbde020..587c006708 100644 --- a/Content.Shared/RCD/Systems/RCDSystem.cs +++ b/Content.Shared/RCD/Systems/RCDSystem.cs @@ -145,7 +145,7 @@ public sealed partial class RCDSystem : EntitySystem if (!TryComp(gridUid, out var mapGrid)) { - _popup.PopupClient(Loc.GetString("rcd-component-no-valid-grid"), uid, user); + _popup.PopupEntity(Loc.GetString("rcd-component-no-valid-grid"), uid, user); return; } var tile = _mapSystem.GetTileRef(gridUid.Value, mapGrid, location); @@ -344,7 +344,7 @@ public sealed partial class RCDSystem : EntitySystem if (charges == 0) { if (popMsgs) - _popup.PopupClient(Loc.GetString("rcd-component-no-ammo-message"), uid, user); + _popup.PopupEntity(Loc.GetString("rcd-component-no-ammo-message"), uid, user); return false; } @@ -352,7 +352,7 @@ public sealed partial class RCDSystem : EntitySystem if (prototype.Cost > charges) { if (popMsgs) - _popup.PopupClient(Loc.GetString("rcd-component-insufficient-ammo-message"), uid, user); + _popup.PopupEntity(Loc.GetString("rcd-component-insufficient-ammo-message"), uid, user); return false; } @@ -386,7 +386,7 @@ public sealed partial class RCDSystem : EntitySystem if (prototype.ConstructionRules.Contains(RcdConstructionRule.MustBuildOnEmptyTile) && !tile.Tile.IsEmpty) { if (popMsgs) - _popup.PopupClient(Loc.GetString("rcd-component-must-build-on-empty-tile-message"), uid, user); + _popup.PopupEntity(Loc.GetString("rcd-component-must-build-on-empty-tile-message"), uid, user); return false; } @@ -395,7 +395,7 @@ public sealed partial class RCDSystem : EntitySystem if (!prototype.ConstructionRules.Contains(RcdConstructionRule.CanBuildOnEmptyTile) && tile.Tile.IsEmpty) { if (popMsgs) - _popup.PopupClient(Loc.GetString("rcd-component-cannot-build-on-empty-tile-message"), uid, user); + _popup.PopupEntity(Loc.GetString("rcd-component-cannot-build-on-empty-tile-message"), uid, user); return false; } @@ -404,7 +404,7 @@ public sealed partial class RCDSystem : EntitySystem if (prototype.ConstructionRules.Contains(RcdConstructionRule.MustBuildOnSubfloor) && !_turf.GetContentTileDefinition(tile).IsSubFloor) { if (popMsgs) - _popup.PopupClient(Loc.GetString("rcd-component-must-build-on-subfloor-message"), uid, user); + _popup.PopupEntity(Loc.GetString("rcd-component-must-build-on-subfloor-message"), uid, user); return false; } @@ -416,7 +416,7 @@ public sealed partial class RCDSystem : EntitySystem if (!_floors.CanPlaceTile(gridUid, mapGrid, tile.GridIndices, out var reason)) { if (popMsgs) - _popup.PopupClient(reason, uid, user); + _popup.PopupEntity(reason, uid, user); return false; } @@ -431,7 +431,7 @@ public sealed partial class RCDSystem : EntitySystem if (replacementContentDef.BaseTurf != tileDef.ID && !replacementContentDef.BaseWhitelist.Contains(tileDef.ID)) { if (popMsgs) - _popup.PopupClient(Loc.GetString("rcd-component-cannot-build-on-empty-tile-message"), uid, user); + _popup.PopupEntity(Loc.GetString("rcd-component-cannot-build-on-empty-tile-message"), uid, user); return false; } @@ -441,7 +441,7 @@ public sealed partial class RCDSystem : EntitySystem if (tileDef.ID == prototype.Prototype) { if (popMsgs) - _popup.PopupClient(Loc.GetString("rcd-component-cannot-build-identical-tile"), uid, user); + _popup.PopupEntity(Loc.GetString("rcd-component-cannot-build-identical-tile"), uid, user); return false; } @@ -477,7 +477,7 @@ public sealed partial class RCDSystem : EntitySystem if (isIdentical) { if (popMsgs) - _popup.PopupClient(Loc.GetString("rcd-component-cannot-build-identical-entity"), uid, user); + _popup.PopupEntity(Loc.GetString("rcd-component-cannot-build-identical-entity"), uid, user); return false; } @@ -489,7 +489,7 @@ public sealed partial class RCDSystem : EntitySystem if (isCatwalk && _tags.HasTag(ent, CatwalkTag)) { if (popMsgs) - _popup.PopupClient(Loc.GetString("rcd-component-cannot-build-on-occupied-tile-message"), uid, user); + _popup.PopupEntity(Loc.GetString("rcd-component-cannot-build-on-occupied-tile-message"), uid, user); return false; } @@ -509,7 +509,7 @@ public sealed partial class RCDSystem : EntitySystem // Collision was detected if (popMsgs) - _popup.PopupClient(Loc.GetString("rcd-component-cannot-build-on-occupied-tile-message"), uid, user); + _popup.PopupEntity(Loc.GetString("rcd-component-cannot-build-on-occupied-tile-message"), uid, user); return false; } @@ -528,7 +528,7 @@ public sealed partial class RCDSystem : EntitySystem if (tile.Tile.IsEmpty) { if (popMsgs) - _popup.PopupClient(Loc.GetString("rcd-component-nothing-to-deconstruct-message"), uid, user); + _popup.PopupEntity(Loc.GetString("rcd-component-nothing-to-deconstruct-message"), uid, user); return false; } @@ -537,7 +537,7 @@ public sealed partial class RCDSystem : EntitySystem if (_turf.IsTileBlocked(tile, CollisionGroup.MobMask)) { if (popMsgs) - _popup.PopupClient(Loc.GetString("rcd-component-tile-obstructed-message"), uid, user); + _popup.PopupEntity(Loc.GetString("rcd-component-tile-obstructed-message"), uid, user); return false; } @@ -548,7 +548,7 @@ public sealed partial class RCDSystem : EntitySystem if (tileDef.Indestructible) { if (popMsgs) - _popup.PopupClient(Loc.GetString("rcd-component-tile-indestructible-message"), uid, user); + _popup.PopupEntity(Loc.GetString("rcd-component-tile-indestructible-message"), uid, user); return false; } @@ -561,7 +561,7 @@ public sealed partial class RCDSystem : EntitySystem if (!TryComp(target, out var deconstructible) || !deconstructible.Deconstructable) { if (popMsgs) - _popup.PopupClient(Loc.GetString("rcd-component-deconstruct-target-not-on-whitelist-message"), uid, user); + _popup.PopupEntity(Loc.GetString("rcd-component-deconstruct-target-not-on-whitelist-message"), uid, user); return false; } diff --git a/Content.Shared/Radio/EntitySystems/EncryptionKeySystem.cs b/Content.Shared/Radio/EntitySystems/EncryptionKeySystem.cs index 724ca59561..4c8f72f543 100644 --- a/Content.Shared/Radio/EntitySystems/EncryptionKeySystem.cs +++ b/Content.Shared/Radio/EntitySystems/EncryptionKeySystem.cs @@ -53,7 +53,7 @@ public sealed partial class EncryptionKeySystem : EntitySystem _hands.PickupOrDrop(args.User, ent, dropNear: true); } - _popup.PopupPredicted(Loc.GetString("encryption-keys-all-extracted"), uid, args.User); + _popup.PopupEntity(Loc.GetString("encryption-keys-all-extracted"), uid, args.User); _audio.PlayPredicted(component.KeyExtractionSound, uid, args.User); } @@ -106,25 +106,25 @@ public sealed partial class EncryptionKeySystem : EntitySystem { if (!component.KeysUnlocked) { - _popup.PopupClient(Loc.GetString("encryption-keys-are-locked"), uid, args.User); + _popup.PopupEntity(Loc.GetString("encryption-keys-are-locked"), uid, args.User); return; } if (TryComp(uid, out var panel) && !panel.Open) { - _popup.PopupClient(Loc.GetString("encryption-keys-panel-locked"), uid, args.User); + _popup.PopupEntity(Loc.GetString("encryption-keys-panel-locked"), uid, args.User); return; } if (component.KeySlots <= component.KeyContainer.ContainedEntities.Count) { - _popup.PopupClient(Loc.GetString("encryption-key-slots-already-full"), uid, args.User); + _popup.PopupEntity(Loc.GetString("encryption-key-slots-already-full"), uid, args.User); return; } if (_container.Insert(args.Used, component.KeyContainer)) { - _popup.PopupClient(Loc.GetString("encryption-key-successfully-installed"), uid, args.User); + _popup.PopupEntity(Loc.GetString("encryption-key-successfully-installed"), uid, args.User); _audio.PlayPredicted(component.KeyInsertionSound, args.Target, args.User); args.Handled = true; return; @@ -136,19 +136,19 @@ public sealed partial class EncryptionKeySystem : EntitySystem { if (!component.KeysUnlocked) { - _popup.PopupClient(Loc.GetString("encryption-keys-are-locked"), uid, args.User); + _popup.PopupEntity(Loc.GetString("encryption-keys-are-locked"), uid, args.User); return; } if (!_wires.IsPanelOpen(uid)) { - _popup.PopupClient(Loc.GetString("encryption-keys-panel-locked"), uid, args.User); + _popup.PopupEntity(Loc.GetString("encryption-keys-panel-locked"), uid, args.User); return; } if (component.KeyContainer.ContainedEntities.Count == 0) { - _popup.PopupClient(Loc.GetString("encryption-keys-no-keys"), uid, args.User); + _popup.PopupEntity(Loc.GetString("encryption-keys-no-keys"), uid, args.User); return; } diff --git a/Content.Shared/Radio/EntitySystems/SharedJammerSystem.cs b/Content.Shared/Radio/EntitySystems/SharedJammerSystem.cs index a08c867006..5b928edc08 100644 --- a/Content.Shared/Radio/EntitySystems/SharedJammerSystem.cs +++ b/Content.Shared/Radio/EntitySystems/SharedJammerSystem.cs @@ -52,7 +52,7 @@ public abstract partial class SharedJammerSystem : EntitySystem var state = Loc.GetString(args.Activated ? "radio-jammer-component-on-state" : "radio-jammer-component-off-state"); var message = Loc.GetString("radio-jammer-component-on-use", ("state", state)); - _popup.PopupPredicted(message, args.User.Value, args.User.Value); + _popup.PopupEntity(message, args.User.Value, args.User.Value); } private void OnRefreshChargeRate(Entity entity, ref RefreshChargeRateEvent args) @@ -88,7 +88,7 @@ public abstract partial class SharedJammerSystem : EntitySystem // The range should be updated when it turns on again! _jammer.TrySetRange(entity.Owner, GetCurrentRange(entity)); - _popup.PopupClient(Loc.GetString(setting.Message), user, user); + _popup.PopupEntity(Loc.GetString(setting.Message), user, user); }, Text = Loc.GetString(setting.Name), }; diff --git a/Content.Shared/Remotes/EntitySystems/SharedDoorRemoteSystem.cs b/Content.Shared/Remotes/EntitySystems/SharedDoorRemoteSystem.cs index 21365e674e..091f5bf26e 100644 --- a/Content.Shared/Remotes/EntitySystems/SharedDoorRemoteSystem.cs +++ b/Content.Shared/Remotes/EntitySystems/SharedDoorRemoteSystem.cs @@ -67,7 +67,7 @@ public abstract partial class SharedDoorRemoteSystem : EntitySystem if (!_powerReceiver.IsPowered(args.Target.Value)) { - _popup.PopupClient(Loc.GetString("door-remote-no-power"), args.User, args.User); + _popup.PopupEntity(Loc.GetString("door-remote-no-power"), args.User, args.User); return; } @@ -88,7 +88,7 @@ public abstract partial class SharedDoorRemoteSystem : EntitySystem if (isAirlock) _doorSystem.Deny(args.Target.Value, doorComp, user: args.User, predicted: true); - _popup.PopupClient(Loc.GetString("door-remote-denied"), args.User, args.User); + _popup.PopupEntity(Loc.GetString("door-remote-denied"), args.User, args.User); return; } } diff --git a/Content.Shared/Repairable/RepairableSystem.cs b/Content.Shared/Repairable/RepairableSystem.cs index 6693d8974b..d46759b7b8 100644 --- a/Content.Shared/Repairable/RepairableSystem.cs +++ b/Content.Shared/Repairable/RepairableSystem.cs @@ -51,7 +51,7 @@ public sealed partial class RepairableSystem : EntitySystem if (!args.Repeat) { var str = Loc.GetString("comp-repairable-repair", ("target", ent.Owner), ("tool", args.Used!)); - _popup.PopupClient(str, ent.Owner, args.User); + _popup.PopupEntity(str, ent.Owner, args.User); var ev = new RepairedEvent(ent, args.User); RaiseLocalEvent(ent.Owner, ref ev); diff --git a/Content.Shared/Research/Systems/BlueprintSystem.cs b/Content.Shared/Research/Systems/BlueprintSystem.cs index c01a0efaf4..0628b5a027 100644 --- a/Content.Shared/Research/Systems/BlueprintSystem.cs +++ b/Content.Shared/Research/Systems/BlueprintSystem.cs @@ -60,7 +60,7 @@ public sealed partial class BlueprintSystem : EntitySystem ("user", userId), ("blueprint", bpId), ("receiver", machineId)); - _popup.PopupPredicted(msg, ent, user); + _popup.PopupEntity(msg, ent); } _container.Insert(blueprint.Owner, _container.GetContainer(ent, ent.Comp.ContainerId)); @@ -87,7 +87,7 @@ public sealed partial class BlueprintSystem : EntitySystem var currentRecipes = GetBlueprintRecipes(ent); if (currentRecipes.Count != 0 && currentRecipes.IsSupersetOf(blueprint.Comp.ProvidedRecipes)) { - _popup.PopupPredicted(Loc.GetString("blueprint-receiver-popup-recipe-exists"), ent, user); + _popup.PopupEntity(Loc.GetString("blueprint-receiver-popup-recipe-exists"), ent, user); return false; } diff --git a/Content.Shared/Research/Systems/SharedResearchStealerSystem.cs b/Content.Shared/Research/Systems/SharedResearchStealerSystem.cs index 3838f0e885..3192443ca9 100644 --- a/Content.Shared/Research/Systems/SharedResearchStealerSystem.cs +++ b/Content.Shared/Research/Systems/SharedResearchStealerSystem.cs @@ -39,7 +39,7 @@ public abstract partial class SharedResearchStealerSystem : EntitySystem // fail fast if theres no techs to steal right now if (database.UnlockedTechnologies.Count == 0) { - _popup.PopupClient(Loc.GetString("ninja-download-fail"), uid, uid); + _popup.PopupEntity(Loc.GetString("ninja-download-fail"), uid, uid); return; } diff --git a/Content.Shared/Research/TechnologyDisk/Systems/TechnologyDiskSystem.cs b/Content.Shared/Research/TechnologyDisk/Systems/TechnologyDiskSystem.cs index abee4f8099..4692451881 100644 --- a/Content.Shared/Research/TechnologyDisk/Systems/TechnologyDiskSystem.cs +++ b/Content.Shared/Research/TechnologyDisk/Systems/TechnologyDiskSystem.cs @@ -138,7 +138,7 @@ public sealed partial class TechnologyDiskSystem : EntitySystem _research.AddLatheRecipe(target, recipe, database); } } - _popup.PopupClient(Loc.GetString("tech-disk-inserted"), target, args.User); + _popup.PopupEntity(Loc.GetString("tech-disk-inserted"), target, args.User); PredictedQueueDel(ent.Owner); args.Handled = true; } diff --git a/Content.Shared/RetractableItemAction/RetractableItemActionSystem.cs b/Content.Shared/RetractableItemAction/RetractableItemActionSystem.cs index 9ca70790a6..47595ea25c 100644 --- a/Content.Shared/RetractableItemAction/RetractableItemActionSystem.cs +++ b/Content.Shared/RetractableItemAction/RetractableItemActionSystem.cs @@ -58,7 +58,7 @@ public sealed partial class RetractableItemActionSystem : EntitySystem && !_hands.IsHolding(args.Performer, ent.Comp.ActionItemUid) && !_hands.CanDropHeld(args.Performer, activeHand, false)) { - _popups.PopupClient(Loc.GetString("retractable-item-hand-cannot-drop"), args.Performer, args.Performer); + _popups.PopupEntity(Loc.GetString("retractable-item-hand-cannot-drop"), args.Performer, args.Performer); return; } diff --git a/Content.Shared/Rotatable/RotatableSystem.cs b/Content.Shared/Rotatable/RotatableSystem.cs index a21a4995c0..6a14151e50 100644 --- a/Content.Shared/Rotatable/RotatableSystem.cs +++ b/Content.Shared/Rotatable/RotatableSystem.cs @@ -138,7 +138,7 @@ public sealed partial class RotatableSystem : EntitySystem if (!rotatableComp.RotateWhileAnchored && TryComp(entity, out var physics) && physics.BodyType == BodyType.Static) { - _popup.PopupClient(Loc.GetString("rotatable-component-try-rotate-stuck"), entity, player); + _popup.PopupEntity(Loc.GetString("rotatable-component-try-rotate-stuck"), entity, player); return false; } @@ -163,7 +163,7 @@ public sealed partial class RotatableSystem : EntitySystem if (!rotatableComp.RotateWhileAnchored && TryComp(entity, out var physics) && physics.BodyType == BodyType.Static) { - _popup.PopupClient(Loc.GetString("rotatable-component-try-rotate-stuck"), entity, player); + _popup.PopupEntity(Loc.GetString("rotatable-component-try-rotate-stuck"), entity, player); return false; } @@ -187,7 +187,7 @@ public sealed partial class RotatableSystem : EntitySystem // Check if the object is anchored. if (TryComp(entity, out var physics) && physics.BodyType == BodyType.Static) { - _popup.PopupClient(Loc.GetString("flippable-component-try-flip-is-stuck"), entity, player); + _popup.PopupEntity(Loc.GetString("flippable-component-try-flip-is-stuck"), entity, player); return false; } diff --git a/Content.Shared/Salvage/Fulton/SharedFultonSystem.cs b/Content.Shared/Salvage/Fulton/SharedFultonSystem.cs index ef83b15953..ea3322b176 100644 --- a/Content.Shared/Salvage/Fulton/SharedFultonSystem.cs +++ b/Content.Shared/Salvage/Fulton/SharedFultonSystem.cs @@ -118,12 +118,12 @@ public abstract partial class SharedFultonSystem : EntitySystem { component.Beacon = args.Target.Value; Audio.PlayPredicted(beacon.LinkSound, uid, args.User); - _popup.PopupClient(Loc.GetString("fulton-linked"), uid, args.User); + _popup.PopupEntity(Loc.GetString("fulton-linked"), uid, args.User); } else { component.Beacon = EntityUid.Invalid; - _popup.PopupClient(Loc.GetString("fulton-folded"), uid, args.User); + _popup.PopupEntity(Loc.GetString("fulton-folded"), uid, args.User); } return; @@ -131,19 +131,19 @@ public abstract partial class SharedFultonSystem : EntitySystem if (Deleted(component.Beacon)) { - _popup.PopupClient(Loc.GetString("fulton-not-found"), uid, args.User); + _popup.PopupEntity(Loc.GetString("fulton-not-found"), uid, args.User); return; } if (!CanApplyFulton(args.Target.Value, component)) { - _popup.PopupClient(Loc.GetString("fulton-invalid"), uid, uid); + _popup.PopupEntity(Loc.GetString("fulton-invalid"), uid, uid); return; } if (HasComp(args.Target)) { - _popup.PopupClient(Loc.GetString("fulton-fultoned"), uid, uid); + _popup.PopupEntity(Loc.GetString("fulton-fultoned"), uid, uid); return; } diff --git a/Content.Shared/Security/Systems/SharedGenpopSystem.cs b/Content.Shared/Security/Systems/SharedGenpopSystem.cs index 1d4d0bb8dc..099caae50f 100644 --- a/Content.Shared/Security/Systems/SharedGenpopSystem.cs +++ b/Content.Shared/Security/Systems/SharedGenpopSystem.cs @@ -81,7 +81,7 @@ public abstract partial class SharedGenpopSystem : EntitySystem if (!_accessReader.IsAllowed(user, ent)) { - _popup.PopupClient(Loc.GetString("lock-comp-has-user-access-fail"), user); + _popup.PopupEntity(Loc.GetString("lock-comp-has-user-access-fail"), user, user); return; } @@ -106,7 +106,7 @@ public abstract partial class SharedGenpopSystem : EntitySystem if (!_accessReader.FindPotentialAccessItems(args.User).Contains(ent.Comp.LinkedId.Value)) { if (!args.Silent) - _popup.PopupClient(Loc.GetString("lock-comp-has-user-access-fail"), ent, args.User); + _popup.PopupEntity(Loc.GetString("lock-comp-has-user-access-fail"), ent, args.User); args.Cancelled = true; return; } @@ -115,7 +115,7 @@ public abstract partial class SharedGenpopSystem : EntitySystem !expireIdCard.Expired) { if (!args.Silent) - _popup.PopupClient(Loc.GetString("genpop-prisoner-id-popup-not-served"), ent, args.User); + _popup.PopupEntity(Loc.GetString("genpop-prisoner-id-popup-not-served"), ent, args.User); args.Cancelled = true; } } diff --git a/Content.Shared/SelectableComponentAdder/SelectableComponentAdderSystem.cs b/Content.Shared/SelectableComponentAdder/SelectableComponentAdderSystem.cs index 8c933dce5d..a097cb0d26 100644 --- a/Content.Shared/SelectableComponentAdder/SelectableComponentAdderSystem.cs +++ b/Content.Shared/SelectableComponentAdder/SelectableComponentAdderSystem.cs @@ -39,7 +39,7 @@ public sealed partial class SelectableComponentAdderSystem : EntitySystem if (entry.Popup == null) return; var message = Loc.GetString(entry.Popup.Value, ("target", target)); - _popup.PopupClient(message, target, user); + _popup.PopupEntity(message, target, user); }, Text = Loc.GetString(entry.VerbName), }; diff --git a/Content.Shared/Sericulture/SericultureSystem.cs b/Content.Shared/Sericulture/SericultureSystem.cs index 83426367ad..8bb96792fd 100644 --- a/Content.Shared/Sericulture/SericultureSystem.cs +++ b/Content.Shared/Sericulture/SericultureSystem.cs @@ -76,7 +76,7 @@ public abstract partial class SharedSericultureSystem : EntitySystem _hungerSystem.GetHunger(hungerComp) - comp.HungerCost, hungerComp)) { - _popupSystem.PopupClient(Loc.GetString(comp.PopupText), uid, uid); + _popupSystem.PopupEntity(Loc.GetString(comp.PopupText), uid, uid); return; } @@ -104,7 +104,7 @@ public abstract partial class SharedSericultureSystem : EntitySystem _hungerSystem.GetHunger(hungerComp) - comp.HungerCost, hungerComp)) { - _popupSystem.PopupClient(Loc.GetString(comp.PopupText), uid, uid); + _popupSystem.PopupEntity(Loc.GetString(comp.PopupText), uid, uid); return; } diff --git a/Content.Shared/Shuttles/Systems/SharedEmergencyShuttleSystem.cs b/Content.Shared/Shuttles/Systems/SharedEmergencyShuttleSystem.cs index 9665186f43..794f4d8ae3 100644 --- a/Content.Shared/Shuttles/Systems/SharedEmergencyShuttleSystem.cs +++ b/Content.Shared/Shuttles/Systems/SharedEmergencyShuttleSystem.cs @@ -31,6 +31,6 @@ public abstract partial class SharedEmergencyShuttleSystem : EntitySystem args.Cancel(); if (!args.Silent) - Popup.PopupClient(Loc.GetString("emergency-shuttle-console-no-early-launches"), ent, args.User); + Popup.PopupEntity(Loc.GetString("emergency-shuttle-console-no-early-launches"), ent, args.User); } } diff --git a/Content.Shared/Silicons/Borgs/SharedBorgSystem.API.cs b/Content.Shared/Silicons/Borgs/SharedBorgSystem.API.cs index 6b9dae32a9..5597a3e6e5 100644 --- a/Content.Shared/Silicons/Borgs/SharedBorgSystem.API.cs +++ b/Content.Shared/Silicons/Borgs/SharedBorgSystem.API.cs @@ -210,13 +210,13 @@ public abstract partial class SharedBorgSystem if (chassis.Comp.ModuleContainer.ContainedEntities.Count >= chassis.Comp.MaxModules) { - _popup.PopupClient(Loc.GetString("borg-module-too-many"), chassis.Owner, user); + _popup.PopupEntity(Loc.GetString("borg-module-too-many"), chassis.Owner, user); return false; } if (_whitelist.IsWhitelistFail(chassis.Comp.ModuleWhitelist, module)) { - _popup.PopupClient(Loc.GetString("borg-module-whitelist-deny"), chassis.Owner, user); + _popup.PopupEntity(Loc.GetString("borg-module-whitelist-deny"), chassis.Owner, user); return false; } @@ -230,7 +230,7 @@ public abstract partial class SharedBorgSystem if (containedItemModuleComp.Hands.Count == itemModuleComp.Hands.Count && containedItemModuleComp.Hands.All(itemModuleComp.Hands.Contains)) { - _popup.PopupClient(Loc.GetString("borg-module-duplicate"), chassis.Owner, user); + _popup.PopupEntity(Loc.GetString("borg-module-duplicate"), chassis.Owner, user); return false; } } @@ -242,7 +242,7 @@ public abstract partial class SharedBorgSystem if (attemptEv.Cancelled) { - _popup.PopupClient(attemptEv.Reason, chassis.Owner, user); + _popup.PopupEntity(attemptEv.Reason, chassis.Owner, user); return false; } diff --git a/Content.Shared/Silicons/Borgs/SharedBorgSystem.cs b/Content.Shared/Silicons/Borgs/SharedBorgSystem.cs index b6c4c2e701..c89ed23987 100644 --- a/Content.Shared/Silicons/Borgs/SharedBorgSystem.cs +++ b/Content.Shared/Silicons/Borgs/SharedBorgSystem.cs @@ -224,7 +224,7 @@ public abstract partial class SharedBorgSystem : EntitySystem { if (brain != null || module != null) { - _popup.PopupClient(Loc.GetString("borg-panel-not-open"), chassis, args.User); + _popup.PopupEntity(Loc.GetString("borg-panel-not-open"), chassis, args.User); } return; } @@ -234,7 +234,6 @@ public abstract partial class SharedBorgSystem : EntitySystem { if (TryComp(used, out var actor) && !CanPlayerBeBorged(actor.PlayerSession)) { - // Don't use PopupClient because CanPlayerBeBorged is not predicted. _popup.PopupEntity(Loc.GetString("borg-player-not-allowed"), used, args.User); return; } @@ -327,7 +326,6 @@ public abstract partial class SharedBorgSystem : EntitySystem if (!CanPlayerBeBorged(session)) { - // Don't use PopupClient because MindAddedMessage and CanPlayerBeBorged are not predicted. _popup.PopupEntity(Loc.GetString("borg-player-not-allowed-eject"), brain); _container.RemoveEntity(borg, brain); _throwing.TryThrow(brain, _random.NextVector2() * 5, 5f); diff --git a/Content.Shared/Silicons/Bots/MedibotSystem.cs b/Content.Shared/Silicons/Bots/MedibotSystem.cs index e23190c92b..043373e2c7 100644 --- a/Content.Shared/Silicons/Bots/MedibotSystem.cs +++ b/Content.Shared/Silicons/Bots/MedibotSystem.cs @@ -95,7 +95,7 @@ public sealed partial class MedibotSystem : EntitySystem if (HasComp(target)) { - _popup.PopupClient(Loc.GetString("medibot-recently-injected"), medibot, medibot); + _popup.PopupEntity(Loc.GetString("medibot-recently-injected"), medibot, medibot); return false; } @@ -105,14 +105,14 @@ public sealed partial class MedibotSystem : EntitySystem if (mobState.CurrentState != MobState.Alive && mobState.CurrentState != MobState.Critical) { - _popup.PopupClient(Loc.GetString("medibot-target-dead"), medibot, medibot); + _popup.PopupEntity(Loc.GetString("medibot-target-dead"), medibot, medibot); return false; } var total = _damageable.GetTotalDamage((target, damageable)); if (total == 0 && !HasComp(medibot)) { - _popup.PopupClient(Loc.GetString("medibot-target-healthy"), medibot, medibot); + _popup.PopupEntity(Loc.GetString("medibot-target-healthy"), medibot, medibot); return false; } @@ -137,7 +137,7 @@ public sealed partial class MedibotSystem : EntitySystem _solutionContainer.TryAddReagent(injectable.Value, treatment.Reagent, treatment.Quantity, out _); _popup.PopupEntity(Loc.GetString("injector-component-feel-prick-message"), target, target); - _popup.PopupClient(Loc.GetString("medibot-target-injected"), medibot, medibot); + _popup.PopupEntity(Loc.GetString("medibot-target-injected"), medibot, medibot); _audio.PlayPredicted(medibot.Comp.InjectSound, medibot, medibot); diff --git a/Content.Shared/Silicons/Laws/SharedSiliconLawSystem.cs b/Content.Shared/Silicons/Laws/SharedSiliconLawSystem.cs index 69babd4d69..83b2b029cf 100644 --- a/Content.Shared/Silicons/Laws/SharedSiliconLawSystem.cs +++ b/Content.Shared/Silicons/Laws/SharedSiliconLawSystem.cs @@ -46,7 +46,7 @@ public abstract partial class SharedSiliconLawSystem : EntitySystem // prevent self-emagging if (uid == args.UserUid) { - _popup.PopupClient(Loc.GetString("law-emag-cannot-emag-self"), uid, args.UserUid); + _popup.PopupEntity(Loc.GetString("law-emag-cannot-emag-self"), uid, args.UserUid); return; } @@ -54,7 +54,7 @@ public abstract partial class SharedSiliconLawSystem : EntitySystem TryComp(uid, out var panel) && !panel.Open) { - _popup.PopupClient(Loc.GetString("law-emag-require-panel"), uid, args.UserUid); + _popup.PopupEntity(Loc.GetString("law-emag-require-panel"), uid, args.UserUid); return; } diff --git a/Content.Shared/Silicons/StationAi/SharedStationAiSystem.Held.cs b/Content.Shared/Silicons/StationAi/SharedStationAiSystem.Held.cs index d966376c25..13ec05762a 100644 --- a/Content.Shared/Silicons/StationAi/SharedStationAiSystem.Held.cs +++ b/Content.Shared/Silicons/StationAi/SharedStationAiSystem.Held.cs @@ -195,12 +195,12 @@ public abstract partial class SharedStationAiSystem private void ShowDeviceNotRespondingPopup(EntityUid toEntity) { - _popup.PopupClient(Loc.GetString("ai-device-not-responding"), toEntity, PopupType.MediumCaution); + _popup.PopupEntity(Loc.GetString("ai-device-not-responding"), toEntity, toEntity, PopupType.MediumCaution); } private void ShowDeviceNoAccessPopup(EntityUid toEntity) { - _popup.PopupClient(Loc.GetString("ai-device-no-access"), toEntity, PopupType.MediumCaution); + _popup.PopupEntity(Loc.GetString("ai-device-no-access"), toEntity, toEntity, PopupType.MediumCaution); } } diff --git a/Content.Shared/Silicons/StationAi/SharedStationAiSystem.cs b/Content.Shared/Silicons/StationAi/SharedStationAiSystem.cs index 4cfb9dd7bf..171d4b9939 100644 --- a/Content.Shared/Silicons/StationAi/SharedStationAiSystem.cs +++ b/Content.Shared/Silicons/StationAi/SharedStationAiSystem.cs @@ -278,13 +278,13 @@ public abstract partial class SharedStationAiSystem : EntitySystem if (cardHasAi && coreHasAi) { - _popup.PopupClient(Loc.GetString("intellicard-core-occupied"), args.User, args.User, PopupType.Medium); + _popup.PopupEntity(Loc.GetString("intellicard-core-occupied"), args.User, args.User, PopupType.Medium); args.Handled = true; return; } if (!cardHasAi && !coreHasAi) { - _popup.PopupClient(Loc.GetString("intellicard-core-empty"), args.User, args.User, PopupType.Medium); + _popup.PopupEntity(Loc.GetString("intellicard-core-empty"), args.User, args.User, PopupType.Medium); args.Handled = true; return; } diff --git a/Content.Shared/Singularity/EntitySystems/SharedEmitterSystem.cs b/Content.Shared/Singularity/EntitySystems/SharedEmitterSystem.cs index 1b9450a9c6..97ceae6b82 100644 --- a/Content.Shared/Singularity/EntitySystems/SharedEmitterSystem.cs +++ b/Content.Shared/Singularity/EntitySystems/SharedEmitterSystem.cs @@ -47,7 +47,7 @@ public abstract partial class SharedEmitterSystem : EntitySystem { ent.Comp.BoltType = type; Dirty(ent); - _popup.PopupClient(Loc.GetString("emitter-component-type-set", ("type", proto.Name)), ent.Owner); + _popup.PopupEntity(Loc.GetString("emitter-component-type-set", ("type", proto.Name)), ent.Owner, ent.Owner); }, }; args.Verbs.Add(v); diff --git a/Content.Shared/SmartFridge/SharedSmartFridgeSystem.cs b/Content.Shared/SmartFridge/SharedSmartFridgeSystem.cs index bce5b70869..bcbe37db54 100644 --- a/Content.Shared/SmartFridge/SharedSmartFridgeSystem.cs +++ b/Content.Shared/SmartFridge/SharedSmartFridgeSystem.cs @@ -118,8 +118,8 @@ public abstract partial class SharedSmartFridgeSystem : EntitySystem if (_accessReader.IsAllowed(user, machine)) return true; - _popup.PopupPredicted(Loc.GetString("smart-fridge-component-try-eject-access-denied"), machine, user); _audio.PlayPredicted(machine.Comp.SoundDeny, machine, user); + _popup.PopupEntity(Loc.GetString("smart-fridge-component-try-eject-access-denied"), machine, user); return false; } @@ -131,7 +131,7 @@ public abstract partial class SharedSmartFridgeSystem : EntitySystem if (!ent.Comp.ContainedEntries.TryGetValue(args.Entry, out var contained)) { _audio.PlayPredicted(ent.Comp.SoundDeny, ent, args.Actor); - _popup.PopupPredicted(Loc.GetString("smart-fridge-component-try-eject-unknown-entry"), ent, args.Actor); + _popup.PopupEntity(Loc.GetString("smart-fridge-component-try-eject-unknown-entry"), ent, args.Actor); return; } @@ -148,7 +148,7 @@ public abstract partial class SharedSmartFridgeSystem : EntitySystem } _audio.PlayPredicted(ent.Comp.SoundDeny, ent, args.Actor); - _popup.PopupPredicted(Loc.GetString("smart-fridge-component-try-eject-out-of-stock"), ent, args.Actor); + _popup.PopupEntity(Loc.GetString("smart-fridge-component-try-eject-out-of-stock"), ent, args.Actor); } private void OnGetAltVerb(Entity ent, ref GetVerbsEvent args) diff --git a/Content.Shared/Species/Systems/GibActionSystem.cs b/Content.Shared/Species/Systems/GibActionSystem.cs index e5da0d57a2..4be02f0382 100644 --- a/Content.Shared/Species/Systems/GibActionSystem.cs +++ b/Content.Shared/Species/Systems/GibActionSystem.cs @@ -49,7 +49,7 @@ public sealed partial class GibActionSystem : EntitySystem private void OnGibAction(EntityUid uid, GibActionComponent comp, GibActionEvent args) { // When they use the action, gib them. - _popupSystem.PopupClient(Loc.GetString(comp.PopupText, ("name", uid)), uid, uid); + _popupSystem.PopupEntity(Loc.GetString(comp.PopupText, ("name", uid)), uid, uid); _gibbing.Gib(uid, user: args.Performer); } diff --git a/Content.Shared/Species/Systems/ReformSystem.cs b/Content.Shared/Species/Systems/ReformSystem.cs index 726ad189e2..4d5c9acfb7 100644 --- a/Content.Shared/Species/Systems/ReformSystem.cs +++ b/Content.Shared/Species/Systems/ReformSystem.cs @@ -62,7 +62,7 @@ public sealed partial class ReformSystem : EntitySystem // Stun them when they use the action for the amount of reform time. if (comp.ShouldStun) _stunSystem.TryUpdateStunDuration(uid, TimeSpan.FromSeconds(comp.ReformTime)); - _popupSystem.PopupClient(Loc.GetString(comp.PopupText, ("name", uid)), uid, uid); + _popupSystem.PopupEntity(Loc.GetString(comp.PopupText, ("name", uid)), uid, uid); // Create a doafter & start it var doAfter = new DoAfterArgs(EntityManager, uid, comp.ReformTime, new ReformDoAfterEvent(), uid) diff --git a/Content.Shared/SprayPainter/SharedSprayPainterSystem.cs b/Content.Shared/SprayPainter/SharedSprayPainterSystem.cs index a83559d21a..6d90235735 100644 --- a/Content.Shared/SprayPainter/SharedSprayPainterSystem.cs +++ b/Content.Shared/SprayPainter/SharedSprayPainterSystem.cs @@ -190,14 +190,14 @@ public abstract partial class SharedSprayPainterSystem : EntitySystem && Charges.GetCurrentCharges((args.Used, charges)) < targetGroup.Cost) { var msg = Loc.GetString("spray-painter-interact-no-charges"); - _popup.PopupClient(msg, args.User, args.User); + _popup.PopupEntity(msg, args.User, args.User); return; } if (!targetGroup.Styles.TryGetValue(selectedStyle, out var proto)) { var msg = Loc.GetString("spray-painter-style-not-available"); - _popup.PopupClient(msg, args.User, args.User); + _popup.PopupEntity(msg, args.User, args.User); return; } diff --git a/Content.Shared/SprayPainter/SprayPainterAmmoSystem.cs b/Content.Shared/SprayPainter/SprayPainterAmmoSystem.cs index 0d1e4b249c..ae6ea814bb 100644 --- a/Content.Shared/SprayPainter/SprayPainterAmmoSystem.cs +++ b/Content.Shared/SprayPainter/SprayPainterAmmoSystem.cs @@ -38,11 +38,11 @@ public sealed partial class SprayPainterAmmoSystem : EntitySystem var count = Math.Min(charges.MaxCharges - charges.LastCharges, ent.Comp.Charges); if (count <= 0) { - _popup.PopupClient(Loc.GetString("spray-painter-ammo-after-interact-full"), target, user); + _popup.PopupEntity(Loc.GetString("spray-painter-ammo-after-interact-full"), target, user); return; } - _popup.PopupClient(Loc.GetString("spray-painter-ammo-after-interact-refilled"), target, user); + _popup.PopupEntity(Loc.GetString("spray-painter-ammo-after-interact-refilled"), target, user); _charges.AddCharges(target, count); ent.Comp.Charges -= count; Dirty(ent, ent.Comp); diff --git a/Content.Shared/Stacks/SharedStackSystem.cs b/Content.Shared/Stacks/SharedStackSystem.cs index 374a0ed139..86d8667d62 100644 --- a/Content.Shared/Stacks/SharedStackSystem.cs +++ b/Content.Shared/Stacks/SharedStackSystem.cs @@ -84,11 +84,11 @@ public abstract partial class SharedStackSystem : EntitySystem switch (transferred) { case > 0: - Popup.PopupClient($"+{transferred}", popupPos, args.User); + Popup.PopupCoordinates($"+{transferred}", popupPos, args.User); if (GetAvailableSpace(recipientStack) == 0) { - Popup.PopupClient(Loc.GetString("comp-stack-becomes-full"), + Popup.PopupCoordinates(Loc.GetString("comp-stack-becomes-full"), popupPos.Offset(new Vector2(0, -0.5f)), args.User); } @@ -96,7 +96,7 @@ public abstract partial class SharedStackSystem : EntitySystem break; case 0 when GetAvailableSpace(recipientStack) == 0: - Popup.PopupClient(Loc.GetString("comp-stack-already-full"), popupPos, args.User); + Popup.PopupCoordinates(Loc.GetString("comp-stack-already-full"), popupPos, args.User); break; } diff --git a/Content.Shared/Sticky/Systems/StickySystem.cs b/Content.Shared/Sticky/Systems/StickySystem.cs index 9428a3b045..ba8d7639a9 100644 --- a/Content.Shared/Sticky/Systems/StickySystem.cs +++ b/Content.Shared/Sticky/Systems/StickySystem.cs @@ -87,7 +87,7 @@ public sealed partial class StickySystem : EntitySystem if (comp.StickPopupStart != null) { var msg = Loc.GetString(comp.StickPopupStart); - _popup.PopupClient(msg, user, user); + _popup.PopupEntity(msg, user, user); } // start sticking object to target @@ -137,7 +137,7 @@ public sealed partial class StickySystem : EntitySystem if (comp.UnstickPopupStart != null) { var msg = Loc.GetString(comp.UnstickPopupStart); - _popup.PopupClient(msg, user, user); + _popup.PopupEntity(msg, user, user); } // start unsticking object @@ -166,7 +166,7 @@ public sealed partial class StickySystem : EntitySystem if (comp.StickPopupSuccess != null) { var msg = Loc.GetString(comp.StickPopupSuccess); - _popup.PopupClient(msg, user, user); + _popup.PopupEntity(msg, user, user); } // send information to appearance that entity is stuck @@ -208,7 +208,7 @@ public sealed partial class StickySystem : EntitySystem if (comp.UnstickPopupSuccess != null) { var msg = Loc.GetString(comp.UnstickPopupSuccess); - _popup.PopupClient(msg, user, user); + _popup.PopupEntity(msg, user, user); } comp.StuckTo = null; diff --git a/Content.Shared/Storage/EntitySystems/SecretStashSystem.cs b/Content.Shared/Storage/EntitySystems/SecretStashSystem.cs index 0df6ed80e9..f5c4091a85 100644 --- a/Content.Shared/Storage/EntitySystems/SecretStashSystem.cs +++ b/Content.Shared/Storage/EntitySystems/SecretStashSystem.cs @@ -101,7 +101,7 @@ public sealed partial class SecretStashSystem : EntitySystem if (HasItemInside(entity)) { var popup = Loc.GetString("comp-secret-stash-action-hide-container-not-empty"); - _popupSystem.PopupClient(popup, entity, userUid); + _popupSystem.PopupEntity(popup, entity, userUid); return false; } @@ -111,7 +111,7 @@ public sealed partial class SecretStashSystem : EntitySystem { var msg = Loc.GetString("comp-secret-stash-action-hide-item-too-big", ("item", itemToHideUid), ("stashname", GetStashName(entity))); - _popupSystem.PopupClient(msg, entity, userUid); + _popupSystem.PopupEntity(msg, entity, userUid); return false; } @@ -122,7 +122,7 @@ public sealed partial class SecretStashSystem : EntitySystem // all done, show success message var successMsg = Loc.GetString("comp-secret-stash-action-hide-success", ("item", itemToHideUid), ("stashname", GetStashName(entity))); - _popupSystem.PopupClient(successMsg, entity, userUid); + _popupSystem.PopupEntity(successMsg, entity, userUid); return true; } @@ -148,7 +148,7 @@ public sealed partial class SecretStashSystem : EntitySystem // show success message var successMsg = Loc.GetString("comp-secret-stash-action-get-item-found-something", ("stashname", GetStashName(entity))); - _popupSystem.PopupClient(successMsg, entity, userUid); + _popupSystem.PopupEntity(successMsg, entity, userUid); return true; } @@ -234,7 +234,7 @@ public sealed partial class SecretStashSystem : EntitySystem if (storedInside != null && storedInside.Count >= 1) { var popup = Loc.GetString("comp-secret-stash-on-destroyed-popup", ("stashname", GetStashName(entity))); - _popupSystem.PopupPredicted(popup, storedInside[0], null, PopupType.MediumCaution); + _popupSystem.PopupEntity(popup, storedInside[0], PopupType.MediumCaution); } } diff --git a/Content.Shared/Storage/EntitySystems/SharedEntityStorageSystem.cs b/Content.Shared/Storage/EntitySystems/SharedEntityStorageSystem.cs index fd95be7473..bd1cea39c2 100644 --- a/Content.Shared/Storage/EntitySystems/SharedEntityStorageSystem.cs +++ b/Content.Shared/Storage/EntitySystems/SharedEntityStorageSystem.cs @@ -422,7 +422,7 @@ public abstract partial class SharedEntityStorageSystem : EntitySystem if (_weldable.IsWelded(target)) { if (!silent && !component.Contents.Contains(user)) - Popup.PopupClient(Loc.GetString("entity-storage-component-welded-shut-message"), target, user); + Popup.PopupEntity(Loc.GetString("entity-storage-component-welded-shut-message"), target, user); return false; } diff --git a/Content.Shared/Storage/EntitySystems/SharedStorageSystem.cs b/Content.Shared/Storage/EntitySystems/SharedStorageSystem.cs index 3af0c381e6..772f205e4a 100644 --- a/Content.Shared/Storage/EntitySystems/SharedStorageSystem.cs +++ b/Content.Shared/Storage/EntitySystems/SharedStorageSystem.cs @@ -1256,13 +1256,13 @@ public abstract partial class SharedStorageSystem : EntitySystem if (!CanInsert(ent, toInsert.Value, out var reason, ent.Comp)) { - _popupSystem.PopupClient(Loc.GetString(reason ?? "comp-storage-cant-insert"), ent, player); + _popupSystem.PopupEntity(Loc.GetString(reason ?? "comp-storage-cant-insert"), ent, player); return false; } if (!_sharedHandsSystem.CanDrop(player, toInsert.Value)) { - _popupSystem.PopupClient(Loc.GetString("comp-storage-cant-drop", ("entity", toInsert.Value)), ent, player); + _popupSystem.PopupEntity(Loc.GetString("comp-storage-cant-drop", ("entity", toInsert.Value)), ent, player); return false; } @@ -1284,7 +1284,7 @@ public abstract partial class SharedStorageSystem : EntitySystem if (!Insert(uid, toInsert, out _, user: player, uid.Comp, playSound: playSound)) { - _popupSystem.PopupClient(Loc.GetString("comp-storage-cant-insert"), uid, player); + _popupSystem.PopupEntity(Loc.GetString("comp-storage-cant-insert"), uid, player); return false; } return true; diff --git a/Content.Shared/Strip/SharedStrippableSystem.cs b/Content.Shared/Strip/SharedStrippableSystem.cs index b44e9a52a2..b7da60883d 100644 --- a/Content.Shared/Strip/SharedStrippableSystem.cs +++ b/Content.Shared/Strip/SharedStrippableSystem.cs @@ -204,12 +204,13 @@ public abstract partial class SharedStrippableSystem : EntitySystem if (!stealth) { - _popupSystem.PopupEntity(Loc.GetString("strippable-component-alert-owner-insert", - ("user", Identity.Entity(user, EntityManager)), - ("item", _handsSystem.GetActiveItem((user, user.Comp))!.Value)), - target, - target, - PopupType.Large); + _popupSystem.PopupEntity( + Loc.GetString("strippable-component-alert-owner-insert", + ("user", Identity.Entity(user, EntityManager)), + ("item", _handsSystem.GetActiveItem((user, user.Comp))!.Value)), + target, + target, + PopupType.Large); } var prefix = stealth ? "stealthily " : ""; @@ -300,16 +301,23 @@ public abstract partial class SharedStrippableSystem : EntitySystem if (!stealth) { if (IsStripHidden(slotDef, user)) - _popupSystem.PopupEntity(Loc.GetString("strippable-component-alert-owner-hidden", ("slot", slot)), target, target, PopupType.Large); + { + _popupSystem.PopupEntity( + Loc.GetString("strippable-component-alert-owner-hidden", + ("slot", slot)), + target, + target, + PopupType.Large); + } else { - _popupSystem.PopupEntity(Loc.GetString("strippable-component-alert-owner", - ("user", Identity.Entity(user, EntityManager)), - ("item", item)), - target, - target, - PopupType.Large); - + _popupSystem.PopupEntity( + Loc.GetString("strippable-component-alert-owner", + ("user", Identity.Entity(user, EntityManager)), + ("item", item)), + target, + target, + PopupType.Large); } } @@ -410,13 +418,13 @@ public abstract partial class SharedStrippableSystem : EntitySystem if (!stealth) { - _popupSystem.PopupEntity(Loc.GetString("strippable-component-alert-owner-insert-hand", - ("user", Identity.Entity(user, EntityManager)), - ("item", _handsSystem.GetActiveItem(user)!.Value)), - target, - target, - PopupType.Large); - + _popupSystem.PopupEntity( + Loc.GetString("strippable-component-alert-owner-insert-hand", + ("user", Identity.Entity(user, EntityManager)), + ("item", _handsSystem.GetActiveItem(user)!.Value)), + target, + target, + PopupType.Large); } var prefix = stealth ? "stealthily " : ""; @@ -520,11 +528,12 @@ public abstract partial class SharedStrippableSystem : EntitySystem if (!stealth) { - _popupSystem.PopupEntity(Loc.GetString("strippable-component-alert-owner", - ("user", Identity.Entity(user, EntityManager)), - ("item", item)), - target, - target); + _popupSystem.PopupEntity( + Loc.GetString("strippable-component-alert-owner", + ("user", Identity.Entity(user, EntityManager)), + ("item", item)), + target, + target); } var prefix = stealth ? "stealthily " : ""; diff --git a/Content.Shared/Stunnable/SharedStunSystem.Knockdown.cs b/Content.Shared/Stunnable/SharedStunSystem.Knockdown.cs index d53d106054..952e3d631f 100644 --- a/Content.Shared/Stunnable/SharedStunSystem.Knockdown.cs +++ b/Content.Shared/Stunnable/SharedStunSystem.Knockdown.cs @@ -344,7 +344,7 @@ public abstract partial class SharedStunSystem if (ev.Message != null) { - _popup.PopupClient(ev.Message.Value.Item1, entity, entity, ev.Message.Value.Item2); + _popup.PopupEntity(ev.Message.Value.Item1, entity, entity, ev.Message.Value.Item2); } return !ev.Cancelled; @@ -374,7 +374,7 @@ public abstract partial class SharedStunSystem if (!IntersectingStandingColliders(entity.Owner)) return false; - _popup.PopupClient(Loc.GetString("knockdown-component-stand-no-room"), entity, entity, PopupType.SmallCaution); + _popup.PopupEntity(Loc.GetString("knockdown-component-stand-no-room"), entity, entity, PopupType.SmallCaution); SetAutoStand(entity.Owner); return true; @@ -436,11 +436,11 @@ public abstract partial class SharedStunSystem if (!Stamina.TryTakeStamina(entity, ev.Stamina, entity.Comp, visual: true)) { - _popup.PopupClient(Loc.GetString("knockdown-component-pushup-failure"), entity, entity, PopupType.MediumCaution); + _popup.PopupEntity(Loc.GetString("knockdown-component-pushup-failure"), entity, entity, PopupType.MediumCaution); return false; } - _popup.PopupClient(Loc.GetString("knockdown-component-pushup-success"), entity, entity); + _popup.PopupEntity(Loc.GetString("knockdown-component-pushup-success"), entity, entity); _audio.PlayPredicted(entity.Comp.ForceStandSuccessSound, entity.Owner, entity.Owner, AudioParams.Default.WithVariation(0.025f).WithVolume(5f)); return true; diff --git a/Content.Shared/SubFloor/SharedSubFloorHideSystem.cs b/Content.Shared/SubFloor/SharedSubFloorHideSystem.cs index 7a9d57fd0d..43c81e37fd 100644 --- a/Content.Shared/SubFloor/SharedSubFloorHideSystem.cs +++ b/Content.Shared/SubFloor/SharedSubFloorHideSystem.cs @@ -52,7 +52,7 @@ namespace Content.Shared.SubFloor if (TryComp(xform.GridUid, out var grid) && HasFloorCover(xform.GridUid.Value, grid, Map.TileIndicesFor(xform.GridUid.Value, grid, xform.Coordinates))) { - _popup.PopupClient(Loc.GetString("subfloor-anchor-failure", ("entity", uid)), args.User); + _popup.PopupEntity(Loc.GetString("subfloor-anchor-failure", ("entity", uid)), args.User, args.User); args.Cancel(); } } @@ -63,7 +63,7 @@ namespace Content.Shared.SubFloor // despite being partially under the floor. if (component.IsUnderCover) { - _popup.PopupClient(Loc.GetString("subfloor-unanchor-failure", ("entity", uid)), args.User); + _popup.PopupEntity(Loc.GetString("subfloor-unanchor-failure", ("entity", uid)), args.User, args.User); args.Cancel(); } } diff --git a/Content.Shared/Tabletop/SharedTabletopSystem.cs b/Content.Shared/Tabletop/SharedTabletopSystem.cs index 786ce3a34e..751d8c10ba 100644 --- a/Content.Shared/Tabletop/SharedTabletopSystem.cs +++ b/Content.Shared/Tabletop/SharedTabletopSystem.cs @@ -101,7 +101,7 @@ public abstract partial class SharedTabletopSystem : EntitySystem EnsureComp(hologram); session.Entities.Add(hologram); - _popup.PopupClient(Loc.GetString("tabletop-added-piece"), ent.Owner, args.User); + _popup.PopupEntity(Loc.GetString("tabletop-added-piece"), ent.Owner, args.User); } /// diff --git a/Content.Shared/Teleportation/Systems/SwapTeleporterSystem.cs b/Content.Shared/Teleportation/Systems/SwapTeleporterSystem.cs index c35d7bbf37..423ecf2c74 100644 --- a/Content.Shared/Teleportation/Systems/SwapTeleporterSystem.cs +++ b/Content.Shared/Teleportation/Systems/SwapTeleporterSystem.cs @@ -59,13 +59,13 @@ public sealed partial class SwapTeleporterSystem : EntitySystem if (comp.LinkedEnt != null) { - _popup.PopupClient(Loc.GetString("swap-teleporter-popup-link-fail-already"), uid, args.User); + _popup.PopupEntity(Loc.GetString("swap-teleporter-popup-link-fail-already"), uid, args.User); return; } if (targetComp.LinkedEnt != null) { - _popup.PopupClient(Loc.GetString("swap-teleporter-popup-link-fail-already-other"), uid, args.User); + _popup.PopupEntity(Loc.GetString("swap-teleporter-popup-link-fail-already-other"), uid, args.User); return; } @@ -75,7 +75,7 @@ public sealed partial class SwapTeleporterSystem : EntitySystem Dirty(target, targetComp); _appearance.SetData(uid, SwapTeleporterVisuals.Linked, true); _appearance.SetData(target, SwapTeleporterVisuals.Linked, true); - _popup.PopupClient(Loc.GetString("swap-teleporter-popup-link-create"), uid, args.User); + _popup.PopupEntity(Loc.GetString("swap-teleporter-popup-link-create"), uid, args.User); } private void OnGetAltVerb(Entity ent, ref GetVerbsEvent args) @@ -111,7 +111,7 @@ public sealed partial class SwapTeleporterSystem : EntitySystem if (comp.LinkedEnt == null) { - _popup.PopupClient(Loc.GetString("swap-teleporter-popup-teleport-cancel-link"), ent, user); + _popup.PopupEntity(Loc.GetString("swap-teleporter-popup-teleport-cancel-link"), ent, user); return; } @@ -124,7 +124,7 @@ public sealed partial class SwapTeleporterSystem : EntitySystem if (_timing.CurTime < comp.NextTeleportUse) { - _popup.PopupClient(Loc.GetString("swap-teleporter-popup-teleport-cancel-time"), ent, user); + _popup.PopupEntity(Loc.GetString("swap-teleporter-popup-teleport-cancel-time"), ent, user); return; } @@ -162,7 +162,7 @@ public sealed partial class SwapTeleporterSystem : EntitySystem return; } - _popup.PopupClient(Loc.GetString("swap-teleporter-popup-teleport-other", + _popup.PopupEntity(Loc.GetString("swap-teleporter-popup-teleport-other", ("entity", Identity.Entity(linkedEnt, EntityManager))), teleEnt, otherTeleEnt, @@ -205,7 +205,7 @@ public sealed partial class SwapTeleporterSystem : EntitySystem Dirty(ent, ent.Comp); if (user != null) - _popup.PopupClient(Loc.GetString("swap-teleporter-popup-link-destroyed"), ent, user.Value); + _popup.PopupEntity(Loc.GetString("swap-teleporter-popup-link-destroyed"), ent, user.Value); else _popup.PopupEntity(Loc.GetString("swap-teleporter-popup-link-destroyed"), ent); diff --git a/Content.Shared/Temperature/Systems/SharedEntityHeaterSystem.cs b/Content.Shared/Temperature/Systems/SharedEntityHeaterSystem.cs index 524877e9ef..9a8dc57d4b 100644 --- a/Content.Shared/Temperature/Systems/SharedEntityHeaterSystem.cs +++ b/Content.Shared/Temperature/Systems/SharedEntityHeaterSystem.cs @@ -69,7 +69,7 @@ public abstract partial class SharedEntityHeaterSystem : EntitySystem // Still allow changing the setting without power ent.Comp.Setting = setting; _audio.PlayPredicted(ent.Comp.SettingSound, ent, user); - _popup.PopupClient(Loc.GetString("entity-heater-switched-setting", ("setting", setting)), ent, user); + _popup.PopupEntity(Loc.GetString("entity-heater-switched-setting", ("setting", setting)), ent, user); Dirty(ent); // Only show the glowing heating element layer if there's power diff --git a/Content.Shared/Thief/Systems/ThiefBeaconSystem.cs b/Content.Shared/Thief/Systems/ThiefBeaconSystem.cs index d73b42c476..2245905a05 100644 --- a/Content.Shared/Thief/Systems/ThiefBeaconSystem.cs +++ b/Content.Shared/Thief/Systems/ThiefBeaconSystem.cs @@ -84,7 +84,7 @@ public sealed partial class ThiefBeaconSystem : EntitySystem return; _audio.PlayPredicted(beacon.Comp.LinkSound, beacon, user); - _popup.PopupClient(Loc.GetString("thief-fulton-set"), beacon, user); + _popup.PopupEntity(Loc.GetString("thief-fulton-set"), beacon, user); area.Owners.Clear(); // We only reconfigure the beacon for ourselves, we don't need multiple thieves to steal from the same beacon. area.Owners.Add(mind); area.OwnerCount = area.Owners.Count; @@ -100,7 +100,7 @@ public sealed partial class ThiefBeaconSystem : EntitySystem return; _audio.PlayPredicted(beacon.Comp.UnlinkSound, beacon, user); - _popup.PopupClient(Loc.GetString("thief-fulton-clear"), beacon, user); + _popup.PopupEntity(Loc.GetString("thief-fulton-clear"), beacon, user); area.Owners.Clear(); area.OwnerCount = area.Owners.Count; Dirty(beacon.Owner, area); diff --git a/Content.Shared/Throwing/CatchableSystem.cs b/Content.Shared/Throwing/CatchableSystem.cs index d4fa1d697a..36bafb62ef 100644 --- a/Content.Shared/Throwing/CatchableSystem.cs +++ b/Content.Shared/Throwing/CatchableSystem.cs @@ -65,15 +65,14 @@ public sealed partial class CatchableSystem : EntitySystem // otherwise it will raise the events for that later while still in your hand _thrown.StopThrow(ent.Owner, args.Component); - // Collisions don't work properly with PopupPredicted or PlayPredicted. + // Collisions don't work properly with PlayPredicted. // So we make this server only. if (_net.IsClient) return; var selfMessage = Loc.GetString("catchable-component-success-self", ("item", ent.Owner), ("catcher", Identity.Entity(args.Target, EntityManager))); var othersMessage = Loc.GetString("catchable-component-success-others", ("item", ent.Owner), ("catcher", Identity.Entity(args.Target, EntityManager))); - _popup.PopupEntity(selfMessage, args.Target, args.Target); - _popup.PopupEntity(othersMessage, args.Target, Filter.PvsExcept(args.Target), true); + _popup.PopupEntity(selfMessage, othersMessage, args.Target, args.Target); _audio.PlayPvs(ent.Comp.CatchSuccessSound, args.Target); } } diff --git a/Content.Shared/Tiles/FloorTileSystem.cs b/Content.Shared/Tiles/FloorTileSystem.cs index f5460ba9c9..afcea19a8a 100644 --- a/Content.Shared/Tiles/FloorTileSystem.cs +++ b/Content.Shared/Tiles/FloorTileSystem.cs @@ -137,7 +137,7 @@ public sealed partial class FloorTileSystem : EntitySystem if (!CanPlaceTile(gridUid, mapGrid, tile.GridIndices, out var reason)) { - _popup.PopupClient(reason, args.User, args.User); + _popup.PopupEntity(reason, args.User, args.User); return; } diff --git a/Content.Shared/Tools/Systems/SharedToolSystem.Welder.cs b/Content.Shared/Tools/Systems/SharedToolSystem.Welder.cs index 37c1f4a788..d23581f20c 100644 --- a/Content.Shared/Tools/Systems/SharedToolSystem.Welder.cs +++ b/Content.Shared/Tools/Systems/SharedToolSystem.Welder.cs @@ -122,15 +122,15 @@ public abstract partial class SharedToolSystem var drained = SolutionContainerSystem.Drain(target, targetSoln.Value, trans); SolutionContainerSystem.TryAddSolution(solution.Value, drained); _audioSystem.PlayPredicted(entity.Comp.WelderRefill, entity, user: args.User); - _popup.PopupClient(Loc.GetString("welder-component-after-interact-refueled-message"), entity, args.User); + _popup.PopupEntity(Loc.GetString("welder-component-after-interact-refueled-message"), entity, args.User); } else if (welderSolution.AvailableVolume <= 0) { - _popup.PopupClient(Loc.GetString("welder-component-already-full", ("owner", entity.Owner)), entity, args.User); + _popup.PopupEntity(Loc.GetString("welder-component-already-full", ("owner", entity.Owner)), entity, args.User); } else { - _popup.PopupClient(Loc.GetString("welder-component-no-fuel-in-tank", ("target", args.Target)), entity, args.User); + _popup.PopupEntity(Loc.GetString("welder-component-no-fuel-in-tank", ("target", args.Target)), entity, args.User); } args.Handled = true; @@ -141,7 +141,7 @@ public abstract partial class SharedToolSystem { if (!ItemToggle.IsActivated(entity.Owner)) { - _popup.PopupClient(Loc.GetString("welder-component-welder-not-lit-message", ("owner", entity.Owner)), entity, user); + _popup.PopupEntity(Loc.GetString("welder-component-welder-not-lit-message", ("owner", entity.Owner)), entity, user); ev.Cancel(); } @@ -149,7 +149,7 @@ public abstract partial class SharedToolSystem if (requiredFuel > currentFuel) { - _popup.PopupClient(Loc.GetString("welder-component-cannot-weld-message", ("owner", entity.Owner)), entity, user); + _popup.PopupEntity(Loc.GetString("welder-component-cannot-weld-message", ("owner", entity.Owner)), entity, user); ev.Cancel(); } } diff --git a/Content.Shared/Tools/Systems/ToolRefinableSystem.cs b/Content.Shared/Tools/Systems/ToolRefinableSystem.cs index c23803e6b6..3f64f9c1fc 100644 --- a/Content.Shared/Tools/Systems/ToolRefinableSystem.cs +++ b/Content.Shared/Tools/Systems/ToolRefinableSystem.cs @@ -56,7 +56,7 @@ public sealed partial class ToolRefinablSystem : EntitySystem RaiseLocalEvent(args.Target, ref attemptEvent); if (attemptEvent.IsCancelled) { - _popup.PopupPredicted(attemptEvent.BlockCause, args.User, args.User); + _popup.PopupEntity(attemptEvent.BlockCause, args.User, args.User); return; } @@ -131,7 +131,7 @@ public sealed partial class ToolRefinablSystem : EntitySystem RaiseLocalEvent(args.Target.Value, ref getIsBlocked); if (getIsBlocked.IsCancelled) { - _popup.PopupPredicted(getIsBlocked.BlockCause, args.User, args.User); + _popup.PopupEntity(getIsBlocked.BlockCause, args.User, args.User); return; } @@ -218,7 +218,7 @@ public sealed partial class ToolRefinablSystem : EntitySystem ? null : Loc.GetString(component.PopupForOther, ("user", user), ("target", uid), ("tool", used)); - _popup.PopupPredicted(slicingDoneMessageForUser, slicingDoneMessageForOthers, user, user, component.PopupType); + _popup.PopupEntity(slicingDoneMessageForUser, slicingDoneMessageForOthers, user, user, component.PopupType); } /// diff --git a/Content.Shared/Trigger/Systems/DnaScrambleOnTriggerSystem.cs b/Content.Shared/Trigger/Systems/DnaScrambleOnTriggerSystem.cs index acf4c1127a..8c149dd143 100644 --- a/Content.Shared/Trigger/Systems/DnaScrambleOnTriggerSystem.cs +++ b/Content.Shared/Trigger/Systems/DnaScrambleOnTriggerSystem.cs @@ -44,7 +44,6 @@ public sealed partial class DnaScrambleOnTriggerSystem : XOnTriggerSystem(target); // remove MRP+ custom description if one exists _identity.QueueIdentityUpdate(target); // manually queue identity update since we don't raise the event - // Can't use PopupClient or PopupPredicted because the trigger might be unpredicted. _popup.PopupEntity(Loc.GetString("scramble-on-trigger-popup"), target, target); var ev = new DnaScrambledEvent(target); diff --git a/Content.Shared/Trigger/Systems/PopupOnTriggerSystem.cs b/Content.Shared/Trigger/Systems/PopupOnTriggerSystem.cs index 798f2662a1..f7da71fbad 100644 --- a/Content.Shared/Trigger/Systems/PopupOnTriggerSystem.cs +++ b/Content.Shared/Trigger/Systems/PopupOnTriggerSystem.cs @@ -20,7 +20,7 @@ public sealed partial class PopupOnTriggerSystem : XOnTriggerSystem ent, EntityUid user) { var msg = ent.Comp.Enabled ? ent.Comp.ToggleOff : ent.Comp.ToggleOn; - _popup.PopupPredicted(Loc.GetString(msg), ent.Owner, user); + _popup.PopupEntity(Loc.GetString(msg), ent.Owner, user); ent.Comp.Enabled = !ent.Comp.Enabled; Dirty(ent); } diff --git a/Content.Shared/Trigger/Systems/TriggerSystem.Timer.cs b/Content.Shared/Trigger/Systems/TriggerSystem.Timer.cs index 39b7864316..b114b35cc8 100644 --- a/Content.Shared/Trigger/Systems/TriggerSystem.Timer.cs +++ b/Content.Shared/Trigger/Systems/TriggerSystem.Timer.cs @@ -100,7 +100,7 @@ public sealed partial class TriggerSystem { ent.Comp.Delay = option; Dirty(ent); - _popup.PopupClient(Loc.GetString("timer-trigger-popup-set", ("time", option.TotalSeconds)), user, user); + _popup.PopupEntity(Loc.GetString("timer-trigger-popup-set", ("time", option.TotalSeconds)), user, user); } }); } @@ -125,7 +125,7 @@ public sealed partial class TriggerSystem if (ent.Comp.DelayOptions[^1] <= ent.Comp.Delay) { ent.Comp.Delay = ent.Comp.DelayOptions[0]; - _popup.PopupClient(Loc.GetString("timer-trigger-popup-set", ("time", ent.Comp.Delay)), ent.Owner, user); + _popup.PopupEntity(Loc.GetString("timer-trigger-popup-set", ("time", ent.Comp.Delay)), ent.Owner, user); return; } @@ -134,7 +134,7 @@ public sealed partial class TriggerSystem if (option > ent.Comp.Delay) { ent.Comp.Delay = option; - _popup.PopupClient(Loc.GetString("timer-trigger-popup-set", ("time", option)), ent.Owner, user); + _popup.PopupEntity(Loc.GetString("timer-trigger-popup-set", ("time", option)), ent.Owner, user); return; } } diff --git a/Content.Shared/Trigger/Systems/TriggerSystem.Voice.cs b/Content.Shared/Trigger/Systems/TriggerSystem.Voice.cs index a312b6aa28..74daebb7e2 100644 --- a/Content.Shared/Trigger/Systems/TriggerSystem.Voice.cs +++ b/Content.Shared/Trigger/Systems/TriggerSystem.Voice.cs @@ -148,7 +148,7 @@ public sealed partial class TriggerSystem else _adminLogger.Add(LogType.Trigger, LogImpact.Low, $"A voice-trigger on {ToPrettyString(ent):entity} has started recording. User: {ToPrettyString(user.Value):user}"); - _popup.PopupPredicted(Loc.GetString("trigger-on-voice-start-recording"), ent, user); + _popup.PopupEntity(Loc.GetString("trigger-on-voice-start-recording"), ent); } /// @@ -161,7 +161,7 @@ public sealed partial class TriggerSystem if (string.IsNullOrWhiteSpace(ent.Comp.KeyPhrase)) RemComp(ent); - _popup.PopupPredicted(Loc.GetString("trigger-on-voice-stop-recording"), ent, user); + _popup.PopupEntity(Loc.GetString("trigger-on-voice-stop-recording"), ent); } @@ -207,6 +207,6 @@ public sealed partial class TriggerSystem _adminLogger.Add(LogType.Trigger, LogImpact.Low, $"A voice-trigger on {ToPrettyString(ent):entity} has been reset to default keyphrase: '{ent.Comp.KeyPhrase}'. User: {ToPrettyString(user):speaker}"); - _popup.PopupPredicted(Loc.GetString("trigger-on-voice-set-default", ("keyphrase", ent.Comp.KeyPhrase)), ent, user); + _popup.PopupEntity(Loc.GetString("trigger-on-voice-set-default", ("keyphrase", ent.Comp.KeyPhrase)), ent); } } diff --git a/Content.Shared/Trigger/Systems/TriggerSystem.cs b/Content.Shared/Trigger/Systems/TriggerSystem.cs index 36e12b6774..ae6caa99cb 100644 --- a/Content.Shared/Trigger/Systems/TriggerSystem.cs +++ b/Content.Shared/Trigger/Systems/TriggerSystem.cs @@ -108,7 +108,7 @@ public sealed partial class TriggerSystem : EntitySystem } if (ent.Comp.Popup != null) - _popup.PopupPredicted(Loc.GetString(ent.Comp.Popup.Value, ("device", ent.Owner)), ent.Owner, user); + _popup.PopupEntity(Loc.GetString(ent.Comp.Popup.Value, ("device", ent.Owner)), ent.Owner, user); AddComp(ent); var curTime = _timing.CurTime; diff --git a/Content.Shared/TurretController/SharedDeployableTurretControllerSystem.cs b/Content.Shared/TurretController/SharedDeployableTurretControllerSystem.cs index 6df0e5dc18..a04d8481d0 100644 --- a/Content.Shared/TurretController/SharedDeployableTurretControllerSystem.cs +++ b/Content.Shared/TurretController/SharedDeployableTurretControllerSystem.cs @@ -88,7 +88,7 @@ public abstract partial class SharedDeployableTurretControllerSystem : EntitySys if (_accessreader.IsAllowed(user, ent)) return true; - _popup.PopupClient(Loc.GetString("turret-controls-access-denied"), ent, user); + _popup.PopupEntity(Loc.GetString("turret-controls-access-denied"), ent, user); _audio.PlayPredicted(ent.Comp.AccessDeniedSound, ent, user); return false; diff --git a/Content.Shared/Turrets/SharedDeployableTurretSystem.cs b/Content.Shared/Turrets/SharedDeployableTurretSystem.cs index 0bc0b79b5b..3ed6790d1a 100644 --- a/Content.Shared/Turrets/SharedDeployableTurretSystem.cs +++ b/Content.Shared/Turrets/SharedDeployableTurretSystem.cs @@ -66,7 +66,7 @@ public abstract partial class SharedDeployableTurretSystem : EntitySystem if (!_accessReader.IsAllowed(args.User, ent)) { - _popup.PopupClient(Loc.GetString("deployable-turret-component-access-denied"), ent, args.User); + _popup.PopupEntity(Loc.GetString("deployable-turret-component-access-denied"), ent, args.User); _audio.PlayPredicted(ent.Comp.AccessDeniedSound, ent, args.User); return; @@ -80,7 +80,7 @@ public abstract partial class SharedDeployableTurretSystem : EntitySystem if (!ent.Comp.Enabled || args.Cancelled) return; - _popup.PopupClient(Loc.GetString("deployable-turret-component-cannot-access-wires"), ent, args.User); + _popup.PopupEntity(Loc.GetString("deployable-turret-component-cannot-access-wires"), ent, args.User); args.Cancelled = true; } @@ -95,7 +95,7 @@ public abstract partial class SharedDeployableTurretSystem : EntitySystem if (enabled && ent.Comp.CurrentState == DeployableTurretState.Broken) { if (user != null) - _popup.PopupClient(Loc.GetString("deployable-turret-component-is-broken"), ent, user.Value); + _popup.PopupEntity(Loc.GetString("deployable-turret-component-is-broken"), ent, user.Value); return false; } @@ -103,7 +103,7 @@ public abstract partial class SharedDeployableTurretSystem : EntitySystem if (enabled && !HasAmmo(ent)) { if (user != null) - _popup.PopupClient(Loc.GetString("deployable-turret-component-no-ammo"), ent, user.Value); + _popup.PopupEntity(Loc.GetString("deployable-turret-component-no-ammo"), ent, user.Value); return false; } @@ -150,7 +150,7 @@ public abstract partial class SharedDeployableTurretSystem : EntitySystem // Play pop up message var msg = enabled ? "deployable-turret-component-activating" : "deployable-turret-component-deactivating"; - _popup.PopupClient(Loc.GetString(msg), ent, user); + _popup.PopupEntity(Loc.GetString(msg), ent, user); // Update enabled state ent.Comp.Enabled = enabled; diff --git a/Content.Shared/UserInterface/ActivatableUIRequiresAnchorSystem.cs b/Content.Shared/UserInterface/ActivatableUIRequiresAnchorSystem.cs index 258afc491d..3e0fdb989c 100644 --- a/Content.Shared/UserInterface/ActivatableUIRequiresAnchorSystem.cs +++ b/Content.Shared/UserInterface/ActivatableUIRequiresAnchorSystem.cs @@ -37,7 +37,7 @@ public sealed partial class ActivatableUIRequiresAnchorSystem : EntitySystem if (ent.Comp.Popup != null && !args.Silent) { - _popup.PopupClient(Loc.GetString(ent.Comp.Popup), args.User); + _popup.PopupEntity(Loc.GetString(ent.Comp.Popup), args.User, args.User); } args.Cancel(); diff --git a/Content.Shared/UserInterface/ActivatableUISystem.cs b/Content.Shared/UserInterface/ActivatableUISystem.cs index c6697fa70e..c03d7dc7b2 100644 --- a/Content.Shared/UserInterface/ActivatableUISystem.cs +++ b/Content.Shared/UserInterface/ActivatableUISystem.cs @@ -218,7 +218,7 @@ public sealed partial class ActivatableUISystem : EntitySystem if (aui.SingleUser && aui.CurrentSingleUser != null && user != aui.CurrentSingleUser) { var message = Loc.GetString("machine-already-in-use", ("machine", uiEntity)); - _popupSystem.PopupClient(message, uiEntity, user); + _popupSystem.PopupEntity(message, uiEntity, user); if (_uiSystem.IsUiOpen(uiEntity, aui.Key)) return true; diff --git a/Content.Shared/VendingMachines/SharedVendingMachineSystem.Restock.cs b/Content.Shared/VendingMachines/SharedVendingMachineSystem.Restock.cs index 8c62fadfd2..9b3a1bc29d 100644 --- a/Content.Shared/VendingMachines/SharedVendingMachineSystem.Restock.cs +++ b/Content.Shared/VendingMachines/SharedVendingMachineSystem.Restock.cs @@ -16,7 +16,7 @@ public abstract partial class SharedVendingMachineSystem { if (!TryComp(target, out var panel) || !panel.Open) { - Popup.PopupPredictedCursor(Loc.GetString("vending-machine-restock-needs-panel-open", + Popup.PopupCursor(Loc.GetString("vending-machine-restock-needs-panel-open", ("this", uid), ("user", user), ("target", target)), @@ -36,7 +36,7 @@ public abstract partial class SharedVendingMachineSystem { if (!component.CanRestock.Contains(machineComponent.PackPrototypeId)) { - Popup.PopupPredictedCursor(Loc.GetString("vending-machine-restock-invalid-inventory", ("this", uid), ("user", user), + Popup.PopupCursor(Loc.GetString("vending-machine-restock-invalid-inventory", ("this", uid), ("user", user), ("target", target)), user); return false; @@ -92,7 +92,7 @@ public abstract partial class SharedVendingMachineSystem var othersMessage = Loc.GetString("vending-machine-restock-start-others", ("user", Identity.Entity(args.User, EntityManager)), ("target", target)); - Popup.PopupPredicted(selfMessage, othersMessage, target, args.User, PopupType.Medium); + Popup.PopupEntity(selfMessage, othersMessage, target, args.User, PopupType.Medium); if (!Timing.IsFirstTimePredicted) @@ -127,7 +127,7 @@ public abstract partial class SharedVendingMachineSystem var othersMessage = Loc.GetString("vending-machine-restock-done-others", ("user", Identity.Entity(args.User, EntityManager)), ("target", ent)); - Popup.PopupPredicted(userMessage, othersMessage, ent, args.User, PopupType.Medium); + Popup.PopupEntity(userMessage, othersMessage, ent, args.User, PopupType.Medium); Audio.PlayPredicted(restockComponent.SoundRestockDone, ent, args.User); diff --git a/Content.Shared/VendingMachines/SharedVendingMachineSystem.cs b/Content.Shared/VendingMachines/SharedVendingMachineSystem.cs index 8dec4bcc4c..55211a675a 100644 --- a/Content.Shared/VendingMachines/SharedVendingMachineSystem.cs +++ b/Content.Shared/VendingMachines/SharedVendingMachineSystem.cs @@ -179,7 +179,7 @@ public abstract partial class SharedVendingMachineSystem : EntitySystem if (_accessReader.IsAllowed(sender, uid, accessReader) || HasComp(uid)) return true; - Popup.PopupClient(Loc.GetString("vending-machine-component-try-eject-access-denied"), uid, sender); + Popup.PopupEntity(Loc.GetString("vending-machine-component-try-eject-access-denied"), uid, sender); Deny((uid, vendComponent), sender); return false; } @@ -221,14 +221,14 @@ public abstract partial class SharedVendingMachineSystem : EntitySystem if (string.IsNullOrEmpty(entry?.ID)) { - Popup.PopupClient(Loc.GetString("vending-machine-component-try-eject-invalid-item"), uid); + Popup.PopupEntity(Loc.GetString("vending-machine-component-try-eject-invalid-item"), uid, uid); Deny((uid, vendComponent)); return; } if (entry.Amount <= 0) { - Popup.PopupClient(Loc.GetString("vending-machine-component-try-eject-out-of-stock"), uid); + Popup.PopupEntity(Loc.GetString("vending-machine-component-try-eject-out-of-stock"), uid, uid); Deny((uid, vendComponent)); return; } diff --git a/Content.Shared/Weapons/Melee/SharedMeleeWeaponSystem.cs b/Content.Shared/Weapons/Melee/SharedMeleeWeaponSystem.cs index 861260ec54..24fe9c4570 100644 --- a/Content.Shared/Weapons/Melee/SharedMeleeWeaponSystem.cs +++ b/Content.Shared/Weapons/Melee/SharedMeleeWeaponSystem.cs @@ -439,7 +439,7 @@ public abstract partial class SharedMeleeWeaponSystem : EntitySystem { if (ev.Message != null) { - PopupSystem.PopupClient(ev.Message, weaponUid, user); + PopupSystem.PopupEntity(ev.Message, weaponUid, user); } return false; @@ -875,7 +875,7 @@ public abstract partial class SharedMeleeWeaponSystem : EntitySystem { // Notify disarmable if (HasComp(target.Value)) - PopupSystem.PopupClient(Loc.GetString("disarm-action-disarmable", ("targetName", target.Value)), target.Value); + PopupSystem.PopupEntity(Loc.GetString("disarm-action-disarmable", ("targetName", target.Value)), target.Value, target.Value); return false; } diff --git a/Content.Shared/Weapons/Ranged/Systems/BatteryWeaponFireModesSystem.cs b/Content.Shared/Weapons/Ranged/Systems/BatteryWeaponFireModesSystem.cs index f989a1a881..e2681926b2 100644 --- a/Content.Shared/Weapons/Ranged/Systems/BatteryWeaponFireModesSystem.cs +++ b/Content.Shared/Weapons/Ranged/Systems/BatteryWeaponFireModesSystem.cs @@ -121,7 +121,7 @@ public sealed partial class BatteryWeaponFireModesSystem : EntitySystem _appearanceSystem.SetData(ent, BatteryWeaponFireModeVisuals.State, prototype.ID, appearance); if (user != null) - _popupSystem.PopupClient(Loc.GetString("gun-set-fire-mode-popup", ("mode", prototype.Name)), ent, user.Value); + _popupSystem.PopupEntity(Loc.GetString("gun-set-fire-mode-popup", ("mode", prototype.Name)), ent, user.Value); } if (TryComp(ent, out BatteryAmmoProviderComponent? batteryAmmoProviderComponent)) diff --git a/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.ChamberMagazine.cs b/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.ChamberMagazine.cs index a75af8947d..9d9db15dc4 100644 --- a/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.ChamberMagazine.cs +++ b/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.ChamberMagazine.cs @@ -159,7 +159,7 @@ public abstract partial class SharedGunSystem CycleCartridge(uid, component, user, appearance); if (user != null) - PopupSystem.PopupClient(Loc.GetString("gun-chamber-bolt-closed"), uid, user.Value); + PopupSystem.PopupEntity(Loc.GetString("gun-chamber-bolt-closed"), uid, user.Value); if (slots != null) { @@ -189,7 +189,7 @@ public abstract partial class SharedGunSystem } if (user != null) - PopupSystem.PopupClient(Loc.GetString("gun-chamber-bolt-opened"), uid, user.Value); + PopupSystem.PopupEntity(Loc.GetString("gun-chamber-bolt-opened"), uid, user.Value); if (slots != null) { diff --git a/Content.Shared/Weapons/Ranged/Upgrades/GunUpgradeSystem.cs b/Content.Shared/Weapons/Ranged/Upgrades/GunUpgradeSystem.cs index bf9f8eb7ba..0ea2d60e61 100644 --- a/Content.Shared/Weapons/Ranged/Upgrades/GunUpgradeSystem.cs +++ b/Content.Shared/Weapons/Ranged/Upgrades/GunUpgradeSystem.cs @@ -71,7 +71,7 @@ public sealed partial class GunUpgradeSystem : EntitySystem if (GetCurrentUpgrades(ent).Count >= ent.Comp.MaxUpgradeCount) { - _popup.PopupPredicted(Loc.GetString("upgradeable-gun-popup-upgrade-limit"), ent, args.User); + _popup.PopupEntity(Loc.GetString("upgradeable-gun-popup-upgrade-limit"), ent, args.User); return; } @@ -80,13 +80,13 @@ public sealed partial class GunUpgradeSystem : EntitySystem if (GetCurrentUpgradeTags(ent).ToHashSet().IsSupersetOf(upgradeComponent.Tags)) { - _popup.PopupPredicted(Loc.GetString("upgradeable-gun-popup-already-present"), ent, args.User); + _popup.PopupEntity(Loc.GetString("upgradeable-gun-popup-already-present"), ent, args.User); return; } args.Handled = _container.Insert(args.Used, _container.GetContainer(ent, ent.Comp.UpgradesContainerId)); _audio.PlayPredicted(ent.Comp.InsertSound, ent, args.User); - _popup.PopupClient(Loc.GetString("gun-upgrade-popup-insert", ("upgrade", args.Used),("gun", ent.Owner)), args.User); + _popup.PopupEntity(Loc.GetString("gun-upgrade-popup-insert", ("upgrade", args.Used),("gun", ent.Owner)), args.User, args.User); _gun.RefreshModifiers(ent.Owner); _adminLog.Add(LogType.Action, LogImpact.Low, $"{ToPrettyString(args.User):player} inserted gun upgrade {ToPrettyString(args.Used)} into {ToPrettyString(ent.Owner)}."); diff --git a/Content.Shared/Wieldable/SharedWieldableSystem.cs b/Content.Shared/Wieldable/SharedWieldableSystem.cs index 570073bd44..0b96934e40 100644 --- a/Content.Shared/Wieldable/SharedWieldableSystem.cs +++ b/Content.Shared/Wieldable/SharedWieldableSystem.cs @@ -94,7 +94,7 @@ public abstract partial class SharedWieldableSystem : EntitySystem { component.LastPopup = time; var message = Loc.GetString("wieldable-component-requires", ("item", uid)); - _popup.PopupClient(message, args.Used, args.User); + _popup.PopupEntity(message, args.Used, args.User); } } } @@ -252,7 +252,7 @@ public abstract partial class SharedWieldableSystem : EntitySystem if (!TryComp(user, out var hands)) { if (!quiet) - _popup.PopupClient(Loc.GetString("wieldable-component-no-hands"), user, user); + _popup.PopupEntity(Loc.GetString("wieldable-component-no-hands"), user, user); return false; } @@ -260,7 +260,7 @@ public abstract partial class SharedWieldableSystem : EntitySystem if (!_hands.IsHolding((user, hands), wieldable, out _)) { if (!quiet) - _popup.PopupClient(Loc.GetString("wieldable-component-not-in-hands", ("item", wieldable.Owner)), user, user); + _popup.PopupEntity(Loc.GetString("wieldable-component-not-in-hands", ("item", wieldable.Owner)), user, user); return false; } @@ -270,7 +270,7 @@ public abstract partial class SharedWieldableSystem : EntitySystem { var message = Loc.GetString("wieldable-component-not-enough-free-hands", ("number", wieldable.Comp.FreeHandsRequired), ("item", wieldable.Owner)); - _popup.PopupClient(message, user, user); + _popup.PopupEntity(message, user, user); } return false; } @@ -303,7 +303,7 @@ public abstract partial class SharedWieldableSystem : EntitySystem if (attemptEv.Cancelled) { if (attemptEv.Message != null) - _popup.PopupClient(attemptEv.Message, user, user); + _popup.PopupEntity(attemptEv.Message, user, user); return false; } @@ -339,7 +339,7 @@ public abstract partial class SharedWieldableSystem : EntitySystem var selfMessage = Loc.GetString("wieldable-component-successful-wield", ("item", wieldable.Owner)); var othersMessage = Loc.GetString("wieldable-component-successful-wield-other", ("user", Identity.Entity(user, EntityManager)), ("item", wieldable.Owner)); - _popup.PopupPredicted(selfMessage, othersMessage, user, user); + _popup.PopupEntity(selfMessage, othersMessage, user, user); var ev = new ItemWieldedEvent(user); RaiseLocalEvent(wieldable.Owner, ref ev); @@ -367,7 +367,7 @@ public abstract partial class SharedWieldableSystem : EntitySystem if (attemptEv.Cancelled) { if (attemptEv.Message != null) - _popup.PopupClient(attemptEv.Message, user, user); + _popup.PopupEntity(attemptEv.Message, user, user); return false; } } @@ -416,7 +416,7 @@ public abstract partial class SharedWieldableSystem : EntitySystem var selfMessage = Loc.GetString("wieldable-component-failed-wield", ("item", uid)); var othersMessage = Loc.GetString("wieldable-component-failed-wield-other", ("user", Identity.Entity(args.User, EntityManager)), ("item", uid)); - _popup.PopupPredicted(selfMessage, othersMessage, user, user); + _popup.PopupEntity(selfMessage, othersMessage, user, user); } } diff --git a/Content.Shared/Xenoarchaeology/Artifact/SharedXenoArtifactSystem.XAE.cs b/Content.Shared/Xenoarchaeology/Artifact/SharedXenoArtifactSystem.XAE.cs index 2d968a0142..a44c889a8b 100644 --- a/Content.Shared/Xenoarchaeology/Artifact/SharedXenoArtifactSystem.XAE.cs +++ b/Content.Shared/Xenoarchaeology/Artifact/SharedXenoArtifactSystem.XAE.cs @@ -76,7 +76,7 @@ public abstract partial class SharedXenoArtifactSystem if (!success) { - _popup.PopupClient(Loc.GetString("artifact-activation-fail"), artifact, user); + _popup.PopupEntity(Loc.GetString("artifact-activation-fail"), artifact, user); return false; } diff --git a/Content.Shared/Xenoarchaeology/Artifact/XAE/XAERandomTeleportInvokerSystem.cs b/Content.Shared/Xenoarchaeology/Artifact/XAE/XAERandomTeleportInvokerSystem.cs index a5a61a9a1a..43325d7636 100644 --- a/Content.Shared/Xenoarchaeology/Artifact/XAE/XAERandomTeleportInvokerSystem.cs +++ b/Content.Shared/Xenoarchaeology/Artifact/XAE/XAERandomTeleportInvokerSystem.cs @@ -25,7 +25,7 @@ public sealed partial class XAERandomTeleportInvokerSystem : BaseXAESystem Date: Thu, 16 Jul 2026 21:55:17 +0000 Subject: [PATCH 040/108] smoother doafter animation (#44701) smoother doafter anim --- Content.Client/DoAfter/DoAfterOverlay.cs | 30 +++++++++++++++++++----- 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/Content.Client/DoAfter/DoAfterOverlay.cs b/Content.Client/DoAfter/DoAfterOverlay.cs index 761584e06e..7d546fae0e 100644 --- a/Content.Client/DoAfter/DoAfterOverlay.cs +++ b/Content.Client/DoAfter/DoAfterOverlay.cs @@ -37,6 +37,15 @@ public sealed class DoAfterOverlay : Overlay private const float StartX = 2; private const float EndX = 22f; + // Time after which the doafter will lerp to max alpha. + private static readonly TimeSpan MaxAlphaTime = TimeSpan.FromSeconds(0.3f); + + // After finishing, how long it takes to fade out to 0 alpha + private static readonly TimeSpan FadeoutAlphaTime = TimeSpan.FromSeconds(0.2f); + + // Time after which the doafter will lerp to its final y offset. + private static readonly TimeSpan MaxYPosTime = TimeSpan.FromSeconds(0.5f); + public override OverlaySpace Space => OverlaySpace.WorldSpaceBelowFOV; public DoAfterOverlay(IEntityManager entManager, IPrototypeManager protoManager, IGameTiming timing, IPlayerManager player) @@ -110,19 +119,29 @@ public sealed class DoAfterOverlay : Overlay foreach (var doAfter in comp.DoAfters.Values) { // Hide some DoAfters from other players for stealthy actions (ie: thieving gloves) - var alpha = 1f; + var maxAlpha = 1f; if (doAfter.Args.Hidden || isInContainer) { if (uid != localEnt) continue; // Hints to the local player that this do-after is not visible to other players. - alpha = 0.5f; + maxAlpha = 0.5f; } + var elapsed = time - doAfter.StartTime; + + var alpha = MathHelper.Lerp(0f, maxAlpha, (float)Math.Clamp(elapsed / MaxAlphaTime, 0.0, 1.0)); + // fade out if doafter finished + if (elapsed >= doAfter.Args.Delay) + alpha = MathHelper.Lerp(maxAlpha, 0f, (float)Math.Clamp((elapsed - doAfter.Args.Delay) / FadeoutAlphaTime, 0.0, 1.0)); + // Use the sprite itself if we know its bounds. This means short or tall sprites don't get overlapped // by the bar. - var yOffset = _sprite.GetLocalBounds((uid, sprite)).Height / 2f + 0.05f; + var spriteBounds = _sprite.GetLocalBounds((uid, sprite)); + var yFinished = spriteBounds.Height / 2f + 0.05f; + var yStart = yFinished / 6f; + var yOffset = MathHelper.Lerp(yStart, yFinished, Easings.OutSine((float)Math.Clamp(elapsed / MaxYPosTime, 0.0, 1.0))); // Position above the entity (we've already applied the matrix transform to the entity itself) // Offset by the texture size for every do_after we have. @@ -130,7 +149,7 @@ public sealed class DoAfterOverlay : Overlay yOffset / scale + offset / EyeManager.PixelsPerMeter * scale); // Draw the underlying bar texture - handle.DrawTexture(_barTexture, position); + handle.DrawTexture(_barTexture, position, Color.White.WithAlpha(alpha)); Color color; float elapsedRatio; @@ -138,7 +157,7 @@ public sealed class DoAfterOverlay : Overlay // if we're cancelled then flick red / off. if (doAfter.CancelledTime != null) { - var elapsed = doAfter.CancelledTime.Value - doAfter.StartTime; + elapsed = doAfter.CancelledTime.Value - doAfter.StartTime; elapsedRatio = (float)Math.Min(1, elapsed.TotalSeconds / doAfter.Args.Delay.TotalSeconds); var cancelElapsed = (time - doAfter.CancelledTime.Value).TotalSeconds; var flash = Math.Floor(cancelElapsed / FlashTime) % 2 == 0; @@ -146,7 +165,6 @@ public sealed class DoAfterOverlay : Overlay } else { - var elapsed = time - doAfter.StartTime; elapsedRatio = (float)Math.Min(1, elapsed.TotalSeconds / doAfter.Args.Delay.TotalSeconds); color = GetProgressColor(elapsedRatio, alpha); } From 4d0c40f358620b1e0aa842efcea23524567fcc4d Mon Sep 17 00:00:00 2001 From: Rouden <149893554+Roudenn@users.noreply.github.com> Date: Fri, 17 Jul 2026 06:36:39 +0300 Subject: [PATCH 041/108] Predict StationRecords (#40240) * Make StationRecords YAML savable * Update SharedStationRecordsSystem.cs * Predict Station Records * Attribute subs, query Resolve & DirtyFields * Cleanup, prediction fixes, locale fixes * Update GeneralRecordsUi.cs Remove GeneralStationRecordConsoleState and obsolete SelectStationRecord --- .../StationRecords/GeneralRecord.xaml.cs | 2 +- ...lStationRecordConsoleBoundUserInterface.cs | 59 ++- .../GeneralStationRecordConsoleSystem.cs | 28 ++ .../GeneralStationRecordConsoleWindow.xaml.cs | 30 +- .../StationRecords/StationRecordsSystem.cs | 7 - .../Access/Systems/IdCardConsoleSystem.cs | 5 +- .../Administration/Systems/AdminSystem.cs | 3 +- .../Bed/Cryostorage/CryostorageSystem.cs | 33 +- .../CrewManifest/CrewManifestSystem.cs | 12 +- .../Systems/CriminalRecordsConsoleSystem.cs | 10 +- .../Systems/CriminalRecordsHackerSystem.cs | 2 +- .../Systems/CriminalRecordsSystem.cs | 9 +- .../Delivery/DeliverySystem.Spawning.cs | 2 +- Content.Server/Delivery/DeliverySystem.cs | 2 +- .../GameTicking/Rules/NukeopsRuleSystem.cs | 2 +- Content.Server/Silicons/Laws/IonLawSystem.cs | 5 +- .../StationEvents/Events/ClericalErrorRule.cs | 5 +- .../GeneralStationRecordConsoleSystem.cs | 5 + .../GeneralStationRecordConsoleSystem.cs | 99 ---- .../Systems/StationRecordsSystem.cs | 438 ------------------ .../Access/Systems/AccessReaderSystem.cs | 4 +- .../CriminalRecords/CriminalRecord.cs | 5 +- .../SharedCriminalRecordsConsoleSystem.cs | 6 +- Content.Shared/Security/SecurityStatus.cs | 5 +- .../GeneralStationRecordConsoleComponent.cs | 9 +- .../StationRecordKeyStorageComponent.cs | 2 +- .../Components/StationRecordsComponent.cs | 15 + .../Events/GeneralRecordCreatedEvent.cs | 27 ++ .../Events/IStationRecordEvent.cs | 11 + .../Events/RecordModifiedEvent.cs | 12 + .../Events/RecordRemovedEvent.cs | 13 + .../StationRecords/GeneralRecordsUi.cs | 54 +-- .../StationRecords/GeneralStationRecord.cs | 2 +- .../SharedStationRecordsSystem.cs | 101 ---- .../StationRecords/StationRecord.cs | 7 + .../StationRecordKeyStorageSystem.cs | 81 ---- .../StationRecords/StationRecordSet.cs | 29 +- .../StationRecords/StationRecordsComponent.cs | 12 - .../StationRecords/StationRecordsFilter.cs | 4 +- ...SharedGeneralStationRecordConsoleSystem.cs | 46 ++ .../Systems/StationRecordKeyStorageSystem.cs | 65 +++ .../Systems/StationRecordsSystem.API.cs | 203 ++++++++ .../Systems/StationRecordsSystem.Helpers.cs | 62 +++ .../Systems/StationRecordsSystem.cs | 229 +++++++++ SpaceStation14.slnx.DotSettings | 1 + 45 files changed, 869 insertions(+), 894 deletions(-) create mode 100644 Content.Client/StationRecords/GeneralStationRecordConsoleSystem.cs delete mode 100644 Content.Client/StationRecords/StationRecordsSystem.cs create mode 100644 Content.Server/StationRecords/GeneralStationRecordConsoleSystem.cs delete mode 100644 Content.Server/StationRecords/Systems/GeneralStationRecordConsoleSystem.cs delete mode 100644 Content.Server/StationRecords/Systems/StationRecordsSystem.cs rename {Content.Server => Content.Shared}/StationRecords/Components/GeneralStationRecordConsoleComponent.cs (70%) rename Content.Shared/StationRecords/{ => Components}/StationRecordKeyStorageComponent.cs (91%) create mode 100644 Content.Shared/StationRecords/Components/StationRecordsComponent.cs create mode 100644 Content.Shared/StationRecords/Events/GeneralRecordCreatedEvent.cs create mode 100644 Content.Shared/StationRecords/Events/IStationRecordEvent.cs create mode 100644 Content.Shared/StationRecords/Events/RecordModifiedEvent.cs create mode 100644 Content.Shared/StationRecords/Events/RecordRemovedEvent.cs delete mode 100644 Content.Shared/StationRecords/SharedStationRecordsSystem.cs create mode 100644 Content.Shared/StationRecords/StationRecord.cs delete mode 100644 Content.Shared/StationRecords/StationRecordKeyStorageSystem.cs delete mode 100644 Content.Shared/StationRecords/StationRecordsComponent.cs create mode 100644 Content.Shared/StationRecords/Systems/SharedGeneralStationRecordConsoleSystem.cs create mode 100644 Content.Shared/StationRecords/Systems/StationRecordKeyStorageSystem.cs create mode 100644 Content.Shared/StationRecords/Systems/StationRecordsSystem.API.cs create mode 100644 Content.Shared/StationRecords/Systems/StationRecordsSystem.Helpers.cs create mode 100644 Content.Shared/StationRecords/Systems/StationRecordsSystem.cs diff --git a/Content.Client/StationRecords/GeneralRecord.xaml.cs b/Content.Client/StationRecords/GeneralRecord.xaml.cs index b69c6fb8bb..6907e75467 100644 --- a/Content.Client/StationRecords/GeneralRecord.xaml.cs +++ b/Content.Client/StationRecords/GeneralRecord.xaml.cs @@ -17,7 +17,7 @@ public sealed partial class GeneralRecord : Control RecordName.Text = record.Name; Age.Text = Loc.GetString("general-station-record-console-record-age", ("age", record.Age.ToString())); Title.Text = Loc.GetString("general-station-record-console-record-title", - ("job", Loc.GetString(record.JobTitle))); + ("job", record.JobTitle)); var species = Loc.GetString(prototypeManager.Index(record.Species).Name); Species.Text = Loc.GetString("general-station-record-console-record-species", ("species", species)); Gender.Text = Loc.GetString("general-station-record-console-record-gender", diff --git a/Content.Client/StationRecords/GeneralStationRecordConsoleBoundUserInterface.cs b/Content.Client/StationRecords/GeneralStationRecordConsoleBoundUserInterface.cs index e7bab71e38..c77735060b 100644 --- a/Content.Client/StationRecords/GeneralStationRecordConsoleBoundUserInterface.cs +++ b/Content.Client/StationRecords/GeneralStationRecordConsoleBoundUserInterface.cs @@ -1,12 +1,18 @@ +using Content.Shared.Station; using Content.Shared.StationRecords; +using Content.Shared.StationRecords.Components; +using Content.Shared.StationRecords.Systems; using Robust.Client.UserInterface; namespace Content.Client.StationRecords; -public sealed class GeneralStationRecordConsoleBoundUserInterface : BoundUserInterface +public sealed partial class GeneralStationRecordConsoleBoundUserInterface : BoundUserInterface { [ViewVariables] - private GeneralStationRecordConsoleWindow? _window = default!; + private GeneralStationRecordConsoleWindow? _window; + + [Dependency] private SharedStationSystem _stationSys = default!; + [Dependency] private StationRecordsSystem _recordsSys = default!; public GeneralStationRecordConsoleBoundUserInterface(EntityUid owner, Enum uiKey) : base(owner, uiKey) { @@ -17,20 +23,51 @@ public sealed class GeneralStationRecordConsoleBoundUserInterface : BoundUserInt base.Open(); _window = this.CreateWindow(); - _window.OnKeySelected += key => - SendMessage(new SelectStationRecord(key)); - _window.OnFiltersChanged += (type, filterValue) => - SendMessage(new SetStationRecordFilter(type, filterValue)); - _window.OnDeleted += id => SendMessage(new DeleteStationRecord(id)); + _window.OnKeySelected += SelectStationRecord; + _window.OnFiltersChanged += SetStationRecordFilter; + _window.OnDeleted += id => SendPredictedMessage(new DeleteStationRecord(id)); + Update(); } - protected override void UpdateState(BoundUserInterfaceState state) + public override void Update() { - base.UpdateState(state); + base.Update(); - if (state is not GeneralStationRecordConsoleState cast) + if (!EntMan.TryGetComponent(Owner, out GeneralStationRecordConsoleComponent? comp)) return; - _window?.UpdateState(cast); + var owningStation = _stationSys.GetOwningStation(Owner); + + if (!EntMan.TryGetComponent(owningStation, out StationRecordsComponent? stationRecords)) + return; + + var listing = _recordsSys.BuildListing((owningStation.Value, stationRecords), comp.Filter); + + GeneralStationRecord? record = null; + if (comp.ActiveKey != null) + { + var key = new StationRecordKey(comp.ActiveKey.Value, owningStation.Value); + _recordsSys.TryGetRecord(key, out record, stationRecords); + } + + _window?.UpdateState(comp.ActiveKey, record, listing, comp.Filter, comp.CanDeleteEntries); + } + + private void SelectStationRecord(uint? key) + { + if (!EntMan.TryGetComponent(Owner, out GeneralStationRecordConsoleComponent? comp)) + return; + + comp.ActiveKey = key; + Update(); + } + + private void SetStationRecordFilter(StationRecordFilterType type, string value) + { + if (!EntMan.TryGetComponent(Owner, out GeneralStationRecordConsoleComponent? comp)) + return; + + comp.Filter = new StationRecordsFilter(type, value); + Update(); } } diff --git a/Content.Client/StationRecords/GeneralStationRecordConsoleSystem.cs b/Content.Client/StationRecords/GeneralStationRecordConsoleSystem.cs new file mode 100644 index 0000000000..2c769c7ec4 --- /dev/null +++ b/Content.Client/StationRecords/GeneralStationRecordConsoleSystem.cs @@ -0,0 +1,28 @@ +using Content.Shared.StationRecords; +using Content.Shared.StationRecords.Components; +using Content.Shared.StationRecords.Systems; + +namespace Content.Client.StationRecords; + +public sealed partial class GeneralStationRecordConsoleSystem : SharedGeneralStationRecordConsoleSystem +{ + [Dependency] private SharedUserInterfaceSystem _ui = default!; + + protected override void UpdateUserInterface(Entity ent) + { + if (_ui.TryGetOpenUi(ent.Owner, GeneralStationRecordConsoleKey.Key, out var bui)) + bui.Update(); + } + + // Needed so when a record is created or deleted, it appears in the UI instantly. + [SubscribeLocalEvent] + private void OnAfterHandleState(Entity ent, ref AfterAutoHandleStateEvent args) + { + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out _)) + { + if (_ui.TryGetOpenUi(uid, GeneralStationRecordConsoleKey.Key, out var bui)) + bui.Update(); + } + } +} diff --git a/Content.Client/StationRecords/GeneralStationRecordConsoleWindow.xaml.cs b/Content.Client/StationRecords/GeneralStationRecordConsoleWindow.xaml.cs index 350af7d353..ff0001010c 100644 --- a/Content.Client/StationRecords/GeneralStationRecordConsoleWindow.xaml.cs +++ b/Content.Client/StationRecords/GeneralStationRecordConsoleWindow.xaml.cs @@ -74,24 +74,28 @@ public sealed partial class GeneralStationRecordConsoleWindow : DefaultWindow }; } - public void UpdateState(GeneralStationRecordConsoleState state) + public void UpdateState(uint? selectedKey, + GeneralStationRecord? record, + Dictionary? recordListing, + StationRecordsFilter? filter, + bool canDeleteEntries) { - if (state.Filter != null) + if (filter != null) { - if (state.Filter.Type != _currentFilterType) + if (filter.Type != _currentFilterType) { - _currentFilterType = state.Filter.Type; + _currentFilterType = filter.Type; } - if (state.Filter.Value != StationRecordsFiltersValue.Text) + if (filter.Value != StationRecordsFiltersValue.Text) { - StationRecordsFiltersValue.Text = state.Filter.Value; + StationRecordsFiltersValue.Text = filter.Value; } } StationRecordsFilterType.SelectId((int)_currentFilterType); - if (state.RecordListing == null) + if (recordListing == null) { RecordListingStatus.Visible = true; RecordListing.Visible = false; @@ -105,17 +109,17 @@ public sealed partial class GeneralStationRecordConsoleWindow : DefaultWindow RecordListing.Visible = true; RecordContainer.Visible = true; - PopulateRecordListing(state.RecordListing!, state.SelectedKey); + PopulateRecordListing(recordListing, selectedKey); - RecordContainerStatus.Visible = state.Record == null; + RecordContainerStatus.Visible = record == null; - if (state.Record != null) + if (record != null) { - RecordContainerStatus.Visible = state.SelectedKey == null; - RecordContainerStatus.Text = state.SelectedKey == null + RecordContainerStatus.Visible = selectedKey == null; + RecordContainerStatus.Text = selectedKey == null ? Loc.GetString("general-station-record-console-no-record-found") : Loc.GetString("general-station-record-console-select-record-info"); - PopulateRecordContainer(state.Record, state.CanDeleteEntries, state.SelectedKey); + PopulateRecordContainer(record, canDeleteEntries, selectedKey); } else { diff --git a/Content.Client/StationRecords/StationRecordsSystem.cs b/Content.Client/StationRecords/StationRecordsSystem.cs deleted file mode 100644 index 92ec076d0b..0000000000 --- a/Content.Client/StationRecords/StationRecordsSystem.cs +++ /dev/null @@ -1,7 +0,0 @@ -using Content.Shared.StationRecords; - -namespace Content.Client.StationRecords; - -public sealed class StationRecordsSystem : SharedStationRecordsSystem -{ -} diff --git a/Content.Server/Access/Systems/IdCardConsoleSystem.cs b/Content.Server/Access/Systems/IdCardConsoleSystem.cs index 6e7a059663..17342d7c5a 100644 --- a/Content.Server/Access/Systems/IdCardConsoleSystem.cs +++ b/Content.Server/Access/Systems/IdCardConsoleSystem.cs @@ -2,7 +2,6 @@ using System.Diagnostics.CodeAnalysis; using System.Linq; using Content.Server.Chat.Systems; using Content.Server.Containers; -using Content.Server.StationRecords.Systems; using Content.Shared.Access; using Content.Shared.Access.Components; using Content.Shared.Access.Systems; @@ -15,6 +14,8 @@ using Content.Shared.Damage.Systems; using Content.Shared.Database; using Content.Shared.Roles; using Content.Shared.StationRecords; +using Content.Shared.StationRecords.Components; +using Content.Shared.StationRecords.Systems; using Content.Shared.Throwing; using JetBrains.Annotations; using Robust.Server.GameObjects; @@ -230,7 +231,7 @@ public sealed partial class IdCardConsoleSystem : SharedIdCardConsoleSystem return _accessReader.IsAllowed(id.Value, uid, reader); } - private void UpdateStationRecord(EntityUid uid, EntityUid targetId, string newFullName, ProtoId newJobTitle, JobPrototype? newJobProto) + private void UpdateStationRecord(EntityUid uid, EntityUid targetId, string newFullName, string newJobTitle, JobPrototype? newJobProto) { if (!TryComp(targetId, out var keyStorage) || keyStorage.Key is not { } key diff --git a/Content.Server/Administration/Systems/AdminSystem.cs b/Content.Server/Administration/Systems/AdminSystem.cs index f5425e4af6..1f22c0347c 100644 --- a/Content.Server/Administration/Systems/AdminSystem.cs +++ b/Content.Server/Administration/Systems/AdminSystem.cs @@ -6,7 +6,6 @@ using Content.Server.Hands.Systems; using Content.Server.Mind; using Content.Server.Players.PlayTimeTracking; using Content.Server.Popups; -using Content.Server.StationRecords.Systems; using Content.Shared.Administration; using Content.Shared.Administration.Events; using Content.Shared.CCVar; @@ -22,6 +21,8 @@ using Content.Shared.Popups; using Content.Shared.Roles; using Content.Shared.Roles.Jobs; using Content.Shared.StationRecords; +using Content.Shared.StationRecords.Components; +using Content.Shared.StationRecords.Systems; using Content.Shared.Throwing; using Robust.Server.GameObjects; using Robust.Server.Player; diff --git a/Content.Server/Bed/Cryostorage/CryostorageSystem.cs b/Content.Server/Bed/Cryostorage/CryostorageSystem.cs index 24a6e84436..d998558a93 100644 --- a/Content.Server/Bed/Cryostorage/CryostorageSystem.cs +++ b/Content.Server/Bed/Cryostorage/CryostorageSystem.cs @@ -1,12 +1,7 @@ using Content.Server.Chat.Managers; -using Content.Server.Chat.Systems; using Content.Server.Ghost; -using Content.Server.Hands.Systems; -using Content.Server.Inventory; -using Content.Server.Popups; using Content.Server.Station.Components; using Content.Server.Station.Systems; -using Content.Server.StationRecords.Systems; using Content.Shared.Access.Systems; using Content.Shared.Bed.Cryostorage; using Content.Shared.Chat; @@ -18,15 +13,19 @@ using Content.Shared.Hands.Components; using Content.Shared.Mind.Components; using Content.Shared.StationRecords; using Content.Shared.UserInterface; -using Robust.Server.Audio; -using Robust.Server.Containers; -using Robust.Server.GameObjects; using Robust.Server.Player; using Robust.Shared.Containers; using Robust.Shared.Enums; using Robust.Shared.Network; using Robust.Shared.Player; using System.Globalization; +using Content.Shared.Hands.EntitySystems; +using Content.Shared.Inventory; +using Content.Shared.Popups; +using Content.Shared.Station; +using Content.Shared.StationRecords.Components; +using Content.Shared.StationRecords.Systems; +using Robust.Shared.Audio.Systems; namespace Content.Server.Bed.Cryostorage; @@ -35,20 +34,20 @@ public sealed partial class CryostorageSystem : SharedCryostorageSystem { [Dependency] private IChatManager _chatManager = default!; [Dependency] private IPlayerManager _playerManager = default!; - [Dependency] private AudioSystem _audio = default!; + [Dependency] private SharedAudioSystem _audio = default!; [Dependency] private AccessReaderSystem _accessReader = default!; - [Dependency] private ChatSystem _chatSystem = default!; + [Dependency] private SharedChatSystem _chatSystem = default!; [Dependency] private ClimbSystem _climb = default!; - [Dependency] private ContainerSystem _container = default!; + [Dependency] private SharedContainerSystem _container = default!; [Dependency] private GhostSystem _ghostSystem = default!; - [Dependency] private HandsSystem _hands = default!; - [Dependency] private ServerInventorySystem _inventory = default!; - [Dependency] private PopupSystem _popup = default!; - [Dependency] private StationSystem _station = default!; + [Dependency] private SharedHandsSystem _hands = default!; + [Dependency] private InventorySystem _inventory = default!; + [Dependency] private SharedPopupSystem _popup = default!; + [Dependency] private SharedStationSystem _station = default!; [Dependency] private StationJobsSystem _stationJobs = default!; [Dependency] private StationRecordsSystem _stationRecords = default!; - [Dependency] private TransformSystem _transform = default!; - [Dependency] private UserInterfaceSystem _ui = default!; + [Dependency] private SharedTransformSystem _transform = default!; + [Dependency] private SharedUserInterfaceSystem _ui = default!; /// public override void Initialize() diff --git a/Content.Server/CrewManifest/CrewManifestSystem.cs b/Content.Server/CrewManifest/CrewManifestSystem.cs index 121896481b..62a724fb5c 100644 --- a/Content.Server/CrewManifest/CrewManifestSystem.cs +++ b/Content.Server/CrewManifest/CrewManifestSystem.cs @@ -2,7 +2,6 @@ using System.Linq; using Content.Server.Administration; using Content.Server.EUI; using Content.Server.Station.Systems; -using Content.Server.StationRecords.Systems; using Content.Shared.Administration; using Content.Shared.CCVar; using Content.Shared.CrewManifest; @@ -10,6 +9,9 @@ using Content.Shared.GameTicking; using Content.Shared.Roles; using Content.Shared.Station.Components; using Content.Shared.StationRecords; +using Content.Shared.StationRecords.Components; +using Content.Shared.StationRecords.Events; +using Content.Shared.StationRecords.Systems; using Robust.Shared.Configuration; using Robust.Shared.Console; using Robust.Shared.Player; @@ -34,7 +36,7 @@ public sealed partial class CrewManifestSystem : EntitySystem public override void Initialize() { - SubscribeLocalEvent(AfterGeneralRecordCreated); + SubscribeLocalEvent(GeneralRecordCreated); SubscribeLocalEvent(OnRecordModified); SubscribeLocalEvent(OnRecordRemoved); SubscribeLocalEvent(OnRoundRestart); @@ -72,19 +74,19 @@ public sealed partial class CrewManifestSystem : EntitySystem // Not a big fan of this one. Rebuilds the crew manifest every time // somebody spawns in, meaning that at round start, it rebuilds the crew manifest // wrt the amount of players readied up. - private void AfterGeneralRecordCreated(AfterGeneralRecordCreatedEvent ev) + private void GeneralRecordCreated(ref GeneralRecordCreatedEvent ev) { BuildCrewManifest(ev.Key.OriginStation); UpdateEuis(ev.Key.OriginStation); } - private void OnRecordModified(RecordModifiedEvent ev) + private void OnRecordModified(ref RecordModifiedEvent ev) { BuildCrewManifest(ev.Key.OriginStation); UpdateEuis(ev.Key.OriginStation); } - private void OnRecordRemoved(RecordRemovedEvent ev) + private void OnRecordRemoved(ref RecordRemovedEvent ev) { BuildCrewManifest(ev.Key.OriginStation); UpdateEuis(ev.Key.OriginStation); diff --git a/Content.Server/CriminalRecords/Systems/CriminalRecordsConsoleSystem.cs b/Content.Server/CriminalRecords/Systems/CriminalRecordsConsoleSystem.cs index 94a9f7bfe4..5dc921332c 100644 --- a/Content.Server/CriminalRecords/Systems/CriminalRecordsConsoleSystem.cs +++ b/Content.Server/CriminalRecords/Systems/CriminalRecordsConsoleSystem.cs @@ -1,8 +1,6 @@ using Content.Server.Popups; using Content.Server.Radio.EntitySystems; using Content.Server.Station.Systems; -using Content.Server.StationRecords; -using Content.Server.StationRecords.Systems; using Content.Shared.Access.Systems; using Content.Shared.CriminalRecords; using Content.Shared.CriminalRecords.Components; @@ -12,11 +10,12 @@ using Content.Shared.StationRecords; using Robust.Server.GameObjects; using System.Diagnostics.CodeAnalysis; using Content.Shared.IdentityManagement; -using Content.Shared.Security.Components; using System.Linq; using Content.Shared.Administration.Logs; using Content.Shared.Database; -using Content.Shared.Roles.Jobs; +using Content.Shared.StationRecords.Components; +using Content.Shared.StationRecords.Events; +using Content.Shared.StationRecords.Systems; namespace Content.Server.CriminalRecords.Systems; @@ -38,7 +37,7 @@ public sealed partial class CriminalRecordsConsoleSystem : SharedCriminalRecords public override void Initialize() { SubscribeLocalEvent(UpdateUserInterface); - SubscribeLocalEvent(UpdateUserInterface); + SubscribeLocalEvent(UpdateUserInterface); Subs.BuiEvents(CriminalRecordsConsoleKey.Key, subs => { @@ -64,6 +63,7 @@ public sealed partial class CriminalRecordsConsoleSystem : SharedCriminalRecords ent.Comp.ActiveKey = msg.SelectedKey; UpdateUserInterface(ent); } + private void OnStatusFilterPressed(Entity ent, ref CriminalRecordSetStatusFilter msg) { ent.Comp.FilterStatus = msg.FilterStatus; diff --git a/Content.Server/CriminalRecords/Systems/CriminalRecordsHackerSystem.cs b/Content.Server/CriminalRecords/Systems/CriminalRecordsHackerSystem.cs index af46913b62..57c2bc2028 100644 --- a/Content.Server/CriminalRecords/Systems/CriminalRecordsHackerSystem.cs +++ b/Content.Server/CriminalRecords/Systems/CriminalRecordsHackerSystem.cs @@ -1,12 +1,12 @@ using Content.Server.Chat.Systems; using Content.Server.Station.Systems; -using Content.Server.StationRecords.Systems; using Content.Shared.CriminalRecords; using Content.Shared.CriminalRecords.Components; using Content.Shared.CriminalRecords.Systems; using Content.Shared.Random.Helpers; using Content.Shared.Security; using Content.Shared.StationRecords; +using Content.Shared.StationRecords.Systems; using Robust.Shared.Random; namespace Content.Server.CriminalRecords.Systems; diff --git a/Content.Server/CriminalRecords/Systems/CriminalRecordsSystem.cs b/Content.Server/CriminalRecords/Systems/CriminalRecordsSystem.cs index 0cf1feb24b..ec870f4c7e 100644 --- a/Content.Server/CriminalRecords/Systems/CriminalRecordsSystem.cs +++ b/Content.Server/CriminalRecords/Systems/CriminalRecordsSystem.cs @@ -1,7 +1,4 @@ using System.Linq; -using Content.Server.CartridgeLoader; -using Content.Server.CartridgeLoader.Cartridges; -using Content.Server.StationRecords.Systems; using Content.Shared.CriminalRecords; using Content.Shared.CriminalRecords.Systems; using Content.Shared.Security; @@ -10,6 +7,8 @@ using Content.Server.GameTicking; using Content.Server.Station.Systems; using Content.Shared.CartridgeLoader; using Content.Shared.CartridgeLoader.Cartridges; +using Content.Shared.StationRecords.Events; +using Content.Shared.StationRecords.Systems; namespace Content.Server.CriminalRecords.Systems; @@ -32,14 +31,14 @@ public sealed partial class CriminalRecordsSystem : SharedCriminalRecordsSystem { base.Initialize(); - SubscribeLocalEvent(OnGeneralRecordCreated); + SubscribeLocalEvent(OnGeneralRecordCreated); SubscribeLocalEvent(OnRecordChanged); SubscribeLocalEvent(OnCartridgeUiReady); SubscribeLocalEvent(OnHistoryAdded); SubscribeLocalEvent(OnHistoryRemoved); } - private void OnGeneralRecordCreated(AfterGeneralRecordCreatedEvent ev) + private void OnGeneralRecordCreated(ref GeneralRecordCreatedEvent ev) { _records.AddRecordEntry(ev.Key, new CriminalRecord()); _records.Synchronize(ev.Key); diff --git a/Content.Server/Delivery/DeliverySystem.Spawning.cs b/Content.Server/Delivery/DeliverySystem.Spawning.cs index 560c7b900a..f3c4f9e29c 100644 --- a/Content.Server/Delivery/DeliverySystem.Spawning.cs +++ b/Content.Server/Delivery/DeliverySystem.Spawning.cs @@ -1,7 +1,7 @@ using Content.Shared.Delivery; using Content.Shared.Power.EntitySystems; using Content.Shared.EntityTable; -using Content.Shared.StationRecords; +using Content.Shared.StationRecords.Components; using Robust.Shared.Random; using Robust.Shared.Timing; diff --git a/Content.Server/Delivery/DeliverySystem.cs b/Content.Server/Delivery/DeliverySystem.cs index 3e20cd6656..49d0892ce0 100644 --- a/Content.Server/Delivery/DeliverySystem.cs +++ b/Content.Server/Delivery/DeliverySystem.cs @@ -1,7 +1,6 @@ using Content.Server.Cargo.Systems; using Content.Server.Chat.Systems; using Content.Server.Station.Systems; -using Content.Server.StationRecords.Systems; using Content.Shared.Cargo.Components; using Content.Shared.Cargo.Prototypes; using Content.Shared.Chat; @@ -9,6 +8,7 @@ using Content.Shared.Delivery; using Content.Shared.FingerprintReader; using Content.Shared.Labels.EntitySystems; using Content.Shared.StationRecords; +using Content.Shared.StationRecords.Systems; using Robust.Shared.Audio.Systems; using Robust.Shared.Containers; using Robust.Shared.Prototypes; diff --git a/Content.Server/GameTicking/Rules/NukeopsRuleSystem.cs b/Content.Server/GameTicking/Rules/NukeopsRuleSystem.cs index 2cfb7e126b..9b44691d20 100644 --- a/Content.Server/GameTicking/Rules/NukeopsRuleSystem.cs +++ b/Content.Server/GameTicking/Rules/NukeopsRuleSystem.cs @@ -10,7 +10,6 @@ using Content.Server.RoundEnd; using Content.Server.Shuttles.Events; using Content.Server.Shuttles.Systems; using Content.Server.Station.Components; -using Content.Server.StationRecords.Systems; using Content.Server.Store.Systems; using Content.Shared.Access.Systems; using Content.Shared.GameTicking.Components; @@ -42,6 +41,7 @@ using Robust.Shared.Utility; using System.Data; using System.Linq; using System.Text; +using Content.Shared.StationRecords.Systems; namespace Content.Server.GameTicking.Rules; diff --git a/Content.Server/Silicons/Laws/IonLawSystem.cs b/Content.Server/Silicons/Laws/IonLawSystem.cs index 3d7c835817..b657d21b06 100644 --- a/Content.Server/Silicons/Laws/IonLawSystem.cs +++ b/Content.Server/Silicons/Laws/IonLawSystem.cs @@ -1,11 +1,12 @@ -using Content.Server.StationRecords.Systems; -using Content.Shared.Dataset; +using Content.Shared.Dataset; using Content.Shared.Silicons.Laws; using Content.Shared.Station; using Content.Shared.StationRecords; using Robust.Shared.Prototypes; using Robust.Shared.Random; using System.Linq; +using Content.Shared.StationRecords.Components; +using Content.Shared.StationRecords.Systems; namespace Content.Server.Silicons.Laws; diff --git a/Content.Server/StationEvents/Events/ClericalErrorRule.cs b/Content.Server/StationEvents/Events/ClericalErrorRule.cs index 05f059b3fe..01572abdf2 100644 --- a/Content.Server/StationEvents/Events/ClericalErrorRule.cs +++ b/Content.Server/StationEvents/Events/ClericalErrorRule.cs @@ -1,9 +1,8 @@ -using Content.Server.GameTicking.Rules.Components; using Content.Server.StationEvents.Components; -using Content.Server.StationRecords; -using Content.Server.StationRecords.Systems; using Content.Shared.StationRecords; using Content.Shared.GameTicking.Components; +using Content.Shared.StationRecords.Components; +using Content.Shared.StationRecords.Systems; using Robust.Shared.Random; namespace Content.Server.StationEvents.Events; diff --git a/Content.Server/StationRecords/GeneralStationRecordConsoleSystem.cs b/Content.Server/StationRecords/GeneralStationRecordConsoleSystem.cs new file mode 100644 index 0000000000..bd50be48cd --- /dev/null +++ b/Content.Server/StationRecords/GeneralStationRecordConsoleSystem.cs @@ -0,0 +1,5 @@ +using Content.Shared.StationRecords.Systems; + +namespace Content.Server.StationRecords; + +public sealed class GeneralStationRecordConsoleSystem : SharedGeneralStationRecordConsoleSystem; diff --git a/Content.Server/StationRecords/Systems/GeneralStationRecordConsoleSystem.cs b/Content.Server/StationRecords/Systems/GeneralStationRecordConsoleSystem.cs deleted file mode 100644 index 9e97d084bb..0000000000 --- a/Content.Server/StationRecords/Systems/GeneralStationRecordConsoleSystem.cs +++ /dev/null @@ -1,99 +0,0 @@ -using System.Linq; -using Content.Server.Station.Systems; -using Content.Server.StationRecords.Components; -using Content.Shared.StationRecords; -using Robust.Server.GameObjects; - -namespace Content.Server.StationRecords.Systems; - -public sealed partial class GeneralStationRecordConsoleSystem : EntitySystem -{ - [Dependency] private UserInterfaceSystem _ui = default!; - [Dependency] private StationSystem _station = default!; - [Dependency] private StationRecordsSystem _stationRecords = default!; - - public override void Initialize() - { - SubscribeLocalEvent(UpdateUserInterface); - SubscribeLocalEvent(UpdateUserInterface); - SubscribeLocalEvent(UpdateUserInterface); - - Subs.BuiEvents(GeneralStationRecordConsoleKey.Key, subs => - { - subs.Event(UpdateUserInterface); - subs.Event(OnKeySelected); - subs.Event(OnFiltersChanged); - subs.Event(OnRecordDelete); - }); - } - - private void OnRecordDelete(Entity ent, ref DeleteStationRecord args) - { - if (!ent.Comp.CanDeleteEntries) - return; - - var owning = _station.GetOwningStation(ent.Owner); - - if (owning != null) - _stationRecords.RemoveRecord(new StationRecordKey(args.Id, owning.Value)); - UpdateUserInterface(ent); // Apparently an event does not get raised for this. - } - - private void UpdateUserInterface(Entity ent, ref T args) - { - UpdateUserInterface(ent); - } - - // TODO: instead of copy paste shitcode for each record console, have a shared records console comp they all use - // then have this somehow play nicely with creating ui state - // if that gets done put it in StationRecordsSystem console helpers section :) - private void OnKeySelected(Entity ent, ref SelectStationRecord msg) - { - ent.Comp.ActiveKey = msg.SelectedKey; - UpdateUserInterface(ent); - } - - private void OnFiltersChanged(Entity ent, ref SetStationRecordFilter msg) - { - if (ent.Comp.Filter == null || - ent.Comp.Filter.Type != msg.Type || ent.Comp.Filter.Value != msg.Value) - { - ent.Comp.Filter = new StationRecordsFilter(msg.Type, msg.Value); - UpdateUserInterface(ent); - } - } - - private void UpdateUserInterface(Entity ent) - { - var (uid, console) = ent; - var owningStation = _station.GetOwningStation(uid); - - if (!TryComp(owningStation, out var stationRecords)) - { - _ui.SetUiState(uid, GeneralStationRecordConsoleKey.Key, new GeneralStationRecordConsoleState()); - return; - } - - var listing = _stationRecords.BuildListing((owningStation.Value, stationRecords), console.Filter); - - switch (listing.Count) - { - case 0: - _ui.SetUiState(uid, GeneralStationRecordConsoleKey.Key, new GeneralStationRecordConsoleState()); - return; - default: - if (console.ActiveKey == null) - console.ActiveKey = listing.Keys.First(); - break; - } - - if (console.ActiveKey is not { } id) - return; - - var key = new StationRecordKey(id, owningStation.Value); - _stationRecords.TryGetRecord(key, out var record, stationRecords); - - GeneralStationRecordConsoleState newState = new(id, record, listing, console.Filter, ent.Comp.CanDeleteEntries); - _ui.SetUiState(uid, GeneralStationRecordConsoleKey.Key, newState); - } -} diff --git a/Content.Server/StationRecords/Systems/StationRecordsSystem.cs b/Content.Server/StationRecords/Systems/StationRecordsSystem.cs deleted file mode 100644 index df558e2f6d..0000000000 --- a/Content.Server/StationRecords/Systems/StationRecordsSystem.cs +++ /dev/null @@ -1,438 +0,0 @@ -using System.Diagnostics.CodeAnalysis; -using Content.Server.Access.Systems; -using Content.Shared.Access.Components; -using Content.Shared.Forensics.Components; -using Content.Shared.GameTicking; -using Content.Shared.Inventory; -using Content.Shared.PDA; -using Content.Shared.Preferences; -using Content.Shared.Roles; -using Content.Shared.StationRecords; -using Robust.Shared.Enums; -using Robust.Shared.Random; - -namespace Content.Server.StationRecords.Systems; - -/// -/// Station records. -/// -/// A station record is tied to an ID card, or anything that holds -/// a station record's key. This key will determine access to a -/// station record set's record entries, and it is imperative not -/// to lose the item that holds the key under any circumstance. -/// -/// Records are mostly a roleplaying tool, but can have some -/// functionality as well (i.e., security records indicating that -/// a specific person holding an ID card with a linked key is -/// currently under warrant, showing a crew manifest with user -/// settable, custom titles). -/// -/// General records are tied into this system, as most crewmembers -/// should have a general record - and most systems should probably -/// depend on this general record being created. This is subject -/// to change. -/// -public sealed partial class StationRecordsSystem : SharedStationRecordsSystem -{ - [Dependency] private InventorySystem _inventory = default!; - [Dependency] private StationRecordKeyStorageSystem _keyStorage = default!; - [Dependency] private IdCardSystem _idCard = default!; - [Dependency] private IRobustRandom _random = default!; - - public override void Initialize() - { - base.Initialize(); - - SubscribeLocalEvent(OnPlayerSpawn); - SubscribeLocalEvent(OnRename); - } - - private void OnPlayerSpawn(PlayerSpawnCompleteEvent args) - { - if (!TryComp(args.Station, out var stationRecords)) - return; - - CreateGeneralRecord(args.Station, args.Mob, args.Profile, args.JobId, stationRecords); - } - - private void OnRename(ref EntityRenamedEvent ev) - { - // When a player gets renamed their card gets changed to match. - // Unfortunately this means that an event is called for it as well, and since TryFindIdCard will succeed if the - // given entity is a card and the card itself is the key the record will be mistakenly renamed to the card's name - // if we don't return early. - // We also do not include the PDA itself being renamed, as that triggers the same event (e.g. for chameleon PDAs). - if (HasComp(ev.Uid) || HasComp(ev.Uid)) - return; - - if (_idCard.TryFindIdCard(ev.Uid, out var idCard)) - { - if (TryComp(idCard, out StationRecordKeyStorageComponent? keyStorage) - && keyStorage.Key is {} key) - { - if (TryGetRecord(key, out var generalRecord)) - { - generalRecord.Name = ev.NewName; - } - - Synchronize(key); - } - } - } - - private void CreateGeneralRecord(EntityUid station, EntityUid player, HumanoidCharacterProfile profile, - string? jobId, StationRecordsComponent records) - { - // TODO make PlayerSpawnCompleteEvent.JobId a ProtoId - if (string.IsNullOrEmpty(jobId) - || !ProtoMan.HasIndex(jobId)) - return; - - if (!_inventory.TryGetSlotEntity(player, "id", out var idUid)) - return; - - TryComp(player, out var fingerprintComponent); - TryComp(player, out var dnaComponent); - - CreateGeneralRecord(station, idUid.Value, profile.Name, profile.Age, profile.Species, profile.Gender, jobId, fingerprintComponent?.Fingerprint, dnaComponent?.DNA, profile, records); - } - - - /// - /// Create a general record to store in a station's record set. - /// - /// - /// This is tied into the record system, as any crew member's - /// records should generally be dependent on some generic - /// record with the bare minimum of information involved. - /// - /// The entity uid of the station. - /// The entity uid of an entity's ID card. Can be null. - /// Name of the character. - /// Species of the character. - /// Gender of the character. - /// - /// The job to initially tie this record to. This must be a valid job loaded in, otherwise - /// this call will cause an exception. Ensure that a general record starts out with a job - /// that is currently a valid job prototype. - /// - /// Fingerprint of the character. - /// DNA of the character. - /// - /// - /// Profile for the related player. This is so that other systems can get further information - /// about the player character. - /// Optional - other systems should anticipate this. - /// - /// Station records component. - public void CreateGeneralRecord( - EntityUid station, - EntityUid? idUid, - string name, - int age, - string species, - Gender gender, - string jobId, - string? mobFingerprint, - string? dna, - HumanoidCharacterProfile profile, - StationRecordsComponent records) - { - if (!ProtoMan.TryIndex(jobId, out var jobPrototype)) - throw new ArgumentException($"Invalid job prototype ID: {jobId}"); - - // when adding a record that already exists use the old one - // this happens when respawning as the same character - if (GetRecordByName(station, name, records) is {} id) - { - SetIdKey(idUid, new StationRecordKey(id, station)); - return; - } - - var record = new GeneralStationRecord() - { - Name = name, - Age = age, - JobTitle = jobPrototype.LocalizedName, - JobIcon = jobPrototype.Icon, - JobPrototype = jobId, - Species = species, - Gender = gender, - DisplayPriority = jobPrototype.RealDisplayWeight, - Fingerprint = mobFingerprint, - DNA = dna - }; - - var key = AddRecordEntry(station, record); - if (!key.IsValid()) - { - Log.Warning($"Failed to add general record entry for {name}"); - return; - } - - SetIdKey(idUid, key); - - RaiseLocalEvent(new AfterGeneralRecordCreatedEvent(key, record, profile)); - } - - /// - /// Set the station records key for an id/pda. - /// - public void SetIdKey(EntityUid? uid, StationRecordKey key) - { - if (uid is not {} idUid) - return; - - var keyStorageEntity = idUid; - if (TryComp(idUid, out var pda) && pda.ContainedId is {} id) - { - keyStorageEntity = id; - } - - _keyStorage.AssignKey(keyStorageEntity, key); - } - - /// - /// Removes a record from this station. - /// - /// The station and key to remove. - /// Station records component. - /// True if the record was removed, false otherwise. - public bool RemoveRecord(StationRecordKey key, StationRecordsComponent? records = null) - { - if (!Resolve(key.OriginStation, ref records)) - return false; - - if (records.Records.RemoveAllRecords(key.Id)) - { - RaiseLocalEvent(new RecordRemovedEvent(key)); - return true; - } - - return false; - } - - /// - /// Gets a random record from the station's record entries. - /// - /// The EntityId of the station from which you want to get the record. - /// The resulting entry. - /// Type to get from the record set. - /// True if a record was obtained. False otherwise. - public bool TryGetRandomRecord(Entity ent, [NotNullWhen(true)] out T? entry) - { - entry = default; - - if (!Resolve(ent.Owner, ref ent.Comp)) - return false; - - if (ent.Comp.Records.Keys.Count == 0) - return false; - - var key = _random.Pick(ent.Comp.Records.Keys); - - return ent.Comp.Records.TryGetRecordEntry(key, out entry); - } - - /// - /// Get the name for a record, or an empty string if it has no record. - /// - public string RecordName(StationRecordKey key) - { - if (!TryGetRecord(key, out var record)) - return string.Empty; - - return record.Name; - } - - /// - /// Adds a new record entry to a station's record set. - /// - /// The station to add the record to. - /// The record to add. - /// Station records component. - /// The type of record to add. - public StationRecordKey AddRecordEntry(EntityUid station, T record, StationRecordsComponent? records = null) - { - if (!Resolve(station, ref records)) - return StationRecordKey.Invalid; - - var id = records.Records.AddRecordEntry(record); - if (id == null) - return StationRecordKey.Invalid; - - return new StationRecordKey(id.Value, station); - } - - /// - /// Adds a record to an existing entry. - /// - /// The station and id of the existing entry. - /// The record to add. - /// Station records component. - /// The type of record to add. - public void AddRecordEntry(StationRecordKey key, T record, - StationRecordsComponent? records = null) - { - if (!Resolve(key.OriginStation, ref records)) - return; - - records.Records.AddRecordEntry(key.Id, record); - } - - /// - /// Synchronizes a station's records with any systems that need it. - /// - /// The station to synchronize any recently accessed records with.. - /// Station records component. - public void Synchronize(EntityUid station, StationRecordsComponent? records = null) - { - if (!Resolve(station, ref records)) - return; - - foreach (var key in records.Records.GetRecentlyAccessed()) - { - RaiseLocalEvent(new RecordModifiedEvent(new StationRecordKey(key, station))); - } - - records.Records.ClearRecentlyAccessed(); - } - - /// - /// Synchronizes a single record's entries for a station. - /// - /// The station and id of the record - /// Station records component. - public void Synchronize(StationRecordKey key, StationRecordsComponent? records = null) - { - if (!Resolve(key.OriginStation, ref records)) - return; - - RaiseLocalEvent(new RecordModifiedEvent(key)); - - records.Records.RemoveFromRecentlyAccessed(key.Id); - } - - #region Console system helpers - - /// - /// Checks if a record should be skipped given a filter. - /// Takes general record since even if you are using this for e.g. criminal records, - /// you don't want to duplicate basic info like name and dna. - /// Station records lets you do this nicely with multiple types having their own data. - /// - public bool IsSkipped(StationRecordsFilter? filter, GeneralStationRecord someRecord) - { - // if nothing is being filtered, show everything - if (filter == null) - return false; - if (filter.Value.Length == 0) - return false; - - var filterLowerCaseValue = filter.Value.ToLower(); - - return filter.Type switch - { - StationRecordFilterType.Name => - !someRecord.Name.ToLower().Contains(filterLowerCaseValue), - StationRecordFilterType.Job => - !someRecord.JobTitle.ToLower().Contains(filterLowerCaseValue), - StationRecordFilterType.Species => - !someRecord.Species.ToLower().Contains(filterLowerCaseValue), - StationRecordFilterType.Prints => someRecord.Fingerprint != null - && IsFilterWithSomeCodeValue(someRecord.Fingerprint, filterLowerCaseValue), - StationRecordFilterType.DNA => someRecord.DNA != null - && IsFilterWithSomeCodeValue(someRecord.DNA, filterLowerCaseValue), - _ => throw new IndexOutOfRangeException(nameof(filter.Type)), - }; - } - - private bool IsFilterWithSomeCodeValue(string value, string filter) - { - return !value.ToLower().StartsWith(filter); - } - - /// - /// Build a record listing of id to name for a station and filter. - /// - public Dictionary BuildListing(Entity station, StationRecordsFilter? filter) - { - var listing = new Dictionary(); - - var records = GetRecordsOfType(station, station.Comp); - foreach (var pair in records) - { - if (IsSkipped(filter, pair.Item2)) - continue; - - listing.Add(pair.Item1, pair.Item2.Name); - } - - return listing; - } - - #endregion -} - -/// -/// Base event for station record events -/// -public abstract class StationRecordEvent : EntityEventArgs -{ - public readonly StationRecordKey Key; - public EntityUid Station => Key.OriginStation; - - protected StationRecordEvent(StationRecordKey key) - { - Key = key; - } -} - -/// -/// Event raised after the player's general profile is created. -/// Systems that modify records on a station would have more use -/// listening to this event, as it contains the character's record key. -/// Also stores the general record reference, to save some time. -/// -public sealed class AfterGeneralRecordCreatedEvent : StationRecordEvent -{ - public readonly GeneralStationRecord Record; - /// - /// Profile for the related player. This is so that other systems can get further information - /// about the player character. - /// Optional - other systems should anticipate this. - /// - public readonly HumanoidCharacterProfile Profile; - - public AfterGeneralRecordCreatedEvent(StationRecordKey key, GeneralStationRecord record, - HumanoidCharacterProfile profile) : base(key) - { - Record = record; - Profile = profile; - } -} - -/// -/// Event raised after a record is removed. Only the key is given -/// when the record is removed, so that any relevant systems/components -/// that store record keys can then remove the key from their internal -/// fields. -/// -public sealed class RecordRemovedEvent : StationRecordEvent -{ - public RecordRemovedEvent(StationRecordKey key) : base(key) - { - } -} - -/// -/// Event raised after a record is modified. This is to -/// inform other systems that records stored in this key -/// may have changed. -/// -public sealed class RecordModifiedEvent : StationRecordEvent -{ - public RecordModifiedEvent(StationRecordKey key) : base(key) - { - } -} diff --git a/Content.Shared/Access/Systems/AccessReaderSystem.cs b/Content.Shared/Access/Systems/AccessReaderSystem.cs index e0c61a9476..ae32557d8e 100644 --- a/Content.Shared/Access/Systems/AccessReaderSystem.cs +++ b/Content.Shared/Access/Systems/AccessReaderSystem.cs @@ -14,6 +14,8 @@ using Content.Shared.Lock; using Content.Shared.NameIdentifier; using Content.Shared.PDA; using Content.Shared.StationRecords; +using Content.Shared.StationRecords.Components; +using Content.Shared.StationRecords.Systems; using Content.Shared.Tag; using Robust.Shared.Containers; using Robust.Shared.Collections; @@ -32,7 +34,7 @@ public sealed partial class AccessReaderSystem : EntitySystem [Dependency] private SharedGameTicker _gameTicker = default!; [Dependency] private SharedHandsSystem _handsSystem = default!; [Dependency] private SharedContainerSystem _containerSystem = default!; - [Dependency] private SharedStationRecordsSystem _recordsSystem = default!; + [Dependency] private StationRecordsSystem _recordsSystem = default!; [Dependency] private IdentitySystem _identity = default!; private static readonly ProtoId PreventAccessLoggingTag = "PreventAccessLogging"; diff --git a/Content.Shared/CriminalRecords/CriminalRecord.cs b/Content.Shared/CriminalRecords/CriminalRecord.cs index f69264fcd8..e877004818 100644 --- a/Content.Shared/CriminalRecords/CriminalRecord.cs +++ b/Content.Shared/CriminalRecords/CriminalRecord.cs @@ -1,4 +1,5 @@ using Content.Shared.Security; +using Content.Shared.StationRecords; using Robust.Shared.Serialization; namespace Content.Shared.CriminalRecords; @@ -7,8 +8,8 @@ namespace Content.Shared.CriminalRecords; /// Criminal record for a crewmember. /// Can be viewed and edited in a criminal records console by security. /// -[Serializable, NetSerializable, DataRecord] -public sealed partial record CriminalRecord +[Serializable, NetSerializable] +public sealed partial record CriminalRecord : StationRecord { /// /// Status of the person (None, Wanted, Detained). diff --git a/Content.Shared/CriminalRecords/Systems/SharedCriminalRecordsConsoleSystem.cs b/Content.Shared/CriminalRecords/Systems/SharedCriminalRecordsConsoleSystem.cs index 4a1ae1fff4..68b1fb15be 100644 --- a/Content.Shared/CriminalRecords/Systems/SharedCriminalRecordsConsoleSystem.cs +++ b/Content.Shared/CriminalRecords/Systems/SharedCriminalRecordsConsoleSystem.cs @@ -3,16 +3,14 @@ using Content.Shared.Security; using Content.Shared.Security.Components; using Content.Shared.Station; using Content.Shared.StationRecords; +using Content.Shared.StationRecords.Systems; namespace Content.Shared.CriminalRecords.Systems; -/// -/// Station records aren't predicted, just exists for access. -/// public abstract partial class SharedCriminalRecordsConsoleSystem : EntitySystem { [Dependency] private SharedCriminalRecordsSystem _criminalRecords = default!; - [Dependency] private SharedStationRecordsSystem _records = default!; + [Dependency] private StationRecordsSystem _records = default!; [Dependency] private SharedStationSystem _station = default!; /// diff --git a/Content.Shared/Security/SecurityStatus.cs b/Content.Shared/Security/SecurityStatus.cs index 49fb059546..afcbd00fd4 100644 --- a/Content.Shared/Security/SecurityStatus.cs +++ b/Content.Shared/Security/SecurityStatus.cs @@ -1,4 +1,6 @@ -namespace Content.Shared.Security; +using Robust.Shared.Serialization; + +namespace Content.Shared.Security; /// /// Status used in Criminal Records. @@ -12,6 +14,7 @@ /// Discharged - the person has been released from prison /// Eliminated - the person has been eliminated and should not be healed /// +[Serializable, NetSerializable] public enum SecurityStatus : byte { None, diff --git a/Content.Server/StationRecords/Components/GeneralStationRecordConsoleComponent.cs b/Content.Shared/StationRecords/Components/GeneralStationRecordConsoleComponent.cs similarity index 70% rename from Content.Server/StationRecords/Components/GeneralStationRecordConsoleComponent.cs rename to Content.Shared/StationRecords/Components/GeneralStationRecordConsoleComponent.cs index a6356f0baa..03c21c0f02 100644 --- a/Content.Server/StationRecords/Components/GeneralStationRecordConsoleComponent.cs +++ b/Content.Shared/StationRecords/Components/GeneralStationRecordConsoleComponent.cs @@ -1,9 +1,8 @@ -using Content.Server.StationRecords.Systems; -using Content.Shared.StationRecords; +using Robust.Shared.GameStates; -namespace Content.Server.StationRecords.Components; +namespace Content.Shared.StationRecords.Components; -[RegisterComponent, Access(typeof(GeneralStationRecordConsoleSystem))] +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState] public sealed partial class GeneralStationRecordConsoleComponent : Component { /// @@ -22,6 +21,6 @@ public sealed partial class GeneralStationRecordConsoleComponent : Component /// /// Whether this Records Console is able to delete entries. /// - [DataField] + [DataField, AutoNetworkedField] public bool CanDeleteEntries; } diff --git a/Content.Shared/StationRecords/StationRecordKeyStorageComponent.cs b/Content.Shared/StationRecords/Components/StationRecordKeyStorageComponent.cs similarity index 91% rename from Content.Shared/StationRecords/StationRecordKeyStorageComponent.cs rename to Content.Shared/StationRecords/Components/StationRecordKeyStorageComponent.cs index 6509c223b6..157d841543 100644 --- a/Content.Shared/StationRecords/StationRecordKeyStorageComponent.cs +++ b/Content.Shared/StationRecords/Components/StationRecordKeyStorageComponent.cs @@ -1,7 +1,7 @@ using Robust.Shared.GameStates; using Robust.Shared.Serialization; -namespace Content.Shared.StationRecords; +namespace Content.Shared.StationRecords.Components; [RegisterComponent, NetworkedComponent] public sealed partial class StationRecordKeyStorageComponent : Component diff --git a/Content.Shared/StationRecords/Components/StationRecordsComponent.cs b/Content.Shared/StationRecords/Components/StationRecordsComponent.cs new file mode 100644 index 0000000000..a054d48d07 --- /dev/null +++ b/Content.Shared/StationRecords/Components/StationRecordsComponent.cs @@ -0,0 +1,15 @@ +using Content.Shared.StationRecords.Systems; +using Robust.Shared.GameStates; + +namespace Content.Shared.StationRecords.Components; + +[Access(typeof(StationRecordsSystem))] +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState(true)] +public sealed partial class StationRecordsComponent : Component +{ + // Every single record in this station, by key. + // Essentially a columnar database, but I really suck + // at implementing that so + [IncludeDataField, AutoNetworkedField] + public StationRecordSet Records = new(); +} diff --git a/Content.Shared/StationRecords/Events/GeneralRecordCreatedEvent.cs b/Content.Shared/StationRecords/Events/GeneralRecordCreatedEvent.cs new file mode 100644 index 0000000000..182ecf995e --- /dev/null +++ b/Content.Shared/StationRecords/Events/GeneralRecordCreatedEvent.cs @@ -0,0 +1,27 @@ +using Content.Shared.Preferences; + +namespace Content.Shared.StationRecords.Events; + +/// +/// Event raised after the player's general profile is created. +/// Systems that modify records on a station would have more use +/// listening to this event, as it contains the character's record key. +/// Also stores the general record reference, to save some time. +/// +[ByRefEvent] +public readonly record struct GeneralRecordCreatedEvent( + StationRecordKey Key, + GeneralStationRecord Record, + HumanoidCharacterProfile Profile) : IStationRecordEvent +{ + public EntityUid Station => Key.OriginStation; + + public readonly GeneralStationRecord Record = Record; + + /// + /// Profile for the related player. This is so that other systems can get further information + /// about the player character. + /// Optional - other systems should anticipate this. + /// + public readonly HumanoidCharacterProfile Profile = Profile; +} diff --git a/Content.Shared/StationRecords/Events/IStationRecordEvent.cs b/Content.Shared/StationRecords/Events/IStationRecordEvent.cs new file mode 100644 index 0000000000..16c54a0bbe --- /dev/null +++ b/Content.Shared/StationRecords/Events/IStationRecordEvent.cs @@ -0,0 +1,11 @@ +namespace Content.Shared.StationRecords.Events; + +/// +/// Base event for station record events. +/// +public interface IStationRecordEvent +{ + StationRecordKey Key { get; init; } + + EntityUid Station => Key.OriginStation; +} diff --git a/Content.Shared/StationRecords/Events/RecordModifiedEvent.cs b/Content.Shared/StationRecords/Events/RecordModifiedEvent.cs new file mode 100644 index 0000000000..293dd23e73 --- /dev/null +++ b/Content.Shared/StationRecords/Events/RecordModifiedEvent.cs @@ -0,0 +1,12 @@ +namespace Content.Shared.StationRecords.Events; + +/// +/// Event raised after a record is modified. This is to +/// inform other systems that records stored in this key +/// may have changed. +/// +[ByRefEvent] +public readonly record struct RecordModifiedEvent(StationRecordKey Key) : IStationRecordEvent +{ + public EntityUid Station => Key.OriginStation; +} diff --git a/Content.Shared/StationRecords/Events/RecordRemovedEvent.cs b/Content.Shared/StationRecords/Events/RecordRemovedEvent.cs new file mode 100644 index 0000000000..61aa815571 --- /dev/null +++ b/Content.Shared/StationRecords/Events/RecordRemovedEvent.cs @@ -0,0 +1,13 @@ +namespace Content.Shared.StationRecords.Events; + +/// +/// Event raised after a record is removed. Only the key is given +/// when the record is removed, so that any relevant systems/components +/// that store record keys can then remove the key from their internal +/// fields. +/// +[ByRefEvent] +public readonly record struct RecordRemovedEvent(StationRecordKey Key) : IStationRecordEvent +{ + public EntityUid Station => Key.OriginStation; +} diff --git a/Content.Shared/StationRecords/GeneralRecordsUi.cs b/Content.Shared/StationRecords/GeneralRecordsUi.cs index 2105c53df2..bbc65be279 100644 --- a/Content.Shared/StationRecords/GeneralRecordsUi.cs +++ b/Content.Shared/StationRecords/GeneralRecordsUi.cs @@ -8,63 +8,12 @@ public enum GeneralStationRecordConsoleKey : byte Key } -/// -/// General station records console state. There are a few states: -/// - SelectedKey null, Record null, RecordListing null -/// - The station record database could not be accessed. -/// - SelectedKey null, Record null, RecordListing non-null -/// - Records are populated in the database, or at least the station has -/// the correct component. -/// - SelectedKey non-null, Record null, RecordListing non-null -/// - The selected key does not have a record tied to it. -/// - SelectedKey non-null, Record non-null, RecordListing non-null -/// - The selected key has a record tied to it, and the record has been sent. -/// -/// - there is added new filters and so added new states -/// -SelectedKey null, Record null, RecordListing null, filters non-null -/// the station may have data, but they all did not pass through the filters -/// -/// Other states are erroneous. -/// -[Serializable, NetSerializable] -public sealed class GeneralStationRecordConsoleState : BoundUserInterfaceState -{ - /// - /// Current selected key. - /// Station is always the station that owns the console. - /// - public readonly uint? SelectedKey; - public readonly GeneralStationRecord? Record; - public readonly Dictionary? RecordListing; - public readonly StationRecordsFilter? Filter; - public readonly bool CanDeleteEntries; - - public GeneralStationRecordConsoleState(uint? key, - GeneralStationRecord? record, - Dictionary? recordListing, - StationRecordsFilter? newFilter, - bool canDeleteEntries) - { - SelectedKey = key; - Record = record; - RecordListing = recordListing; - Filter = newFilter; - CanDeleteEntries = canDeleteEntries; - } - - public GeneralStationRecordConsoleState() : this(null, null, null, null, false) - { - } - - public bool IsEmpty() => SelectedKey == null - && Record == null && RecordListing == null; -} - /// /// Select a specific crewmember's record, or deselect. /// Used by any kind of records console including general and criminal. /// [Serializable, NetSerializable] +[Obsolete("Make your station records UI properly predicted")] public sealed class SelectStationRecord : BoundUserInterfaceMessage { public readonly uint? SelectedKey; @@ -75,7 +24,6 @@ public sealed class SelectStationRecord : BoundUserInterfaceMessage } } - [Serializable, NetSerializable] public sealed class DeleteStationRecord : BoundUserInterfaceMessage { diff --git a/Content.Shared/StationRecords/GeneralStationRecord.cs b/Content.Shared/StationRecords/GeneralStationRecord.cs index 1306ddbe7b..1a3e5de998 100644 --- a/Content.Shared/StationRecords/GeneralStationRecord.cs +++ b/Content.Shared/StationRecords/GeneralStationRecord.cs @@ -8,7 +8,7 @@ namespace Content.Shared.StationRecords; /// [DataDefinition] [Serializable, NetSerializable] -public sealed partial record GeneralStationRecord +public sealed partial record GeneralStationRecord : StationRecord { /// /// Name tied to this station record. diff --git a/Content.Shared/StationRecords/SharedStationRecordsSystem.cs b/Content.Shared/StationRecords/SharedStationRecordsSystem.cs deleted file mode 100644 index e04de09d65..0000000000 --- a/Content.Shared/StationRecords/SharedStationRecordsSystem.cs +++ /dev/null @@ -1,101 +0,0 @@ -using System.Diagnostics.CodeAnalysis; - -namespace Content.Shared.StationRecords; - -public abstract class SharedStationRecordsSystem : EntitySystem -{ - public StationRecordKey? Convert((NetEntity, uint)? input) - { - return input == null ? null : Convert(input.Value); - } - - public (NetEntity, uint)? Convert(StationRecordKey? input) - { - return input == null ? null : Convert(input.Value); - } - - public StationRecordKey Convert((NetEntity, uint) input) - { - return new StationRecordKey(input.Item2, GetEntity(input.Item1)); - } - public (NetEntity, uint) Convert(StationRecordKey input) - { - return (GetNetEntity(input.OriginStation), input.Id); - } - - public List<(NetEntity, uint)> Convert(ICollection input) - { - var result = new List<(NetEntity, uint)>(input.Count); - foreach (var entry in input) - { - result.Add(Convert(entry)); - } - return result; - } - - public List Convert(ICollection<(NetEntity, uint)> input) - { - var result = new List(input.Count); - foreach (var entry in input) - { - result.Add(Convert(entry)); - } - return result; - } - - /// - /// Try to get a record from this station's record entries, - /// from the provided station record key. Will always return - /// null if the key does not match the station. - /// - /// Station and key to try and index from the record set. - /// The resulting entry. - /// Station record component. - /// Type to get from the record set. - /// True if the record was obtained, false otherwise. Always false on client. - public bool TryGetRecord(StationRecordKey key, [NotNullWhen(true)] out T? entry, StationRecordsComponent? records = null) - { - entry = default; - - if (!Resolve(key.OriginStation, ref records)) - return false; - - return records.Records.TryGetRecordEntry(key.Id, out entry); - } - - /// - /// Gets all records of a specific type from a station. - /// - /// The station to get the records from. - /// Station records component. - /// Type of record to fetch - /// Enumerable of pairs with a station record key, and the entry in question of type T. Always empty on client. - public IEnumerable<(uint, T)> GetRecordsOfType(EntityUid station, StationRecordsComponent? records = null) - { - if (!Resolve(station, ref records)) - return Array.Empty<(uint, T)>(); - - return records.Records.GetRecordsOfType(); - } - - /// - /// Returns an id if a record with the same name exists. - /// - /// - /// Linear search so O(n) time complexity. - /// - /// Returns a station record id. Always null on client. - public uint? GetRecordByName(EntityUid station, string name, StationRecordsComponent? records = null) - { - if (!Resolve(station, ref records, false)) - return null; - - foreach (var (id, record) in GetRecordsOfType(station, records)) - { - if (record.Name == name) - return id; - } - - return null; - } -} diff --git a/Content.Shared/StationRecords/StationRecord.cs b/Content.Shared/StationRecords/StationRecord.cs new file mode 100644 index 0000000000..e717ffc8b9 --- /dev/null +++ b/Content.Shared/StationRecords/StationRecord.cs @@ -0,0 +1,7 @@ +using Robust.Shared.Serialization; + +namespace Content.Shared.StationRecords; + +[ImplicitDataDefinitionForInheritors] +[Serializable, NetSerializable] +public abstract partial record StationRecord; diff --git a/Content.Shared/StationRecords/StationRecordKeyStorageSystem.cs b/Content.Shared/StationRecords/StationRecordKeyStorageSystem.cs deleted file mode 100644 index 6851866261..0000000000 --- a/Content.Shared/StationRecords/StationRecordKeyStorageSystem.cs +++ /dev/null @@ -1,81 +0,0 @@ -using Robust.Shared.GameStates; - -namespace Content.Shared.StationRecords; - -public sealed partial class StationRecordKeyStorageSystem : EntitySystem -{ - [Dependency] private SharedStationRecordsSystem _records = default!; - - public override void Initialize() - { - base.Initialize(); - - SubscribeLocalEvent(OnGetState); - SubscribeLocalEvent(OnHandleState); - } - - private void OnGetState(EntityUid uid, StationRecordKeyStorageComponent component, ref ComponentGetState args) - { - args.State = new StationRecordKeyStorageComponentState(_records.Convert(component.Key)); - } - - private void OnHandleState(EntityUid uid, StationRecordKeyStorageComponent component, ref ComponentHandleState args) - { - if (args.Current is not StationRecordKeyStorageComponentState state) - return; - component.Key = _records.Convert(state.Key); - } - - /// - /// Assigns a station record key to an entity. - /// - /// - /// - /// - public void AssignKey(EntityUid uid, StationRecordKey key, StationRecordKeyStorageComponent? keyStorage = null) - { - if (!Resolve(uid, ref keyStorage)) - { - return; - } - - keyStorage.Key = key; - Dirty(uid, keyStorage); - } - - /// - /// Removes a station record key from an entity. - /// - /// - /// - /// - public StationRecordKey? RemoveKey(EntityUid uid, StationRecordKeyStorageComponent? keyStorage = null) - { - if (!Resolve(uid, ref keyStorage) || keyStorage.Key == null) - { - return null; - } - - var key = keyStorage.Key; - keyStorage.Key = null; - Dirty(uid, keyStorage); - - return key; - } - - /// - /// Checks if an entity currently contains a station record key. - /// - /// - /// - /// - public bool CheckKey(EntityUid uid, StationRecordKeyStorageComponent? keyStorage = null) - { - if (!Resolve(uid, ref keyStorage)) - { - return false; - } - - return keyStorage.Key != null; - } -} diff --git a/Content.Shared/StationRecords/StationRecordSet.cs b/Content.Shared/StationRecords/StationRecordSet.cs index 169e5843d2..ad806a24a4 100644 --- a/Content.Shared/StationRecords/StationRecordSet.cs +++ b/Content.Shared/StationRecords/StationRecordSet.cs @@ -1,5 +1,6 @@ using System.Diagnostics.CodeAnalysis; using System.Linq; +using Robust.Shared.Serialization; using Robust.Shared.Utility; namespace Content.Shared.StationRecords; @@ -10,7 +11,7 @@ namespace Content.Shared.StationRecords; /// an entity that stores a reference to it. /// A StationRecordKey has both the station entity (use to get the record set) and id (use for this). /// -[DataDefinition] +[DataDefinition, Serializable, NetSerializable] public sealed partial class StationRecordSet { [DataField("currentRecordId")] @@ -33,7 +34,7 @@ public sealed partial class StationRecordSet /// Dictionary between a record's type and then each record indexed by id. /// [DataField] - private Dictionary> _tables = new(); + private Dictionary> _tables = new(); /// /// Gets all records of a specific type stored in the record set. @@ -42,12 +43,12 @@ public sealed partial class StationRecordSet /// An enumerable object that contains a pair of both a station key, and the record associated with it. public IEnumerable<(uint, T)> GetRecordsOfType() { - if (!_tables.ContainsKey(typeof(T))) + if (!_tables.ContainsKey(typeof(T).Name)) { yield break; } - foreach (var (key, entry) in _tables[typeof(T)]) + foreach (var (key, entry) in _tables[typeof(T).Name]) { if (entry is not T cast) { @@ -66,11 +67,8 @@ public sealed partial class StationRecordSet /// /// Entry to add. /// Type of the entry that's being added. - public uint? AddRecordEntry(T entry) + public uint? AddRecordEntry(T entry) where T : StationRecord { - if (entry == null) - return null; - var key = _currentRecordId++; AddRecordEntry(key, entry); return key; @@ -82,13 +80,10 @@ public sealed partial class StationRecordSet /// Key id for the record. /// Entry to add. /// Type of the entry that's being added. - public void AddRecordEntry(uint key, T entry) + public void AddRecordEntry(uint key, T entry) where T : StationRecord { - if (entry == null) - return; - Keys.Add(key); - _tables.GetOrNew(typeof(T))[key] = entry; + _tables.GetOrNew(typeof(T).Name)[key] = entry; } /// @@ -98,12 +93,12 @@ public sealed partial class StationRecordSet /// The entry that is retrieved from the record set. /// The type of entry to search for. /// True if the record exists and was retrieved, false otherwise. - public bool TryGetRecordEntry(uint key, [NotNullWhen(true)] out T? entry) + public bool TryGetRecordEntry(uint key, [NotNullWhen(true)] out T? entry) where T : StationRecord { - entry = default; + entry = null; if (!Keys.Contains(key) - || !_tables.TryGetValue(typeof(T), out var table) + || !_tables.TryGetValue(typeof(T).Name, out var table) || !table.TryGetValue(key, out var entryObject)) { return false; @@ -124,7 +119,7 @@ public sealed partial class StationRecordSet public bool HasRecordEntry(uint key) { return Keys.Contains(key) - && _tables.TryGetValue(typeof(T), out var table) + && _tables.TryGetValue(typeof(T).Name, out var table) && table.ContainsKey(key); } diff --git a/Content.Shared/StationRecords/StationRecordsComponent.cs b/Content.Shared/StationRecords/StationRecordsComponent.cs deleted file mode 100644 index 66c60dddc6..0000000000 --- a/Content.Shared/StationRecords/StationRecordsComponent.cs +++ /dev/null @@ -1,12 +0,0 @@ -namespace Content.Shared.StationRecords; - -[Access(typeof(SharedStationRecordsSystem))] -[RegisterComponent] -public sealed partial class StationRecordsComponent : Component -{ - // Every single record in this station, by key. - // Essentially a columnar database, but I really suck - // at implementing that so - [IncludeDataField] - public StationRecordSet Records = new(); -} diff --git a/Content.Shared/StationRecords/StationRecordsFilter.cs b/Content.Shared/StationRecords/StationRecordsFilter.cs index 7a09eaa985..8f9473b0e5 100644 --- a/Content.Shared/StationRecords/StationRecordsFilter.cs +++ b/Content.Shared/StationRecords/StationRecordsFilter.cs @@ -5,8 +5,8 @@ namespace Content.Shared.StationRecords; [Serializable, NetSerializable] public sealed class StationRecordsFilter { - public StationRecordFilterType Type = StationRecordFilterType.Name; - public string Value = ""; + public StationRecordFilterType Type; + public string Value; public StationRecordsFilter(StationRecordFilterType filterType, string newValue = "") { diff --git a/Content.Shared/StationRecords/Systems/SharedGeneralStationRecordConsoleSystem.cs b/Content.Shared/StationRecords/Systems/SharedGeneralStationRecordConsoleSystem.cs new file mode 100644 index 0000000000..8177045c3f --- /dev/null +++ b/Content.Shared/StationRecords/Systems/SharedGeneralStationRecordConsoleSystem.cs @@ -0,0 +1,46 @@ +using Content.Shared.Station; +using Content.Shared.StationRecords.Components; +using Content.Shared.StationRecords.Events; + +namespace Content.Shared.StationRecords.Systems; + +public abstract partial class SharedGeneralStationRecordConsoleSystem : EntitySystem +{ + [Dependency] protected SharedStationSystem StationSys = default!; + [Dependency] protected StationRecordsSystem StationRecordsSys = default!; + + [Dependency] protected EntityQuery RecordsQuery = default!; + + [SubscribeLocalEvent] + private void OnRecordModified(Entity ent, ref RecordModifiedEvent args) + { + UpdateUserInterface(ent); + } + + [SubscribeLocalEvent] + private void OnGeneralRecordCreated(Entity ent, ref GeneralRecordCreatedEvent args) + { + UpdateUserInterface(ent); + } + + [SubscribeLocalEvent] + private void OnRecordRemoved(Entity ent, ref RecordRemovedEvent args) + { + UpdateUserInterface(ent); + } + + [SubscribeLocalEvent] + private void OnRecordDelete(Entity ent, ref DeleteStationRecord args) + { + if (!ent.Comp.CanDeleteEntries) + return; + + var owning = StationSys.GetOwningStation(ent.Owner); + if (owning != null) + StationRecordsSys.RemoveRecord(new StationRecordKey(args.Id, owning.Value)); + + UpdateUserInterface(ent); + } + + protected virtual void UpdateUserInterface(Entity ent) { } +} diff --git a/Content.Shared/StationRecords/Systems/StationRecordKeyStorageSystem.cs b/Content.Shared/StationRecords/Systems/StationRecordKeyStorageSystem.cs new file mode 100644 index 0000000000..a1c49f2813 --- /dev/null +++ b/Content.Shared/StationRecords/Systems/StationRecordKeyStorageSystem.cs @@ -0,0 +1,65 @@ +using Content.Shared.StationRecords.Components; +using Robust.Shared.GameStates; + +namespace Content.Shared.StationRecords.Systems; + +public sealed partial class StationRecordKeyStorageSystem : EntitySystem +{ + [Dependency] private StationRecordsSystem _records = default!; + + [Dependency] private EntityQuery _storageQuery = default!; + + [SubscribeLocalEvent] + private void OnGetState(Entity ent, ref ComponentGetState args) + { + args.State = new StationRecordKeyStorageComponentState(_records.Convert(ent.Comp.Key)); + } + + [SubscribeLocalEvent] + private void OnHandleState(Entity ent, ref ComponentHandleState args) + { + if (args.Current is not StationRecordKeyStorageComponentState state) + return; + + ent.Comp.Key = _records.Convert(state.Key); + } + + /// + /// Assigns a station record key to an entity. + /// + public void AssignKey(Entity ent, StationRecordKey key) + { + if (!_storageQuery.Resolve(ent, ref ent.Comp)) + return; + + ent.Comp.Key = key; + Dirty(ent); + } + + /// + /// Removes a station record key from an entity. + /// + public StationRecordKey? RemoveKey(Entity ent) + { + if (!_storageQuery.Resolve(ent, ref ent.Comp) + || ent.Comp.Key == null) + return null; + + var key = ent.Comp.Key; + ent.Comp.Key = null; + Dirty(ent); + + return key; + } + + /// + /// Checks if an entity currently contains a station record key. + /// + public bool CheckKey(Entity ent) + { + if (!_storageQuery.Resolve(ent, ref ent.Comp)) + return false; + + return ent.Comp.Key != null; + } +} diff --git a/Content.Shared/StationRecords/Systems/StationRecordsSystem.API.cs b/Content.Shared/StationRecords/Systems/StationRecordsSystem.API.cs new file mode 100644 index 0000000000..e80200c151 --- /dev/null +++ b/Content.Shared/StationRecords/Systems/StationRecordsSystem.API.cs @@ -0,0 +1,203 @@ +using System.Diagnostics.CodeAnalysis; +using Content.Shared.Random.Helpers; +using Content.Shared.StationRecords.Components; +using Content.Shared.StationRecords.Events; +using Robust.Shared.Random; + +namespace Content.Shared.StationRecords.Systems; + +public sealed partial class StationRecordsSystem +{ + /// + /// Set the station records key for an id/pda. + /// + public void SetIdKey(EntityUid? uid, StationRecordKey key) + { + if (uid is not {} idUid) + return; + + var keyStorageEntity = idUid; + if (_pdaQuery.TryComp(idUid, out var pda) && pda.ContainedId is {} id) + { + keyStorageEntity = id; + } + + _keyStorage.AssignKey(keyStorageEntity, key); + } + + /// + /// Removes a record from this station. + /// + /// The station and key to remove. + /// Station records component. + /// True if the record was removed, false otherwise. + public bool RemoveRecord(StationRecordKey key, StationRecordsComponent? records = null) + { + if (!_recordsQuery.Resolve(key.OriginStation, ref records)) + return false; + + if (!records.Records.RemoveAllRecords(key.Id)) + return false; + + var ev = new RecordRemovedEvent(key); + RaiseLocalEvent(ref ev); + + Dirty(key.OriginStation, records); + return true; + } + + /// + /// Gets a random record from the station's record entries. + /// + /// The EntityId of the station from which you want to get the record. + /// The resulting entry. + /// Type to get from the record set. + /// True if a record was obtained. False otherwise. + public bool TryGetRandomRecord(Entity ent, [NotNullWhen(true)] out T? entry) where T : StationRecord + { + entry = default; + + if (!_recordsQuery.Resolve(ent.Owner, ref ent.Comp)) + return false; + + if (ent.Comp.Records.Keys.Count == 0) + return false; + + var random = SharedRandomExtensions.PredictedRandom(_timing, GetNetEntity(ent.Owner)); + var key = random.Pick(ent.Comp.Records.Keys); + + return ent.Comp.Records.TryGetRecordEntry(key, out entry); + } + + /// + /// Get the name for a record, or an empty string if it has no record. + /// + public string RecordName(StationRecordKey key) + { + return !TryGetRecord(key, out var record) ? string.Empty : record.Name; + } + + /// + /// Adds a new record entry to a station's record set. + /// + /// The station to add the record to. + /// The record to add. + /// The type of record to add. + public StationRecordKey AddRecordEntry(Entity station, T record) where T : StationRecord + { + if (!_recordsQuery.Resolve(station, ref station.Comp)) + return StationRecordKey.Invalid; + + var id = station.Comp.Records.AddRecordEntry(record); + Dirty(station); + return id == null ? StationRecordKey.Invalid : new StationRecordKey(id.Value, station); + } + + /// + /// Adds a record to an existing entry. + /// + /// The station and id of the existing entry. + /// The record to add. + /// Station records component. + /// The type of record to add. + public void AddRecordEntry(StationRecordKey key, + T record, + StationRecordsComponent? records = null) where T : StationRecord + { + if (!_recordsQuery.Resolve(key.OriginStation, ref records)) + return; + + records.Records.AddRecordEntry(key.Id, record); + Dirty(key.OriginStation, records); + } + + /// + /// Synchronizes a station's records with any systems that need it. + /// + /// The station to synchronize any recently accessed records with. + public void Synchronize(Entity station) + { + if (!_recordsQuery.Resolve(station, ref station.Comp)) + return; + + foreach (var key in station.Comp.Records.GetRecentlyAccessed()) + { + var ev = new RecordModifiedEvent(new StationRecordKey(key, station)); + RaiseLocalEvent(ref ev); + } + + station.Comp.Records.ClearRecentlyAccessed(); + Dirty(station); + } + + /// + /// Synchronizes a single record's entries for a station. + /// + /// The station and id of the record + /// Station records component. + public void Synchronize(StationRecordKey key, StationRecordsComponent? records = null) + { + if (!_recordsQuery.Resolve(key.OriginStation, ref records)) + return; + + var ev = new RecordModifiedEvent(key); + RaiseLocalEvent(ref ev); + + records.Records.RemoveFromRecentlyAccessed(key.Id); + Dirty(key.OriginStation, records); + } + + /// + /// Try to get a record from this station's record entries, + /// from the provided station record key. Will always return + /// null if the key does not match the station. + /// + /// Station and key to try and index from the record set. + /// The resulting entry. + /// Station record component. + /// Type to get from the record set. + /// True if the record was obtained, false otherwise. Always false on client. + public bool TryGetRecord(StationRecordKey key, [NotNullWhen(true)] out T? entry, StationRecordsComponent? records = null) where T : StationRecord + { + entry = null; + if (!_recordsQuery.Resolve(key.OriginStation, ref records)) + return false; + + return records.Records.TryGetRecordEntry(key.Id, out entry); + } + + /// + /// Gets all records of a specific type from a station. + /// + /// The station to get the records from. + /// Type of record to fetch + /// Enumerable of pairs with a station record key, and the entry in question of type T. Always empty on client. + public IEnumerable<(uint, T)> GetRecordsOfType(Entity station) + { + if (!_recordsQuery.Resolve(station, ref station.Comp)) + return Array.Empty<(uint, T)>(); + + return station.Comp.Records.GetRecordsOfType(); + } + + /// + /// Returns an id if a record with the same name exists. + /// + /// + /// Linear search so O(n) time complexity. + /// + /// Returns a station record id. Always null on client. + public uint? GetRecordByName(Entity station, string name) + { + if (!_recordsQuery.Resolve(station, ref station.Comp, false)) + return null; + + foreach (var (id, record) in GetRecordsOfType(station)) + { + if (record.Name == name) + return id; + } + + return null; + } +} diff --git a/Content.Shared/StationRecords/Systems/StationRecordsSystem.Helpers.cs b/Content.Shared/StationRecords/Systems/StationRecordsSystem.Helpers.cs new file mode 100644 index 0000000000..dc5861cbd3 --- /dev/null +++ b/Content.Shared/StationRecords/Systems/StationRecordsSystem.Helpers.cs @@ -0,0 +1,62 @@ +using Content.Shared.StationRecords.Components; + +namespace Content.Shared.StationRecords.Systems; + +public sealed partial class StationRecordsSystem +{ + /// + /// Checks if a record should be skipped given a filter. + /// Takes general record since even if you are using this for e.g. criminal records, + /// you don't want to duplicate basic info like name and dna. + /// Station records lets you do this nicely with multiple types having their own data. + /// + public bool IsSkipped(StationRecordsFilter? filter, GeneralStationRecord someRecord) + { + // if nothing is being filtered, show everything + if (filter == null) + return false; + if (filter.Value.Length == 0) + return false; + + var filterLowerCaseValue = filter.Value.ToLower(); + + return filter.Type switch + { + StationRecordFilterType.Name => + !someRecord.Name.Contains(filterLowerCaseValue, StringComparison.OrdinalIgnoreCase), + StationRecordFilterType.Job => + !someRecord.JobTitle.Contains(filterLowerCaseValue, StringComparison.OrdinalIgnoreCase), + StationRecordFilterType.Species => + !someRecord.Species.Contains(filterLowerCaseValue, StringComparison.OrdinalIgnoreCase), + StationRecordFilterType.Prints => someRecord.Fingerprint != null + && IsFilterWithSomeCodeValue(someRecord.Fingerprint, filterLowerCaseValue), + StationRecordFilterType.DNA => someRecord.DNA != null + && IsFilterWithSomeCodeValue(someRecord.DNA, filterLowerCaseValue), + _ => throw new IndexOutOfRangeException(nameof(filter.Type)), + }; + } + + private bool IsFilterWithSomeCodeValue(string value, string filter) + { + return !value.StartsWith(filter, StringComparison.OrdinalIgnoreCase); + } + + /// + /// Build a record listing of id to name for a station and filter. + /// + public Dictionary BuildListing(Entity station, StationRecordsFilter? filter) + { + var listing = new Dictionary(); + + var records = GetRecordsOfType(station.AsNullable()); + foreach (var pair in records) + { + if (IsSkipped(filter, pair.Item2)) + continue; + + listing.Add(pair.Item1, pair.Item2.Name); + } + + return listing; + } +} diff --git a/Content.Shared/StationRecords/Systems/StationRecordsSystem.cs b/Content.Shared/StationRecords/Systems/StationRecordsSystem.cs new file mode 100644 index 0000000000..178ba9dc10 --- /dev/null +++ b/Content.Shared/StationRecords/Systems/StationRecordsSystem.cs @@ -0,0 +1,229 @@ +using Content.Shared.Access.Components; +using Content.Shared.Access.Systems; +using Content.Shared.Forensics.Components; +using Content.Shared.GameTicking; +using Content.Shared.Inventory; +using Content.Shared.PDA; +using Content.Shared.Preferences; +using Content.Shared.Roles; +using Content.Shared.StationRecords.Components; +using Content.Shared.StationRecords.Events; +using Robust.Shared.Enums; +using Robust.Shared.Timing; + +namespace Content.Shared.StationRecords.Systems; + +/// +/// Station records. +/// +/// A station record is tied to an ID card, or anything that holds +/// a station record's key. This key will determine access to a +/// station record set's record entries, and it is imperative not +/// to lose the item that holds the key under any circumstance. +/// +/// Records are mostly a roleplaying tool, but can have some +/// functionality as well (i.e., security records indicating that +/// a specific person holding an ID card with a linked key is +/// currently under warrant, showing a crew manifest with user +/// settable, custom titles). +/// +/// General records are tied into this system, as most crewmembers +/// should have a general record - and most systems should probably +/// depend on this general record being created. This is subject +/// to change. +/// +public sealed partial class StationRecordsSystem : EntitySystem +{ + [Dependency] private IGameTiming _timing = default!; + [Dependency] private InventorySystem _inventory = default!; + [Dependency] private StationRecordKeyStorageSystem _keyStorage = default!; + [Dependency] private SharedIdCardSystem _idCard = default!; + + [Dependency] private EntityQuery _idCardQuery = default!; + [Dependency] private EntityQuery _pdaQuery = default!; + [Dependency] private EntityQuery _recordsQuery = default!; + [Dependency] private EntityQuery _keyStorageQuery = default!; + [Dependency] private EntityQuery _fingerprintQuery = default!; + [Dependency] private EntityQuery _dnaQuery = default!; + + [SubscribeLocalEvent] + private void OnPlayerSpawn(PlayerSpawnCompleteEvent args) + { + if (!_recordsQuery.TryComp(args.Station, out var stationRecords)) + return; + + CreateGeneralRecord((args.Station, stationRecords), args.Mob, args.Profile, args.JobId); + } + + [SubscribeLocalEvent] + private void OnRename(ref EntityRenamedEvent ev) + { + // When a player gets renamed their card gets changed to match. + // Unfortunately this means that an event is called for it as well, and since TryFindIdCard will succeed if the + // given entity is a card and the card itself is the key the record will be mistakenly renamed to the card's name + // if we don't return early. + // We also do not include the PDA itself being renamed, as that triggers the same event (e.g. for chameleon PDAs). + if (_idCardQuery.HasComp(ev.Uid) + || _pdaQuery.HasComp(ev.Uid)) + return; + + if (!_idCard.TryFindIdCard(ev.Uid, out var idCard)) + return; + + if (!_keyStorageQuery.TryComp(idCard, out var keyStorage) + || keyStorage.Key is not { } key) + return; + + if (TryGetRecord(key, out var generalRecord)) + generalRecord.Name = ev.NewName; + + Synchronize(key); + } + + private void CreateGeneralRecord( + Entity station, + EntityUid player, + HumanoidCharacterProfile profile, + string? jobId) + { + // TODO make PlayerSpawnCompleteEvent.JobId a ProtoId + if (string.IsNullOrEmpty(jobId) + || !ProtoMan.HasIndex(jobId)) + return; + + if (!_inventory.TryGetSlotEntity(player, "id", out var idUid)) + return; + + _fingerprintQuery.TryComp(player, out var fingerprintComponent); + _dnaQuery.TryComp(player, out var dnaComponent); + + CreateGeneralRecord( + station, + idUid.Value, + profile.Name, + profile.Age, + profile.Species, + profile.Gender, + jobId, + fingerprintComponent?.Fingerprint, + dnaComponent?.DNA, + profile); + } + + /// + /// Create a general record to store in a station's record set. + /// + /// + /// This is tied into the record system, as any crew member's + /// records should generally be dependent on some generic + /// record with the bare minimum of information involved. + /// + /// The entity uid of the station. + /// The entity uid of an entity's ID card. Can be null. + /// Name of the character. + /// Species of the character. + /// Gender of the character. + /// + /// The job to initially tie this record to. This must be a valid job loaded in, otherwise + /// this call will cause an exception. Ensure that a general record starts out with a job + /// that is currently a valid job prototype. + /// + /// Fingerprint of the character. + /// DNA of the character. + /// + /// + /// Profile for the related player. This is so that other systems can get further information + /// about the player character. + /// Optional - other systems should anticipate this. + /// + public void CreateGeneralRecord( + Entity station, + EntityUid? idUid, + string name, + int age, + string species, + Gender gender, + string jobId, + string? mobFingerprint, + string? dna, + HumanoidCharacterProfile profile) + { + if (!ProtoMan.TryIndex(jobId, out var jobPrototype)) + throw new ArgumentException($"Invalid job prototype ID: {jobId}"); + + // when adding a record that already exists use the old one + // this happens when respawning as the same character + if (GetRecordByName(station.AsNullable(), name) is {} id) + { + SetIdKey(idUid, new StationRecordKey(id, station)); + return; + } + + var record = new GeneralStationRecord + { + Name = name, + Age = age, + JobTitle = jobPrototype.LocalizedName, + JobIcon = jobPrototype.Icon, + JobPrototype = jobId, + Species = species, + Gender = gender, + DisplayPriority = jobPrototype.RealDisplayWeight, + Fingerprint = mobFingerprint, + DNA = dna + }; + + var key = AddRecordEntry(station.AsNullable(), record); + if (!key.IsValid()) + { + Log.Warning($"Failed to add general record entry for {name}"); + return; + } + + SetIdKey(idUid, key); + + var ev = new GeneralRecordCreatedEvent(key, record, profile); + RaiseLocalEvent(ref ev); + + Dirty(station); + } + + public StationRecordKey? Convert((NetEntity, uint)? input) + { + return input == null ? null : Convert(input.Value); + } + + public (NetEntity, uint)? Convert(StationRecordKey? input) + { + return input == null ? null : Convert(input.Value); + } + + public StationRecordKey Convert((NetEntity, uint) input) + { + return new StationRecordKey(input.Item2, GetEntity(input.Item1)); + } + public (NetEntity, uint) Convert(StationRecordKey input) + { + return (GetNetEntity(input.OriginStation), input.Id); + } + + public List<(NetEntity, uint)> Convert(ICollection input) + { + var result = new List<(NetEntity, uint)>(input.Count); + foreach (var entry in input) + { + result.Add(Convert(entry)); + } + return result; + } + + public List Convert(ICollection<(NetEntity, uint)> input) + { + var result = new List(input.Count); + foreach (var entry in input) + { + result.Add(Convert(entry)); + } + return result; + } +} diff --git a/SpaceStation14.slnx.DotSettings b/SpaceStation14.slnx.DotSettings index 9a6a58e5f5..ffbc5254c4 100644 --- a/SpaceStation14.slnx.DotSettings +++ b/SpaceStation14.slnx.DotSettings @@ -55,6 +55,7 @@ AL BB CC + DNA FTL GC GD From 5f1a61c0ff60b90de5b62bbcbde6e5c86c00cfc1 Mon Sep 17 00:00:00 2001 From: B_Kirill <153602297+B-Kirill@users.noreply.github.com> Date: Fri, 17 Jul 2026 14:37:30 +1000 Subject: [PATCH 042/108] Fix puddles not being removed when tile changes to lattice (#44715) --- Content.Shared/Fluids/SharedPuddleSystem.cs | 23 +++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/Content.Shared/Fluids/SharedPuddleSystem.cs b/Content.Shared/Fluids/SharedPuddleSystem.cs index 12576cb755..58997ec618 100644 --- a/Content.Shared/Fluids/SharedPuddleSystem.cs +++ b/Content.Shared/Fluids/SharedPuddleSystem.cs @@ -10,6 +10,7 @@ using Content.Shared.Examine; using Content.Shared.FixedPoint; using Content.Shared.Fluids.Components; using Content.Shared.Friction; +using Content.Shared.Maps; using Content.Shared.Movement.Components; using Content.Shared.Movement.Events; using Content.Shared.Movement.Systems; @@ -42,10 +43,13 @@ public abstract partial class SharedPuddleSystem : EntitySystem [Dependency] private StepTriggerSystem _stepTrigger = default!; [Dependency] private TileFrictionController _tile = default!; [Dependency] private INetManager _net = default!; + [Dependency] private SharedMapSystem _map = default!; + [Dependency] private TurfSystem _turf = default!; [Dependency] private EntityQuery _stepTriggerQuery = default!; [Dependency] private EntityQuery _reactiveQuery = default!; [Dependency] private EntityQuery _evaporationQuery = default!; + [Dependency] private EntityQuery _puddleQuery = default!; private ProtoId[] _standoutReagents = []; @@ -184,6 +188,25 @@ public abstract partial class SharedPuddleSystem : EntitySystem ent.Comp.Solution = null; } + [SubscribeLocalEvent] + private void OnTileChanged(ref TileChangedEvent ev) + { + foreach (var change in ev.Changes) + { + if (!_turf.IsSpace(change.NewTile)) + continue; + + var anchored = _map.GetAnchoredEntitiesEnumerator(ev.Entity, ev.Entity.Comp, change.GridIndices); + while (anchored.MoveNext(out var ent)) + { + if (!_puddleQuery.HasComponent(ent)) + continue; + + PredictedQueueDel(ent); + } + } + } + private void UpdateAppearance(Entity ent) { var (uid, puddle, appearance) = ent; From 8f190738f1d89169655698992cabbf3c30c62852 Mon Sep 17 00:00:00 2001 From: psykana <36602558+psykana@users.noreply.github.com> Date: Fri, 17 Jul 2026 06:06:37 +0100 Subject: [PATCH 043/108] Fix GetInStation filter (#44686) * worldPos * GetInOwningStation: pass range --- Content.Server/Station/Systems/StationSystem.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Content.Server/Station/Systems/StationSystem.cs b/Content.Server/Station/Systems/StationSystem.cs index fa7d9c76fa..9169762c01 100644 --- a/Content.Server/Station/Systems/StationSystem.cs +++ b/Content.Server/Station/Systems/StationSystem.cs @@ -195,7 +195,7 @@ public sealed partial class StationSystem : SharedStationSystem if (TryComp(station, out var data)) { - return GetInStation(data); + return GetInStation(data, range); } return Filter.Empty(); @@ -232,11 +232,11 @@ public sealed partial class StationSystem : SharedStationSystem } var (worldPos, worldRot) = _transform.GetWorldPositionRotation(gridXform); - var localBounds = grid.LocalAABB.Enlarged(range); + var worldBounds = grid.LocalAABB.Enlarged(range).Translated(worldPos); // Create a rotated box using the grid's transform var rotatedBounds = new Box2Rotated( - localBounds, + worldBounds, worldRot, worldPos); From 42143bf0a0488e45ee2e04982c5e9373b2668ac0 Mon Sep 17 00:00:00 2001 From: Hitlinemoss <209321380+Hitlinemoss@users.noreply.github.com> Date: Fri, 17 Jul 2026 01:20:28 -0400 Subject: [PATCH 044/108] Cleanup and rewrite of department/job descriptions (#44646) * Reorganized job-description.ftl, and updated job descriptions themselves * Touchup on job descriptions + updated department descriptions * More job description tweaks * Apply suggestions from code review Co-authored-by: AJCM-git <60196617+AJCM-git@users.noreply.github.com> --------- Co-authored-by: AJCM-git <60196617+AJCM-git@users.noreply.github.com> --- .../Locale/en-US/job/department-desc.ftl | 12 +- .../Locale/en-US/job/job-description.ftl | 108 ++++++++++-------- 2 files changed, 68 insertions(+), 52 deletions(-) diff --git a/Resources/Locale/en-US/job/department-desc.ftl b/Resources/Locale/en-US/job/department-desc.ftl index 6357727432..798992037c 100644 --- a/Resources/Locale/en-US/job/department-desc.ftl +++ b/Resources/Locale/en-US/job/department-desc.ftl @@ -1,10 +1,10 @@ -department-Cargo-description = Complete bounties, earn Spessos, and order useful supplies for the crew. -department-Civilian-description = Perform small helpful tasks to keep the station sane and well catered. +department-Cargo-description = Acquire and deliver useful supplies for the rest of the station. +department-Civilian-description = Attend to the crew's basic physical and psychological needs. department-Command-description = Manage the crew and keep them working efficiently. department-CentralCommand-description = Manage the crew and keep them working efficiently. -department-Engineering-description = Keep the power on and the station operational. +department-Engineering-description = Maintain and repair the station. department-Medical-description = Keep the crew healthy. -department-Security-description = Keep the peace around the station. -department-Science-description = Research artifacts and anomalies to invent new equipment for the station -department-Silicon-description = Obey your laws and serve the crew. +department-Security-description = Protect the station and keep the peace. +department-Science-description = Research and develop new technologies for the station. +department-Silicon-description = Fulfill the terms of your installed lawset. department-Specific-description = Jobs that not all stations have. diff --git a/Resources/Locale/en-US/job/job-description.ftl b/Resources/Locale/en-US/job/job-description.ftl index 15a9c9a173..5ffca9a0cb 100644 --- a/Resources/Locale/en-US/job/job-description.ftl +++ b/Resources/Locale/en-US/job/job-description.ftl @@ -1,47 +1,63 @@ -job-description-technical-assistant = Learn the basics of managing the station's power, as well as repairing the station's hull. -job-description-atmostech = Optimize the station's atmospherics setup, and synthesize rare gases to use or sell. -job-description-bartender = Manage the bar and keep it lively, give out drinks, and listen to the crew's stories. -job-description-botanist = Grow food for the chef, drugs for medbay, and other plants to keep yourself entertained. -job-description-borg = Half-human, Half-machine. Follow your laws, serve the crew, and hound the science team for upgrades. -job-description-brigmedic = Fight in the rear of the security service, for the lives of your comrades! You are the first and last hope of your squad. Hippocrates bless you. -job-description-cadet = Learn the basics of arresting criminals and managing the brig. Listen to your supervisors and feel free to ask them for any help. -job-description-captain = Keep the station running, delegate work to the other heads of staff, and exert your will. -job-description-cargotech = Deal with requisitions and deliveries, pilot the cargo shuttle to the trade station and back, and work with others to make ludicrous amounts of cash and then waste it all gambling. -job-description-ce = Manage the Engineering department to ensure power, atmospherics, and the hull are in perfect shape. -job-description-centcommoff = Act as an ambassador to the newest state-of-the-art space station in Nanotrasen's fleet. -job-description-chaplain = Preach the good word of your deity and religion, and conduct spiritual healing and miracles with your bible. -job-description-chef = Keep the station fed with a variety of food items, butcher dead animals to ensure ammonia doesn't leak, and help keep the bar lively. -job-description-chemist = Produce medicinal drugs for the doctors to use, research ethically dubious rare chemicals, and produce weapons of war when enemies of the station arrive. -job-description-clown = Entertain the crew through elaborate slapstick routines or terrible jokes. -job-description-cmo = Manage the resources and personnel of the Medical department to keep the crew alive. -job-description-paramedic = Rescue critically injured patients all over the station, sometimes outside too. Stabilize them, give them a ride to the medbay, and get back out there! -job-description-detective = Investigate crime scenes using forensic tools, ensure that the guilty party is found, and have a couple smokes. -job-description-doctor = Diagnose and heal crewmembers through medicinal chemicals, advanced medicine, and defibrillators. Make sure the dead don't rot, and that cadavers are in the morgue. -job-description-engineer = Keep the station's main engine & solars active, optimize the power network, and make emergency repairs using your hardsuit in spaced areas. -job-description-ertchaplain = Ensure the station crew's last rights are taken care of. -job-description-ertengineer = Ensure that the station has power and clean air. -job-description-ertjanitor = Ensure that the station is properly cleaned--for morale. -job-description-ertleader = Lead the Emergency Response Team in dealing with threats to Nanotrasen assets. -job-description-ertmedic = Ensure that the crew of the station is kept alive and healthy. -job-description-ertsecurity = Ensure that any active threats to the station are put to rest. -job-description-hop = Handle access reassignment fairly using your ID console, manage the Service department, and keep Ian safe. -job-description-hos = Manage your security force and keep them efficient, quell dissent, and keep the other heads of staff safe. -job-description-intern = Learn the basics of administering medicine, basic chemicals and using medical tools. -job-description-janitor = Keep the station clean of any trash or slipping hazards, and help deal with rat infestations. -job-description-lawyer = Ensure that every prisoner or criminal receives a fair judgment and trial if necessary. -job-description-librarian = Manage the library, give out knowledge to any who seek it, and report on activities aboard the station. -job-description-mime = Entertain the crew without speaking or writing, and engage with light rivalry with the clown. -job-description-musician = Entertain the crew with your unique musical talent, and acquire new instruments to mess around with. +# Command +job-description-captain = Manage the resources and personnel of the entire station. Work alongside the other heads of staff to ensure the station's crew remain content and productive. +job-description-ce = Manage the resources and personnel of the Engineering department to ensure the station remains intact, functional, and habitable. +job-description-cmo = Manage the resources and personnel of the Medical department to ensure the station's crew remain alive and in good health. +job-description-hop = Manage the resources and personnel of the Service department, and perform general administrative duties. Handle paperwork, perform job transfers, and keep your pet corgi safe. +job-description-hos = Manage the resources and personnel of the Security department to ensure the station's crew remain safe and law-abiding. +job-description-qm = Manage the resources and personnel of the Cargo department to ensure the station remains well-supplied and the money keeps flowing. +job-description-rd = Manage the resources and personnel of the Science department to ensure that research progresses smoothly and the station's silicons function properly. + +# Cargo +job-description-cargotech = Deliver the mail, manage requisition orders, pilot the cargo shuttle to buy and sell goods, and ensure other departments have the supplies they need. +job-description-salvagespec = Use the salvage magnet to draw in asteroids and debris, process ores and scrap into usable materials, find valuable loot, and fight off dangerous space fauna along the way. + +# Engineering +job-description-atmostech = Ensure the station has breathable air, keep the thermo-electric generator running, and synthesize rare gases for the station. +job-description-engineer = Keep the station's power network online, repair damage to the station, and perform renovations and expansions. +job-description-technical-assistant = Learn the basics of keeping the station powered and repairing structural damage. + +# Medical +job-description-chemist = Synthesize medicine, botanical supplies, and any other chemicals the station needs. +job-description-doctor = Diagnose and treat injured crew, and ensure that cadavers are properly stored in the morgue. +job-description-intern = Learn the basics of administering medicine, treating injuries, and rescuing injured crew. +job-description-paramedic = Rescue critically injured crew, make sure they're stable, and transport them to the medbay. +job-description-psychologist = Provide the crew with emotional support and counseling. + +# Science +job-description-research-assistant = Learn the basics of scientific research and technological development. +job-description-scientist = Research alien artifacts and supernatural anomalies to develop cutting-edge equipment for the station's crew. Build and upgrade cyborgs to perform various tasks across the station. + +# Security +job-description-cadet = Learn the basics of investigating crime and arresting criminals. +job-description-detective = Investigate crime scenes using forensic tools to ensure that the guilty party is found. +job-description-security = Uphold the law, arrest criminals, and ensure that the station does not fall into disarray. +job-description-warden = Guard the Security department, manage the armory, and ensure that all prisoners are properly charged and serve their sentence without incident. + +# Service +job-description-bartender = Serve drinks and keep the bar lively. +job-description-botanist = Grow fresh ingredients, medicinal herbs, and other plant-based supplies for the station. +job-description-chaplain = Preach the good word of your religion, hold services and funerals, and conduct miracles with your holy book. +job-description-chef = Keep the crew fed, butcher and dispose of dead animals, and help keep the bar lively. +job-description-clown = Entertain the crew with slapstick routines and terrible jokes, and engage in light rivalry with the mime. +job-description-janitor = Keep the station clean, recycle garbage into raw materials, and help exterminate vermin. +job-description-lawyer = Ensure that criminals receive legal representation and fair judgment. Inform the crew of their rights and help organize trials, lawsuits, and settlements. +job-description-librarian = Keep the library organized. Provide the crew with educational materials, entertaining stories, and tabletop games. +job-description-mime = Entertain the crew with silent acts of performance art, and engage in light rivalry with the clown. +job-description-musician = Entertain the crew with your unique musical talents. job-description-passenger = Enjoy your stay aboard the station with no obligations! -job-description-psychologist = Provide emotional support to traumatized crew. -job-description-qm = Manage the supplies of the station & the Cargo department, keep the salvage specialists working, make sure all orders are fulfilled, and keep the money flowing. -job-description-rd = Manage the Science department, unlocking technologies, acquiring & researching artifacts, and performing experiments. -job-description-research-assistant = Learn the basics of robotics and how to research various artifacts & anomalies. -job-description-reporter = Entertain & inform the crew with your vibrant journalism through wireless cameras, the radio and the news. -job-description-salvagespec = Use the salvage magnet to draw in detached scraps & asteroids to loot and enrich the station, build a salvage ship and then travel to new planets, while fighting off any space fauna along the way. -job-description-scientist = Research alien artifacts, unlock new technologies, build newer and better machines around the station, and make everything run more efficiently. -job-description-security = Catch criminals and enemies of the station, enforce the law, and ensure that the station does not fall into disarray. -job-description-serviceworker = Learn the basics of bartending, cooking, and growing plants. -job-description-station-ai = Follow your laws, serve the crew. -job-description-visitor = Enjoy your visit to the station. -job-description-warden = Patrol the Security department, ensure that no one is stealing from the armory, and make sure that all prisoners are processed and let out when their time is up. +job-description-reporter = Inform and entertain the station's crew with wireless cameras and news bulletins. +job-description-serviceworker = Assist the bar and kitchen with providing sustenance to the crew. + +# Silicon +job-description-borg = Use your robotic chassis to perform a wide variety of specialized tasks. +job-description-station-ai = Remotely interface with the station's cameras, airlocks, radio, and other electronic devices from the safety of your core. + +# Misc. +job-description-centcommoff = Act as liaison to the newest state-of-the-art space station in Nanotrasen's fleet. +job-description-ertchaplain = Ensure that the station's crew have their last rites performed. +job-description-ertengineer = Ensure that the station has power and clean air. +job-description-ertjanitor = Ensure that the station is thoroughly cleaned and sterilized. +job-description-ertleader = Lead the Emergency Response Team to protect and preserve Nanotrasen assets. +job-description-ertmedic = Ensure that the station's crew have their injuries treated. +job-description-ertsecurity = Ensure that any threats to the station are eliminated. +job-description-visitor = Enjoy your visit to the station! From c97a5038106e10d6b9ac06f0946a7573b6e44a28 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C4=81da?= Date: Fri, 17 Jul 2026 00:10:04 -0500 Subject: [PATCH 045/108] StackSystem tests and cleaning (#44496) * new apis and tests * more tests and stuff * fix test fail * test review * api review --------- Co-authored-by: iaada --- .../Tests/Stacks/StackInteractionTests.cs | 64 ++++++++ .../Tests/Stacks/StackTestPrototypes.cs | 68 ++++++++ .../Tests/Stacks/StackTests.cs | 153 ++++++++++++++++++ Content.Server/Stack/StackSystem.cs | 16 +- .../Stacks/SharedStackSystem.API.cs | 148 ++++++++++++++--- Content.Shared/Stacks/SharedStackSystem.cs | 45 +++--- 6 files changed, 443 insertions(+), 51 deletions(-) create mode 100644 Content.IntegrationTests/Tests/Stacks/StackInteractionTests.cs create mode 100644 Content.IntegrationTests/Tests/Stacks/StackTestPrototypes.cs create mode 100644 Content.IntegrationTests/Tests/Stacks/StackTests.cs diff --git a/Content.IntegrationTests/Tests/Stacks/StackInteractionTests.cs b/Content.IntegrationTests/Tests/Stacks/StackInteractionTests.cs new file mode 100644 index 0000000000..82ecd64099 --- /dev/null +++ b/Content.IntegrationTests/Tests/Stacks/StackInteractionTests.cs @@ -0,0 +1,64 @@ +using Content.IntegrationTests.Fixtures.Attributes; +using Content.IntegrationTests.Tests.Interaction; +using Content.Server.Stack; +using static Content.IntegrationTests.Tests.Stacks.StackTestPrototypes; + +namespace Content.IntegrationTests.Tests.Stacks; + +[TestFixture] +[TestOf(typeof(StackSystem))] +public sealed class StackInteractionTest : InteractionTest +{ + [SidedDependency(Side.Server)] private readonly StackSystem _sStackSystem = default!; + + [Test] + [Description("Test that using a stack on a stack will combine them to the hand.")] + public async Task InteractUsingTest() + { + var held = await Spawn(StackEnt1); + await Pickup(held); + + await SpawnTarget(StackEnt1); + await Interact(); + + using (Assert.EnterMultipleScope()) + { + // Assert that the held stack has the full count + // And the ground stack was deleted + Assert.That(_sStackSystem.GetCount(ToServer(held)), Is.EqualTo(2)); + Assert.That(SEntMan.EntityExists(ToServer(Target)), Is.False); + } + } + + [Test] + [Description("Test alt interact with a stack splits it in half.")] + public async Task SplitTest() + { + await SpawnTarget(StackEnt30); + await Interact(altInteract: true); + + var targetCount = 0; + var heldCount = 0; + await Server.WaitPost(() => + { + targetCount = _sStackSystem.GetCount(STarget.Value); + + if (HandSys.GetActiveItem((ToServer(Player), Hands)) is { } held) + heldCount = _sStackSystem.GetCount(held); + }); + + // Check that the count was evenly split + using (Assert.EnterMultipleScope()) + { + Assert.That(targetCount, Is.EqualTo(15)); + Assert.That(heldCount, Is.EqualTo(15)); + } + } + + // TODO test split verb + // I don't know how to navigate the right click menu in integration tests to find verbs + + // TODO a test for eating a stack + // Currently the player supplied by InteractionTest doesn't have a body or a stomach to eat with + // And BodySystem has no API for cleanly adding the needed parts +} diff --git a/Content.IntegrationTests/Tests/Stacks/StackTestPrototypes.cs b/Content.IntegrationTests/Tests/Stacks/StackTestPrototypes.cs new file mode 100644 index 0000000000..aa9cba550b --- /dev/null +++ b/Content.IntegrationTests/Tests/Stacks/StackTestPrototypes.cs @@ -0,0 +1,68 @@ +namespace Content.IntegrationTests.Tests.Stacks; + +public static class StackTestPrototypes +{ + public const string StackPrototype = "TestStack"; + public const string StackEntEdible = "StackEntEdible"; + + public const string StackEnt1 = "StackEnt1"; + private const string StackCount1 = "1"; + public const string StackEnt2 = "StackEnt2"; + private const string StackCount2 = "2"; + public const string StackEnt30 = "StackEnt30"; + private const string StackCount30 = "30"; // Also the maximum size of the test stack + + [TestPrototypes] + public const string Prototypes = + @$" + - type: stack + id: {StackPrototype} + name: stack-steel + spawn: {StackEnt1} + maxCount: {StackCount30} + + - type: entity + id: {StackEnt1} + components: + - type: Stack + stackType: {StackPrototype} + count: {StackCount1} + - type: Item + - type: Physics + bodyType: Dynamic + - type: Fixtures + fixtures: + fix1: + shape: + !type:PhysShapeCircle + radius: 0.35 + layer: + - Impassable + + - type: entity + parent: {StackEnt1} + id: {StackEnt2} + components: + - type: Stack + count: {StackCount2} + + - type: entity + parent: {StackEnt1} + id: {StackEnt30} + components: + - type: Stack + count: {StackCount30} + + - type: entity + parent: {StackEnt1} + id: {StackEntEdible} + components: + - type: Edible + - type: Solution + id: food + solution: + reagents: + - ReagentId: Nothing + Quantity: 5 + "; +} diff --git a/Content.IntegrationTests/Tests/Stacks/StackTests.cs b/Content.IntegrationTests/Tests/Stacks/StackTests.cs new file mode 100644 index 0000000000..72bb282284 --- /dev/null +++ b/Content.IntegrationTests/Tests/Stacks/StackTests.cs @@ -0,0 +1,153 @@ +using System.Collections.Generic; +using System.Linq; +using Content.IntegrationTests.Fixtures; +using Content.IntegrationTests.Fixtures.Attributes; +using Content.Server.Stack; +using Content.Shared.Stacks; +using Robust.Shared.GameObjects; +using static Content.IntegrationTests.Tests.Stacks.StackTestPrototypes; + +namespace Content.IntegrationTests.Tests.Stacks; + +[TestFixture] +[TestOf(typeof(StackSystem))] +public sealed class StackTest : GameTest +{ + [SidedDependency(Side.Server)] private readonly StackSystem _sStackSystem = default!; + + [Test] + [Description("Tests for SharedStackSystem.SetCount .")] + public async Task SetTest() + { + var stack = await Spawn(StackEnt1); + + // Raising the count + await Server.WaitPost(() => _sStackSystem.SetCount((stack, null), 2)); + Assert.That(_sStackSystem.GetCount(stack), Is.EqualTo(2)); + + // Lowering the count + await Server.WaitPost(() =>_sStackSystem.SetCount((stack, null), 1)); + Assert.That(_sStackSystem.GetCount(stack), Is.EqualTo(1)); + + // Setting above the max count clamps to max + await Server.WaitPost(() =>_sStackSystem.SetCount((stack, null), 31)); + Assert.That(_sStackSystem.GetCount(stack), Is.EqualTo(30)); + + // Setting to 0 deletes the stack + await Server.WaitPost(() =>_sStackSystem.SetCount((stack, null), 0)); + await Server.WaitRunTicks(1); + Assert.That(SEntMan.EntityCount, Is.Zero); + } + + [Test] + [Description("Tests that SharedStackSystem.MergeStacks functions as expected with small numbers.")] + public async Task MergeTest() + { + var stacks = new HashSet(); + + await Server.WaitPost(() => + { + stacks = + [ + SSpawn(StackEnt1), + SSpawn(StackEnt2), + ]; + + _sStackSystem.MergeStacks(ref stacks); + }); + + // Wait for the queue deletion of the empty stacks + await Server.WaitRunTicks(1); + + using (Assert.EnterMultipleScope()) + { + // Assert that only one entity was returned + // And that it has the correct count + Assert.That(stacks, Has.Count.EqualTo(1)); + Assert.That(_sStackSystem.GetCount(stacks.First()), Is.EqualTo(3)); + + // Assert that the other stack was set to zero and deleted + Assert.That(SEntMan.EntityCount, Is.EqualTo(1)); + } + } + + [Test] + [Description("Tests that SharedStackSystem.MergeStacks functions as expected with large numbers.")] + public async Task MergeOverflowTest() + { + var stacks = new HashSet(); + + await Server.WaitPost(() => + { + stacks = + [ + SSpawn(StackEnt1), + SSpawn(StackEnt2), + SSpawn(StackEnt30), + ]; + + _sStackSystem.MergeStacks(ref stacks); + }); + + // Wait for the queue deletion of the empty stacks + await Server.WaitRunTicks(1); + + var count = 0; + await Server.WaitPost(() => + { + foreach (var stack in stacks) + { + count += _sStackSystem.GetCount(stack); + } + }); + + using (Assert.EnterMultipleScope()) + { + // Assert that both stacks were returned + // And that the empty stack was deleted + Assert.That(stacks, Has.Count.EqualTo(2)); + Assert.That(SEntMan.EntityCount, Is.EqualTo(2)); + + // Assert we have the same count as what we spawned + Assert.That(count, Is.EqualTo(33)); + } + } + + [Test] + [Description("Test for SharedStackSystem.TryMergeToContacts .")] + public async Task MergeContactsTest() + { + var map = await Pair.CreateTestMap(); + await Server.WaitIdleAsync(); + + // Spawn two stacks at the same position so they're contacting + var donor = await SpawnAtPosition(StackEnt1, map.GridCoords); + var receiver = await SpawnAtPosition(StackEnt1, map.GridCoords); + + _sStackSystem.TryMergeToContacts(donor); + + // Wait for queue deletion + await Server.WaitRunTicks(1); + + using (Assert.EnterMultipleScope()) + { + // Assert that the receiver has the total count + // And that the donor was deleted + Assert.That(_sStackSystem.GetCount(receiver), Is.EqualTo(2)); + Assert.That(SEntMan.EntityExists(donor), Is.False); + } + + // Now test for when there's more count than the receiver can hold + donor = await SpawnAtPosition(StackEnt30, map.GridCoords); + + await Server.WaitPost(() => _sStackSystem.TryMergeToContacts(donor)); + + using (Assert.EnterMultipleScope()) + { + // Assert that the receiver is at its maximum count + // And that the donor has the remainder of the spawned count + Assert.That(_sStackSystem.GetCount(receiver), Is.EqualTo(30)); + Assert.That(_sStackSystem.GetCount(donor), Is.EqualTo(2)); + } + } +} diff --git a/Content.Server/Stack/StackSystem.cs b/Content.Server/Stack/StackSystem.cs index 96ccc8d6b3..f4904044c1 100644 --- a/Content.Server/Stack/StackSystem.cs +++ b/Content.Server/Stack/StackSystem.cs @@ -1,3 +1,4 @@ +using Content.Shared.Hands.EntitySystems; using Content.Shared.Popups; using Content.Shared.Stacks; using JetBrains.Annotations; @@ -13,6 +14,11 @@ namespace Content.Server.Stack [UsedImplicitly] public sealed partial class StackSystem : SharedStackSystem { + [Dependency] private SharedHandsSystem _hands = default!; + [Dependency] private SharedPopupSystem _popup = default!; + + [Dependency] private EntityQuery _stackQuery; + #region Spawning /// @@ -26,7 +32,7 @@ namespace Content.Server.Stack [PublicAPI] public EntityUid? Split(Entity ent, int amount, EntityCoordinates spawnPosition) { - if (!Resolve(ent.Owner, ref ent.Comp)) + if (!_stackQuery.Resolve(ent.Owner, ref ent.Comp)) return null; // Try to remove the amount of things we want to split from the original stack... @@ -40,7 +46,7 @@ namespace Content.Server.Stack var newEntity = SpawnAtPosition(stackType.Spawn, spawnPosition); // There should always be a StackComponent - var stackComp = Comp(newEntity); + var stackComp = _stackQuery.Comp(newEntity); SetCount((newEntity, stackComp), amount); stackComp.Unlimited = false; // Don't let people dupe unlimited stacks @@ -288,16 +294,16 @@ namespace Content.Server.Stack if (amount <= 0) { - Popup.PopupCursor(Loc.GetString("comp-stack-split-too-small"), user.Owner, PopupType.Medium); + _popup.PopupCursor(Loc.GetString("comp-stack-split-too-small"), user.Owner, PopupType.Medium); return; } if (Split(stack.AsNullable(), amount, user.Comp.Coordinates) is not { } split) return; - Hands.PickupOrDrop(user.Owner, split); + _hands.PickupOrDrop(user.Owner, split); - Popup.PopupCursor(Loc.GetString("comp-stack-split"), user.Owner); + _popup.PopupCursor(Loc.GetString("comp-stack-split"), user.Owner); } #endregion } diff --git a/Content.Shared/Stacks/SharedStackSystem.API.cs b/Content.Shared/Stacks/SharedStackSystem.API.cs index 918822e534..705143ecdb 100644 --- a/Content.Shared/Stacks/SharedStackSystem.API.cs +++ b/Content.Shared/Stacks/SharedStackSystem.API.cs @@ -1,5 +1,6 @@ using Content.Shared.Hands.Components; using JetBrains.Annotations; +using Robust.Shared.Map; using Robust.Shared.Prototypes; namespace Content.Shared.Stacks; @@ -35,10 +36,77 @@ public abstract partial class SharedStackSystem #endregion #region Merge Stacks + /// + /// Merges together the counts from a set of stacks into the smallest number of entities. + /// + /// Entities to merge. Returns stack entities with non-zero count. + [PublicAPI] + public void MergeStacks(ref HashSet stacks) + { + // Filter out the non-stacks and separate them by their stack types + var stacksByType = new Dictionary, List>>(); + foreach (var uid in stacks) + { + if (!_stackQuery.TryComp(uid, out var stackComponent)) + continue; + + if (stacksByType.TryGetValue(stackComponent.StackTypeId, out var list)) + list.Add((uid, stackComponent)); + else + { + list = new List>(); + list.Add((uid, stackComponent)); + stacksByType[stackComponent.StackTypeId] = list; + } + } + + stacks.Clear(); + + // Set the count + foreach (var (type, stackList) in stacksByType) + { + var count = GetCount(stackList, type); + + foreach (var stack in stackList) + { + // We've already moved all our stacks, so we clear the count of the remaining ones. + if (count == 0) + { + SetCount(stack.AsNullable(), count); + continue; + } + + var amount = Math.Min(count, GetMaxCount(stack.Comp)); + SetCount(stack.AsNullable(), amount); + + count -= amount; + stacks.Add(stack); + } + } + } + + /// + /// This will find all the stacks in an area and merge them together. + /// + /// + /// Useful for when you're spawning an unknown number of stacks like from an entity table + /// and want to combine them together at the end. + /// + /// Stack entities with non-zero counts. + [PublicAPI] + public HashSet MergeStacksAtPosition(MapCoordinates pos, float range = 0.5f, LookupFlags flags = EntityLookupSystem.DefaultFlags) + { + var entities = _entityLookup.GetEntitiesInRange(pos, range, flags); + MergeStacks(ref entities); + return entities; + } + /// /// Moves as much stack count as we can from the donor to the recipient. /// Deletes the donor if count goes to 0. /// + /// Entity losing count. + /// Entity gaining count. /// How much stack count was moved. /// Optional. Limits amount of stack count to move from the donor. /// True if transferred is greater than 0. @@ -53,10 +121,10 @@ public abstract partial class SharedStackSystem if (donor == recipient) return false; - if (!Resolve(recipient, ref recipient.Comp, false) || !Resolve(donor, ref donor.Comp, false)) - return false; - - if (recipient.Comp.StackTypeId != donor.Comp.StackTypeId) + // Check they're stacks of the same type + if (!_stackQuery.Resolve(recipient, ref recipient.Comp, false) + || !_stackQuery.Resolve(donor, ref donor.Comp, false) + || recipient.Comp.StackTypeId != donor.Comp.StackTypeId) return false; // The most we can transfer @@ -86,14 +154,14 @@ public abstract partial class SharedStackSystem if (!Resolve(user.Owner, ref user.Comp, false)) return; - if (!Resolve(item.Owner, ref item.Comp, false)) + if (!_stackQuery.Resolve(item.Owner, ref item.Comp, false)) { // This isn't even a stack. Just try to pickup as normal. - Hands.PickupOrDrop(user.Owner, item.Owner, handsComp: user.Comp); + _hands.PickupOrDrop(user.Owner, item.Owner, handsComp: user.Comp); return; } - foreach (var held in Hands.EnumerateHeld(user)) + foreach (var held in _hands.EnumerateHeld(user)) { TryMergeStacks(item, held, out _); @@ -101,7 +169,7 @@ public abstract partial class SharedStackSystem return; } - Hands.PickupOrDrop(user.Owner, item.Owner, handsComp: user.Comp); + _hands.PickupOrDrop(user.Owner, item.Owner, handsComp: user.Comp); } /// @@ -121,22 +189,33 @@ public abstract partial class SharedStackSystem var intersecting = new HashSet>(); // Should we reuse a HashSet instead of making a new one? _entityLookup.GetEntitiesIntersecting(map, bounds, intersecting, LookupFlags.Dynamic | LookupFlags.Sundries); - var merged = false; - foreach (var recipientStack in intersecting) + return TryMergeToStacks((uid, stack), intersecting); + } + + /// + /// Moves the count from the donor into the collection of entities. + /// + /// True if anything moved. + [PublicAPI] + public bool TryMergeToStacks(Entity donor, HashSet> stacks) + { + if (!_stackQuery.Resolve(donor.Owner, ref donor.Comp, false)) + return false; + + var count = GetCount(donor); + foreach (var stack in stacks) { - var otherEnt = recipientStack.Owner; - // if you merge a ton of stacks together, you will end up deleting a few by accident. - if (TerminatingOrDeleted(otherEnt) || EntityManager.IsQueuedForDeletion(otherEnt)) + if (stack.Comp.StackTypeId != donor.Comp.StackTypeId) continue; - if (!TryMergeStacks((uid, stack), recipientStack.AsNullable(), out _)) - continue; - merged = true; + TryMergeStacks(donor, stack.AsNullable(), out var transferred); - if (stack.Count <= 0) + count -= transferred; + if (count == 0) break; } - return merged; + + return true; } #endregion @@ -149,7 +228,7 @@ public abstract partial class SharedStackSystem /// All setter functions should end up here. public void SetCount(Entity ent, int amount) { - if (!Resolve(ent.Owner, ref ent.Comp)) + if (!_stackQuery.Resolve(ent.Owner, ref ent.Comp)) return; // Do nothing if amount is already the same. @@ -167,7 +246,7 @@ public abstract partial class SharedStackSystem ent.Comp.UiUpdateNeeded = true; Dirty(ent); - Appearance.SetData(ent.Owner, StackVisuals.Actual, ent.Comp.Count); + _appearance.SetData(ent.Owner, StackVisuals.Actual, ent.Comp.Count); RaiseLocalEvent(ent.Owner, new StackCountChangedEvent(old, ent.Comp.Count)); // Queue delete stack if count reaches zero. @@ -196,7 +275,7 @@ public abstract partial class SharedStackSystem [PublicAPI] public void ReduceCount(Entity ent, int amount) { - if (!Resolve(ent.Owner, ref ent.Comp)) + if (!_stackQuery.Resolve(ent.Owner, ref ent.Comp)) return; // Don't reduce unlimited stacks @@ -214,7 +293,7 @@ public abstract partial class SharedStackSystem [PublicAPI] public bool TryUse(Entity ent, int amount) { - if (!Resolve(ent.Owner, ref ent.Comp)) + if (!_stackQuery.Resolve(ent.Owner, ref ent.Comp)) return false; // We're unlimited and always greater than amount @@ -239,7 +318,24 @@ public abstract partial class SharedStackSystem [PublicAPI] public int GetCount(Entity ent) { - return Resolve(ent.Owner, ref ent.Comp, false) ? ent.Comp.Count : 1; + return _stackQuery.Resolve(ent.Owner, ref ent.Comp, false) ? ent.Comp.Count : 1; + } + + /// + /// Gets the total count from a list of stacks. + /// + private int GetCount(List> stacks, ProtoId id) + { + var count = 0; + foreach (var (_, stack) in stacks) + { + if (stack.StackTypeId != id) + continue; + + count += stack.Count; + } + + return count; } /// @@ -279,7 +375,9 @@ public abstract partial class SharedStackSystem [PublicAPI] public int GetMaxCount(EntityPrototype entityId) { - entityId.TryComp(out var stackComp, EntityManager.ComponentFactory); + if (!entityId.TryComp(out var stackComp, EntityManager.ComponentFactory)) + return 1; + return GetMaxCount(stackComp); } @@ -287,7 +385,7 @@ public abstract partial class SharedStackSystem [PublicAPI] public int GetMaxCount(EntityUid uid) { - return GetMaxCount(CompOrNull(uid)); + return GetMaxCount(_stackQuery.CompOrNull(uid)); } /// diff --git a/Content.Shared/Stacks/SharedStackSystem.cs b/Content.Shared/Stacks/SharedStackSystem.cs index 86d8667d62..93ad58ff7d 100644 --- a/Content.Shared/Stacks/SharedStackSystem.cs +++ b/Content.Shared/Stacks/SharedStackSystem.cs @@ -20,14 +20,15 @@ namespace Content.Shared.Stacks; public abstract partial class SharedStackSystem : EntitySystem { [Dependency] private IViewVariablesManager _vvm = default!; - [Dependency] protected SharedAppearanceSystem Appearance = default!; - [Dependency] protected SharedHandsSystem Hands = default!; - [Dependency] protected SharedTransformSystem Xform = default!; + [Dependency] private SharedAppearanceSystem _appearance = default!; + [Dependency] private SharedHandsSystem _hands = default!; [Dependency] private EntityLookupSystem _entityLookup = default!; [Dependency] private SharedPhysicsSystem _physics = default!; - [Dependency] protected SharedPopupSystem Popup = default!; + [Dependency] private SharedPopupSystem _popup = default!; [Dependency] private SharedStorageSystem _storage = default!; + [Dependency] private EntityQuery _stackQuery; + // TODO: These should be in the prototype. public static readonly int[] DefaultSplitAmounts = { 1, 5, 10, 20, 30, 50 }; @@ -35,16 +36,6 @@ public abstract partial class SharedStackSystem : EntitySystem { base.Initialize(); - SubscribeLocalEvent(OnStackInteractUsing); - SubscribeLocalEvent(OnStackGetState); - SubscribeLocalEvent(OnStackHandleState); - SubscribeLocalEvent(OnStackStarted); - SubscribeLocalEvent(OnStackExamined); - - SubscribeLocalEvent(OnBeforeEaten); - SubscribeLocalEvent(OnEaten); - SubscribeLocalEvent>(OnStackAlternativeInteract); - _vvm.GetTypeHandler() .AddPath(nameof(StackComponent.Count), (_, comp) => comp.Count, SetCount); } @@ -57,12 +48,15 @@ public abstract partial class SharedStackSystem : EntitySystem .RemovePath(nameof(StackComponent.Count)); } + #region Subscriptions + + [SubscribeLocalEvent] private void OnStackInteractUsing(Entity ent, ref InteractUsingEvent args) { if (args.Handled) return; - if (!TryComp(args.Used, out var recipientStack)) + if (!_stackQuery.TryComp(args.Used, out var recipientStack)) return; // Transfer stacks from ground to hand @@ -84,11 +78,11 @@ public abstract partial class SharedStackSystem : EntitySystem switch (transferred) { case > 0: - Popup.PopupCoordinates($"+{transferred}", popupPos, args.User); + _popup.PopupCoordinates($"+{transferred}", popupPos, args.User); if (GetAvailableSpace(recipientStack) == 0) { - Popup.PopupCoordinates(Loc.GetString("comp-stack-becomes-full"), + _popup.PopupCoordinates(Loc.GetString("comp-stack-becomes-full"), popupPos.Offset(new Vector2(0, -0.5f)), args.User); } @@ -96,7 +90,7 @@ public abstract partial class SharedStackSystem : EntitySystem break; case 0 when GetAvailableSpace(recipientStack) == 0: - Popup.PopupCoordinates(Loc.GetString("comp-stack-already-full"), popupPos, args.User); + _popup.PopupCoordinates(Loc.GetString("comp-stack-already-full"), popupPos, args.User); break; } @@ -104,21 +98,24 @@ public abstract partial class SharedStackSystem : EntitySystem _storage.PlayPickupAnimation(args.Used, popupPos, userCoords, localRotation, args.User); } + [SubscribeLocalEvent] private void OnStackStarted(Entity ent, ref ComponentStartup args) { if (!TryComp(ent.Owner, out AppearanceComponent? appearance)) return; - Appearance.SetData(ent.Owner, StackVisuals.Actual, ent.Comp.Count, appearance); - Appearance.SetData(ent.Owner, StackVisuals.MaxCount, GetMaxCount(ent.Comp), appearance); - Appearance.SetData(ent.Owner, StackVisuals.Hide, false, appearance); + _appearance.SetData(ent.Owner, StackVisuals.Actual, ent.Comp.Count, appearance); + _appearance.SetData(ent.Owner, StackVisuals.MaxCount, GetMaxCount(ent.Comp), appearance); + _appearance.SetData(ent.Owner, StackVisuals.Hide, false, appearance); } + [SubscribeLocalEvent] private void OnStackGetState(Entity ent, ref ComponentGetState args) { args.State = new StackComponentState(ent.Comp.Count, ent.Comp.MaxCountOverride, ent.Comp.Unlimited); } + [SubscribeLocalEvent] private void OnStackHandleState(Entity ent, ref ComponentHandleState args) { if (args.Current is not StackComponentState cast) @@ -130,6 +127,7 @@ public abstract partial class SharedStackSystem : EntitySystem SetCount(ent.AsNullable(), cast.Count); } + [SubscribeLocalEvent] private void OnStackExamined(Entity ent, ref ExaminedEvent args) { if (!args.IsInDetailsRange) @@ -143,6 +141,7 @@ public abstract partial class SharedStackSystem : EntitySystem ); } + [SubscribeLocalEvent] private void OnBeforeEaten(Entity eaten, ref BeforeIngestedEvent args) { if (args.Cancelled) @@ -175,11 +174,13 @@ public abstract partial class SharedStackSystem : EntitySystem args.Cancelled = true; } + [SubscribeLocalEvent] private void OnEaten(Entity eaten, ref IngestedEvent args) { ReduceCount(eaten.AsNullable(), 1); } + [SubscribeLocalEvent] private void OnStackAlternativeInteract(Entity ent, ref GetVerbsEvent args) { if (!args.CanAccess || !args.CanInteract || args.Hands == null || ent.Comp.Count == 1) @@ -217,6 +218,8 @@ public abstract partial class SharedStackSystem : EntitySystem } } + #endregion + /// /// OnStackAlternativeInteract() was moved to shared in order to faciliate prediction of stack splitting verbs. /// However, prediction of interacitons with spawned entities is non-functional (or so i'm told) From 8b9d21528d25b9c7b4774e3f775ca0b94c657a68 Mon Sep 17 00:00:00 2001 From: B_Kirill <153602297+B-Kirill@users.noreply.github.com> Date: Fri, 17 Jul 2026 15:42:58 +1000 Subject: [PATCH 046/108] Don't preload template textures (#44716) --- Resources/Textures/Template/Humanoid/human.png.yml | 1 + Resources/Textures/Template/Humanoid/reptilian.png.yml | 1 + Resources/Textures/Template/signs.png.yml | 1 + Resources/Textures/Template/softsuits.png.yml | 1 + Resources/Textures/Tiles/tile-reference-sheet.png.yml | 1 + 5 files changed, 5 insertions(+) create mode 100644 Resources/Textures/Template/Humanoid/human.png.yml create mode 100644 Resources/Textures/Template/Humanoid/reptilian.png.yml create mode 100644 Resources/Textures/Template/signs.png.yml create mode 100644 Resources/Textures/Template/softsuits.png.yml create mode 100644 Resources/Textures/Tiles/tile-reference-sheet.png.yml diff --git a/Resources/Textures/Template/Humanoid/human.png.yml b/Resources/Textures/Template/Humanoid/human.png.yml new file mode 100644 index 0000000000..a2cfb0a1fe --- /dev/null +++ b/Resources/Textures/Template/Humanoid/human.png.yml @@ -0,0 +1 @@ +preload: false diff --git a/Resources/Textures/Template/Humanoid/reptilian.png.yml b/Resources/Textures/Template/Humanoid/reptilian.png.yml new file mode 100644 index 0000000000..a2cfb0a1fe --- /dev/null +++ b/Resources/Textures/Template/Humanoid/reptilian.png.yml @@ -0,0 +1 @@ +preload: false diff --git a/Resources/Textures/Template/signs.png.yml b/Resources/Textures/Template/signs.png.yml new file mode 100644 index 0000000000..a2cfb0a1fe --- /dev/null +++ b/Resources/Textures/Template/signs.png.yml @@ -0,0 +1 @@ +preload: false diff --git a/Resources/Textures/Template/softsuits.png.yml b/Resources/Textures/Template/softsuits.png.yml new file mode 100644 index 0000000000..a2cfb0a1fe --- /dev/null +++ b/Resources/Textures/Template/softsuits.png.yml @@ -0,0 +1 @@ +preload: false diff --git a/Resources/Textures/Tiles/tile-reference-sheet.png.yml b/Resources/Textures/Tiles/tile-reference-sheet.png.yml new file mode 100644 index 0000000000..a2cfb0a1fe --- /dev/null +++ b/Resources/Textures/Tiles/tile-reference-sheet.png.yml @@ -0,0 +1 @@ +preload: false From 6ba84083454f56ab6536c7ad33898023336c6a89 Mon Sep 17 00:00:00 2001 From: Moredread Date: Fri, 17 Jul 2026 08:19:01 +0200 Subject: [PATCH 047/108] Change nix flake branch (#44718) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Switches the nix branch prefix from release to nixos. release-YY.MM are the development branches, while nixos-YY.MM are the intended ones for use. Targeting release risks pinning untested code and often leads to rebuilding big packages when the nix cache has not caught up. Flake lock file updates: • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/8cb14136bb517eba32a565a682861eef55c45a06' (2026-06-29) → 'github:NixOS/nixpkgs/4382ed2b7a6839d4280a9b386db49cbc5907414d' (2026-07-16) --- flake.lock | 8 ++++---- flake.nix | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/flake.lock b/flake.lock index f0c8d51753..5b40c7bc07 100644 --- a/flake.lock +++ b/flake.lock @@ -2,16 +2,16 @@ "nodes": { "nixpkgs": { "locked": { - "lastModified": 1782745641, - "narHash": "sha256-d1Uqn692SLRy743Gy1UTopaBBCAsgNbL9lmb03BxMTw=", + "lastModified": 1784160687, + "narHash": "sha256-iYL/bixrb6FlHFu/gIuBYzq6c6lM5AAXsXNSWXtIgQc=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "8cb14136bb517eba32a565a682861eef55c45a06", + "rev": "4382ed2b7a6839d4280a9b386db49cbc5907414d", "type": "github" }, "original": { "owner": "NixOS", - "ref": "release-26.05", + "ref": "nixos-26.05", "repo": "nixpkgs", "type": "github" } diff --git a/flake.nix b/flake.nix index b75aa3dcc2..5276548f47 100644 --- a/flake.nix +++ b/flake.nix @@ -1,7 +1,7 @@ { description = "Development environment for Space Station 14"; - inputs.nixpkgs.url = "github:NixOS/nixpkgs/release-26.05"; + inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-26.05"; outputs = { From c0c1cd2948b0cdb9e28dc4411fb38d0e628c06fd Mon Sep 17 00:00:00 2001 From: Princess Cheeseballs <66055347+Princess-Cheeseballs@users.noreply.github.com> Date: Fri, 17 Jul 2026 00:05:39 -0700 Subject: [PATCH 048/108] Cleanup Blocking System (#44700) * wokies * one last thing * field deltas --- .../Blocking/BlockingSystem.User.cs | 34 +-- Content.Shared/Blocking/BlockingSystem.cs | 205 +++++++++++------- .../Blocking/Components/BlockingComponent.cs | 6 +- .../Components/BlockingUserComponent.cs | 11 +- .../Hands/EntitySystems/SharedHandsSystem.cs | 17 ++ .../en-US/blocking/blocking-examine.ftl | 2 +- 6 files changed, 173 insertions(+), 102 deletions(-) diff --git a/Content.Shared/Blocking/BlockingSystem.User.cs b/Content.Shared/Blocking/BlockingSystem.User.cs index 67009b5fb5..0ff6d768b9 100644 --- a/Content.Shared/Blocking/BlockingSystem.User.cs +++ b/Content.Shared/Blocking/BlockingSystem.User.cs @@ -20,22 +20,22 @@ public sealed partial class BlockingSystem SubscribeLocalEvent(OnEntityTerminating); } - private void OnParentChanged(EntityUid uid, BlockingUserComponent component, ref EntParentChangedMessage args) + private void OnParentChanged(Entity entity, ref EntParentChangedMessage args) { - UserStopBlocking(uid, component); + UserStopBlocking(entity); } - private void OnInsertAttempt(EntityUid uid, BlockingUserComponent component, ContainerGettingInsertedAttemptEvent args) + private void OnInsertAttempt(Entity entity, ref ContainerGettingInsertedAttemptEvent args) { - UserStopBlocking(uid, component); + UserStopBlocking(entity); } - private void OnAnchorChanged(EntityUid uid, BlockingUserComponent component, ref AnchorStateChangedEvent args) + private void OnAnchorChanged(Entity entity, ref AnchorStateChangedEvent args) { if (args.Anchored) return; - UserStopBlocking(uid, component); + UserStopBlocking(entity); } private void OnUserDamageModified(Entity entity, ref DamageModifyEvent args) @@ -46,7 +46,7 @@ public sealed partial class BlockingSystem if (args.Damage.GetTotal() <= 0) return; - var blockFraction = blocking.IsBlocking ? blocking.ActiveBlockFraction : blocking.PassiveBlockFraction; + var blockFraction = blocking.IsRaised ? blocking.ActiveBlockFraction : blocking.PassiveBlockFraction; blockFraction = Math.Clamp(blockFraction, 0, 1); // This is how much damage the shield is attempting to block @@ -60,28 +60,28 @@ public sealed partial class BlockingSystem args.Damage *= 1f - blockFraction; args.Damage += blowthrough; - if (blocking.IsBlocking && damage.AnyPositive()) + if (blocking.IsRaised && damage.AnyPositive()) _audio.PlayPvs(blocking.BlockSound, entity); } - private void OnEntityTerminating(EntityUid uid, BlockingUserComponent component, ref EntityTerminatingEvent args) + private void OnEntityTerminating(Entity entity, ref EntityTerminatingEvent args) { - if (!_blockQuery.TryComp(component.BlockingItem, out var blockingComponent)) + if (!_blockQuery.TryComp(entity.Comp.BlockingItem, out var blockComponent)) return; - StopBlockingHelper(component.BlockingItem.Value, blockingComponent, uid); - + StopBlocking((entity.Comp.BlockingItem.Value, blockComponent), entity); } /// /// Check for the shield and has the user stop blocking /// Used where you'd like the user to stop blocking, but also don't want to remove the /// - /// The user blocking - /// The - private void UserStopBlocking(EntityUid uid, BlockingUserComponent component) + /// The user blocking + private void UserStopBlocking(Entity entity) { - if (TryComp(component.BlockingItem, out var blockComp) && blockComp.IsBlocking) - StopBlocking(component.BlockingItem.Value, blockComp, uid); + if (!_blockQuery.TryComp(entity.Comp.BlockingItem, out var blockComponent)) + return; + + LowerShield((entity.Comp.BlockingItem.Value, blockComponent), entity); } } diff --git a/Content.Shared/Blocking/BlockingSystem.cs b/Content.Shared/Blocking/BlockingSystem.cs index ad02f4641b..f692a3331a 100644 --- a/Content.Shared/Blocking/BlockingSystem.cs +++ b/Content.Shared/Blocking/BlockingSystem.cs @@ -8,42 +8,46 @@ using Content.Shared.Hands.Components; using Content.Shared.Hands.EntitySystems; using Content.Shared.IdentityManagement; using Content.Shared.Interaction.Events; +using Content.Shared.Item.ItemToggle; +using Content.Shared.Item.ItemToggle.Components; using Content.Shared.Maps; using Content.Shared.Mobs.Components; using Content.Shared.Physics; using Content.Shared.Popups; using Content.Shared.Toggleable; using Content.Shared.Verbs; -using Robust.Shared.Physics; using Robust.Shared.Physics.Components; using Robust.Shared.Physics.Systems; +using Robust.Shared.Toolshed.Syntax; using Robust.Shared.Utility; namespace Content.Shared.Blocking; public sealed partial class BlockingSystem : EntitySystem { - [Dependency] private SharedActionsSystem _actionsSystem = default!; [Dependency] private ActionContainerSystem _actionContainer = default!; - [Dependency] private SharedTransformSystem _transformSystem = default!; - [Dependency] private FixtureSystem _fixtureSystem = default!; - [Dependency] private SharedHandsSystem _handsSystem = default!; - [Dependency] private SharedPopupSystem _popupSystem = default!; [Dependency] private EntityLookupSystem _lookup = default!; - [Dependency] private SharedPhysicsSystem _physics = default!; [Dependency] private ExamineSystemShared _examine = default!; + [Dependency] private FixtureSystem _fixtureSystem = default!; + [Dependency] private ItemToggleSystem _toggle = default!; + [Dependency] private SharedActionsSystem _actionsSystem = default!; + [Dependency] private SharedHandsSystem _handsSystem = default!; + [Dependency] private SharedPhysicsSystem _physics = default!; + [Dependency] private SharedPopupSystem _popupSystem = default!; + [Dependency] private SharedTransformSystem _transformSystem = default!; [Dependency] private TurfSystem _turf = default!; - [Dependency] private EntityQuery _blockQuery = default!; - [Dependency] private EntityQuery _userQuery = default!; - [Dependency] private EntityQuery _handQuery = default!; - [Dependency] private EntityQuery _mobQuery = default!; + [Dependency] private EntityQuery _blockQuery; + [Dependency] private EntityQuery _userQuery; + [Dependency] private EntityQuery _handQuery; + [Dependency] private EntityQuery _mobQuery; public override void Initialize() { base.Initialize(); InitializeUser(); + SubscribeLocalEvent(OnItemToggled); SubscribeLocalEvent(OnEquip); SubscribeLocalEvent(OnUnequip); SubscribeLocalEvent(OnDrop); @@ -57,44 +61,52 @@ public sealed partial class BlockingSystem : EntitySystem SubscribeLocalEvent(OnMapInit); } - private void OnMapInit(EntityUid uid, BlockingComponent component, MapInitEvent args) + private void OnMapInit(Entity entity, ref MapInitEvent args) { - _actionContainer.EnsureAction(uid, ref component.BlockingToggleActionEntity, component.BlockingToggleAction); - Dirty(uid, component); + if (!CanBlock(entity.AsNullable())) + return; + + _actionContainer.EnsureAction(entity, ref entity.Comp.BlockingToggleActionEntity, entity.Comp.BlockingToggleAction); + DirtyField(entity, entity.Comp, nameof(BlockingComponent.BlockingToggleActionEntity)); } - private void OnEquip(EntityUid uid, BlockingComponent component, GotEquippedHandEvent args) + private void OnItemToggled(Entity entity, ref ItemToggledEvent args) { - component.User = args.User; - Dirty(uid, component); + if (!_handsSystem.IsHeld(entity.Owner, out var holder)) + return; - //To make sure that this bodytype doesn't get set as anything but the original - if (TryComp(args.User, out var physicsComponent) && physicsComponent.BodyType != BodyType.Static && !HasComp(args.User)) - { - var userComp = EnsureComp(args.User); - userComp.BlockingItem = uid; - userComp.OriginalBodyType = physicsComponent.BodyType; - } + if (args.Activated) + StartBlocking(entity, holder.Value); + else + StopBlocking(entity, holder.Value); } - private void OnUnequip(EntityUid uid, BlockingComponent component, GotUnequippedHandEvent args) + private void OnEquip(Entity entity, ref GotEquippedHandEvent args) { - StopBlockingHelper(uid, component, args.User); + if (!CanBlock(entity.AsNullable())) + return; + + StartBlocking(entity, args.User); } - private void OnDrop(EntityUid uid, BlockingComponent component, DroppedEvent args) + private void OnUnequip(Entity entity, ref GotUnequippedHandEvent args) { - StopBlockingHelper(uid, component, args.User); + StopBlocking(entity, args.User); } - private void OnGetActions(EntityUid uid, BlockingComponent component, GetItemActionsEvent args) + private void OnDrop(Entity entity, ref DroppedEvent args) { - args.AddAction(ref component.BlockingToggleActionEntity, component.BlockingToggleAction); + StopBlocking(entity, args.User); } - private void OnToggleAction(EntityUid uid, BlockingComponent component, ToggleActionEvent args) + private void OnGetActions(Entity entity, ref GetItemActionsEvent args) { - if (args.Handled) + args.AddAction(ref entity.Comp.BlockingToggleActionEntity, entity.Comp.BlockingToggleAction); + } + + private void OnToggleAction(Entity entity, ref ToggleActionEvent args) + { + if (args.Handled || !CanBlock(entity.AsNullable())) return; if (!_handQuery.TryGetComponent(args.Performer, out var hands)) @@ -104,32 +116,32 @@ public sealed partial class BlockingSystem : EntitySystem foreach (var shield in shields) { - if (shield == uid) + if (shield == entity.Owner) continue; - if (_blockQuery.TryGetComponent(shield, out var otherBlockComp) && otherBlockComp.IsBlocking) - { - CantBlockError(args.Performer); - return; - } + if (!_blockQuery.TryGetComponent(shield, out var otherBlockComp) || !otherBlockComp.IsRaised) + continue; + + CantBlockError(args.Performer); + return; } - if (component.IsBlocking) - StopBlocking(uid, component, args.Performer); + if (entity.Comp.IsRaised) + LowerShield(entity, args.Performer); else - StartBlocking(uid, component, args.Performer); + RaiseShield(entity, args.Performer); args.Handled = true; } - private void OnShutdown(EntityUid uid, BlockingComponent component, ComponentShutdown args) + private void OnShutdown(Entity entity, ref ComponentShutdown args) { //In theory the user should not be null when this fires off - if (component.User != null) - { - _actionsSystem.RemoveProvidedActions(component.User.Value, uid); - StopBlockingHelper(uid, component, component.User.Value); - } + if (entity.Comp.User is not { } user) + return; + + _actionsSystem.RemoveProvidedActions(user, entity); + StopBlocking(entity, user); } /// @@ -137,18 +149,17 @@ public sealed partial class BlockingSystem : EntitySystem /// Creates a new hard fixture to bodyblock /// Also makes the user static to prevent prediction issues /// - /// The entity with the blocking component - /// The + /// The entity with the blocking component /// The entity who's using the item to block /// - public bool StartBlocking(EntityUid item, BlockingComponent component, EntityUid user) + public bool RaiseShield(Entity entity, EntityUid user) { - if (component.IsBlocking) + if (entity.Comp.IsRaised) return false; var xform = Transform(user); - var shieldName = Name(item); + var shieldName = Name(entity); var blockerName = Identity.Entity(user, EntityManager); var msgUser = Loc.GetString("action-popup-blocking-user", ("shield", shieldName)); @@ -162,7 +173,7 @@ public sealed partial class BlockingSystem : EntitySystem } // Don't allow someone to block if they're not holding the shield - if (!_handsSystem.IsHolding(user, item, out _)) + if (!_handsSystem.IsHolding(user, entity, out _)) { CantBlockError(user); return false; @@ -190,21 +201,21 @@ public sealed partial class BlockingSystem : EntitySystem CantBlockError(user); return false; } - _actionsSystem.SetToggled(component.BlockingToggleActionEntity, true); + _actionsSystem.SetToggled(entity.Comp.BlockingToggleActionEntity, true); _popupSystem.PopupEntity(msgUser, msgOther, user, user); if (TryComp(user, out var physicsComponent)) { _fixtureSystem.TryCreateFixture(user, - component.Shape, + entity.Comp.Shape, BlockingComponent.BlockFixtureId, hard: true, collisionLayer: (int)CollisionGroup.WallLayer, body: physicsComponent); } - component.IsBlocking = true; - Dirty(item, component); + entity.Comp.IsRaised = true; + DirtyField(entity, entity.Comp, nameof(BlockingComponent.IsRaised)); return true; } @@ -224,18 +235,17 @@ public sealed partial class BlockingSystem : EntitySystem /// /// Called where you want the user to stop blocking. /// - /// The entity with the blocking component - /// The + /// The entity with the blocking component /// The entity who's using the item to block /// - public bool StopBlocking(EntityUid item, BlockingComponent component, EntityUid user) + public bool LowerShield(Entity entity, EntityUid user) { - if (!component.IsBlocking) + if (!entity.Comp.IsRaised) return false; var xform = Transform(user); - var shieldName = Name(item); + var shieldName = Name(entity); var blockerName = Identity.Entity(user, EntityManager); var msgUser = Loc.GetString("action-popup-blocking-disabling-user", ("shield", shieldName)); @@ -249,29 +259,69 @@ public sealed partial class BlockingSystem : EntitySystem if (xform.Anchored) _transformSystem.Unanchor(user, xform, false); - _actionsSystem.SetToggled(component.BlockingToggleActionEntity, false); + _actionsSystem.SetToggled(entity.Comp.BlockingToggleActionEntity, false); _fixtureSystem.DestroyFixture(user, BlockingComponent.BlockFixtureId, body: physicsComponent); _physics.SetBodyType(user, blockingUserComponent.OriginalBodyType, body: physicsComponent); _popupSystem.PopupEntity(msgUser, msgOther, user, user); } - component.IsBlocking = false; - Dirty(item, component); + entity.Comp.IsRaised = false; + DirtyField(entity, entity.Comp, nameof(BlockingComponent.IsRaised)); + return true; + } + + /// + /// Checks if this blocking entity can block. + /// + /// Entity we are checking. + /// + public bool CanBlock(Entity entity) + { + if (!_blockQuery.Resolve(entity, ref entity.Comp)) + return false; + + if (!_toggle.IsActivated(entity.Owner)) + return false; return true; } + /// + /// Tries to enable a blocking entity, allowing it to block incoming damage. + /// + /// Blocking entity we wish to enable + /// User that is trying to use the blocking entity + private void StartBlocking(Entity entity, EntityUid user) + { + entity.Comp.User = user; + DirtyField(entity, entity.Comp, nameof(BlockingComponent.User)); + + //To make sure that this bodytype doesn't get set as anything but the original + if (EnsureComp(user, out var userComp)) + return; + + userComp.BlockingItem = entity; + + if (!TryComp(user, out var physicsComponent)) + { + DirtyField(user, userComp, nameof(BlockingUserComponent.BlockingItem)); + return; + } + + userComp.OriginalBodyType = physicsComponent.BodyType; + DirtyFields(user, userComp, null, nameof(BlockingUserComponent.BlockingItem), nameof(BlockingUserComponent.OriginalBodyType)); + } + /// /// Called where you want someone to stop blocking and to remove the from them /// Won't remove the if they're holding another blocking item /// - /// The item the component is attached to - /// The + /// The item the component is attached to /// The person holding the blocking item - private void StopBlockingHelper(EntityUid uid, BlockingComponent component, EntityUid user) + private void StopBlocking(Entity entity, EntityUid user) { - if (component.IsBlocking) - StopBlocking(uid, component, user); + if (entity.Comp.IsRaised) + LowerShield(entity, user); if (!_handQuery.TryGetComponent(user, out var hands)) return; @@ -288,28 +338,31 @@ public sealed partial class BlockingSystem : EntitySystem } RemComp(user); - component.User = null; + entity.Comp.User = null; + DirtyField(entity, entity.Comp, nameof(BlockingComponent.User)); } private DamageModifierSet GetBlockingModifier(Entity entity) { - return entity.Comp.IsBlocking ? entity.Comp.ActiveBlockModifier ?? entity.Comp.PassiveBlockModifier : entity.Comp.PassiveBlockModifier; + return entity.Comp.IsRaised ? entity.Comp.ActiveBlockModifier ?? entity.Comp.PassiveBlockModifier : entity.Comp.PassiveBlockModifier; } - private void OnVerbExamine(EntityUid uid, BlockingComponent component, GetVerbsEvent args) + private void OnVerbExamine(Entity entity, ref GetVerbsEvent args) { if (!args.CanInteract || !args.CanAccess) return; - var fraction = component.IsBlocking ? component.ActiveBlockFraction : component.PassiveBlockFraction; - var modifier = GetBlockingModifier((uid, component)); + var fraction = entity.Comp.IsRaised ? entity.Comp.ActiveBlockFraction : entity.Comp.PassiveBlockFraction; + var modifier = GetBlockingModifier(entity); var msg = new FormattedMessage(); msg.AddMarkupOrThrow(Loc.GetString("blocking-fraction", ("value", MathF.Round(fraction * 100, 1)))); AppendCoefficients(modifier, msg); - _examine.AddDetailedExamineVerb(args, component, msg, + _examine.AddDetailedExamineVerb(args, + entity.Comp, + msg, Loc.GetString("blocking-examinable-verb-text"), "/Textures/Interface/VerbIcons/dot.svg.192dpi.png", Loc.GetString("blocking-examinable-verb-message") diff --git a/Content.Shared/Blocking/Components/BlockingComponent.cs b/Content.Shared/Blocking/Components/BlockingComponent.cs index b50c600b59..9f3f4b7c15 100644 --- a/Content.Shared/Blocking/Components/BlockingComponent.cs +++ b/Content.Shared/Blocking/Components/BlockingComponent.cs @@ -9,7 +9,7 @@ namespace Content.Shared.Blocking.Components; /// /// This component goes on an item that you want to use to block /// -[RegisterComponent, NetworkedComponent, AutoGenerateComponentState] +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState(fieldDeltas: true)] public sealed partial class BlockingComponent : Component { /// @@ -24,10 +24,10 @@ public sealed partial class BlockingComponent : Component public EntityUid? User; /// - /// Is it currently blocking? + /// Is it currently raised and using its ? /// [DataField, AutoNetworkedField] - public bool IsBlocking; + public bool IsRaised; /// /// The shape of the blocking fixture that will be dynamically spawned diff --git a/Content.Shared/Blocking/Components/BlockingUserComponent.cs b/Content.Shared/Blocking/Components/BlockingUserComponent.cs index 129741478c..ed26f685aa 100644 --- a/Content.Shared/Blocking/Components/BlockingUserComponent.cs +++ b/Content.Shared/Blocking/Components/BlockingUserComponent.cs @@ -1,23 +1,24 @@ -using Robust.Shared.Physics; +using Robust.Shared.GameStates; +using Robust.Shared.Physics; -namespace Content.Shared.Blocking; +namespace Content.Shared.Blocking.Components; /// /// This component gets dynamically added to an Entity via the /// -[RegisterComponent] +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState(fieldDeltas: true)] public sealed partial class BlockingUserComponent : Component { /// /// The entity that's being used to block /// - [DataField("blockingItem")] + [DataField, AutoNetworkedField] public EntityUid? BlockingItem; /// /// Stores the entities original bodytype /// Used so that it can be put back to what it was after anchoring /// - [DataField("originalBodyType")] + [DataField, AutoNetworkedField] public BodyType OriginalBodyType; } diff --git a/Content.Shared/Hands/EntitySystems/SharedHandsSystem.cs b/Content.Shared/Hands/EntitySystems/SharedHandsSystem.cs index 1869c2b221..7c992de93f 100644 --- a/Content.Shared/Hands/EntitySystems/SharedHandsSystem.cs +++ b/Content.Shared/Hands/EntitySystems/SharedHandsSystem.cs @@ -362,6 +362,23 @@ public abstract partial class SharedHandsSystem TrySetActiveHand(ent, nextHand); } + /// + /// Checks if an item is being held by another entity. + /// + /// Item that we are checking. + /// User who is holding our item. + /// Returns true if our item is being held. + public bool IsHeld(Entity item, [NotNullWhen(true)] out EntityUid? user) + { + user = null; + item.Comp ??= Transform(item); + if (!IsHolding(item.Comp.ParentUid, item)) + return false; + + user = item.Comp.ParentUid; + return true; + } + public bool IsHolding(Entity entity, [NotNullWhen(true)] EntityUid? item) { return IsHolding(entity, item, out _); diff --git a/Resources/Locale/en-US/blocking/blocking-examine.ftl b/Resources/Locale/en-US/blocking/blocking-examine.ftl index cafb8372ef..a50e930b16 100644 --- a/Resources/Locale/en-US/blocking/blocking-examine.ftl +++ b/Resources/Locale/en-US/blocking/blocking-examine.ftl @@ -1,7 +1,7 @@ # Blocking examines blocking-examinable-verb-text = Protection blocking-examinable-verb-message = Examine the protection values. -blocking-fraction = It blocks [color=lightblue]{$value}%[/color] of incoming damage and: +blocking-fraction = It blocks up to [color=lightblue]{$value}%[/color] of incoming damage and: blocking-coefficient-value = - It blocks up to [color=lightblue]{$value}%[/color] [color=yellow]{$type}[/color] damage. blocking-reduction-value = - It blocks up to [color=lightblue]{$value}[/color] [color=yellow]{$type}[/color] damage. From cf37714d13c9d5f82e6039b1105c4abdfed31e69 Mon Sep 17 00:00:00 2001 From: ProPeperos <61984624+ProPeperos@users.noreply.github.com> Date: Fri, 17 Jul 2026 16:46:01 +0200 Subject: [PATCH 049/108] Most of the signs no longer have "unanchored" text (#44491) * Most of the signs no longer have "unanchored" text besides the guide signs * add anchorable comp with flag None * requested changes --- .../Structures/Wallmounts/Signs/base_structuresigns.yml | 6 ++++-- .../Entities/Structures/Wallmounts/Signs/signs.yml | 5 +++++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/Resources/Prototypes/Entities/Structures/Wallmounts/Signs/base_structuresigns.yml b/Resources/Prototypes/Entities/Structures/Wallmounts/Signs/base_structuresigns.yml index 68693f41cd..7fc1f39856 100644 --- a/Resources/Prototypes/Entities/Structures/Wallmounts/Signs/base_structuresigns.yml +++ b/Resources/Prototypes/Entities/Structures/Wallmounts/Signs/base_structuresigns.yml @@ -20,5 +20,7 @@ snapCardinals: true - type: StaticPrice price: 20 - - type: Transform - anchored: false + # Hacky wacky - It inherit anchorable from "BaseWallmount", none of the BaseSign children are designed to be anchorable + - type: Anchorable + flags: + - None diff --git a/Resources/Prototypes/Entities/Structures/Wallmounts/Signs/signs.yml b/Resources/Prototypes/Entities/Structures/Wallmounts/Signs/signs.yml index 2aec0faee3..92fa9bd4a4 100644 --- a/Resources/Prototypes/Entities/Structures/Wallmounts/Signs/signs.yml +++ b/Resources/Prototypes/Entities/Structures/Wallmounts/Signs/signs.yml @@ -8,6 +8,7 @@ state: monkey_painting # Directional Station Guide Signs + - type: entity parent: BaseSign id: BaseSignDirectional @@ -15,6 +16,10 @@ components: - type: Sprite snapCardinals: false + # The way that Directonal Guide Signs are mapped are unaligned on the wall, making them anchored makes them all be placed in the middle of the wall + # TODO: Combine all the directional guide signs in to some modular prototype so it's easier to map and remove the overlap when rotating the camera + - type: Transform + anchored: false - type: entity parent: BaseSignDirectional From 19644eb078813543f3ce37be0ee6ccafb0277706 Mon Sep 17 00:00:00 2001 From: Rami Date: Fri, 17 Jul 2026 07:51:02 -0700 Subject: [PATCH 050/108] A noise is now played when Holoparasites are released (#44703) * initial workings * oops --- .../Guardian/Components/GuardianHostComponent.cs | 7 +++++++ Content.Shared/Guardian/GuardianSystem.cs | 1 + 2 files changed, 8 insertions(+) diff --git a/Content.Shared/Guardian/Components/GuardianHostComponent.cs b/Content.Shared/Guardian/Components/GuardianHostComponent.cs index 1aed80d8a3..a3480ff2e2 100644 --- a/Content.Shared/Guardian/Components/GuardianHostComponent.cs +++ b/Content.Shared/Guardian/Components/GuardianHostComponent.cs @@ -1,6 +1,7 @@ using Robust.Shared.Containers; using Robust.Shared.GameStates; using Robust.Shared.Prototypes; +using Robust.Shared.Audio; namespace Content.Shared.Guardian.Components; @@ -48,4 +49,10 @@ public sealed partial class GuardianHostComponent : Component /// [DataField, AutoNetworkedField] public EntityUid? ActionEntity; + + /// + /// Sound played when the guardian is released. + /// + [DataField] + public SoundSpecifier ReleaseSound = new SoundPathSpecifier("/Audio/Effects/guardian_warn.ogg"); } diff --git a/Content.Shared/Guardian/GuardianSystem.cs b/Content.Shared/Guardian/GuardianSystem.cs index 7b97892ac9..413818fdc2 100644 --- a/Content.Shared/Guardian/GuardianSystem.cs +++ b/Content.Shared/Guardian/GuardianSystem.cs @@ -384,6 +384,7 @@ public sealed partial class GuardianSystem : EntitySystem private void ReleaseGuardian(Entity host, Entity guardian) { + _audio.PlayPredicted(host.Comp.ReleaseSound, guardian, host); if (guardian.Comp.GuardianLoose) { DebugTools.Assert(!host.Comp.GuardianContainer.Contains(guardian)); From 4b5507f81bd38bdad470227dd4a89849f7650ef7 Mon Sep 17 00:00:00 2001 From: InsoPL Date: Fri, 17 Jul 2026 17:40:55 +0200 Subject: [PATCH 051/108] fix: Cryogenic Sleep Unit UI uses slot id instead of proper display names (#44380) * init * fix * comment fix --- .../Bed/Cryostorage/CryostorageEntryControl.xaml.cs | 6 +++--- Content.Server/Bed/Cryostorage/CryostorageSystem.cs | 2 +- Content.Shared/Bed/Cryostorage/CryostorageComponent.cs | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Content.Client/Bed/Cryostorage/CryostorageEntryControl.xaml.cs b/Content.Client/Bed/Cryostorage/CryostorageEntryControl.xaml.cs index 09e418fd86..cd76b08155 100644 --- a/Content.Client/Bed/Cryostorage/CryostorageEntryControl.xaml.cs +++ b/Content.Client/Bed/Cryostorage/CryostorageEntryControl.xaml.cs @@ -28,10 +28,10 @@ public sealed partial class CryostorageEntryControl : BoxContainer Body.Visible = data.ItemSlots.Count != 0 && data.HeldItems.Count != 0; ItemsContainer.Children.Clear(); - foreach (var (name, itemName) in data.ItemSlots) + foreach (var (slotId, slotName, itemName) in data.ItemSlots) { - var control = new CryostorageSlotControl(name, itemName); - control.Button.OnPressed += _ => SlotRemoveButtonPressed?.Invoke(name); + var control = new CryostorageSlotControl(slotName, itemName); + control.Button.OnPressed += _ => SlotRemoveButtonPressed?.Invoke(slotId); ItemsContainer.AddChild(control); } diff --git a/Content.Server/Bed/Cryostorage/CryostorageSystem.cs b/Content.Server/Bed/Cryostorage/CryostorageSystem.cs index d998558a93..f3888f0553 100644 --- a/Content.Server/Bed/Cryostorage/CryostorageSystem.cs +++ b/Content.Server/Bed/Cryostorage/CryostorageSystem.cs @@ -316,7 +316,7 @@ public sealed partial class CryostorageSystem : SharedCryostorageSystem if (HasComp(item)) continue; - data.ItemSlots.Add(slotDef.Name, Name(item)); + data.ItemSlots.Add((slotDef.Name, slotDef.DisplayName, Name(item))); } foreach (var hand in _hands.EnumerateHands(uid)) diff --git a/Content.Shared/Bed/Cryostorage/CryostorageComponent.cs b/Content.Shared/Bed/Cryostorage/CryostorageComponent.cs index 48f451d6bb..ffa513d56d 100644 --- a/Content.Shared/Bed/Cryostorage/CryostorageComponent.cs +++ b/Content.Shared/Bed/Cryostorage/CryostorageComponent.cs @@ -63,9 +63,9 @@ public record struct CryostorageContainedPlayerData() public NetEntity PlayerEnt = NetEntity.Invalid; /// - /// A dictionary relating a slot definition name to the name of the item inside of it. + /// A list containing item data (id of the slot, user friendly display name of the slot, the name of the item inside of it) /// - public Dictionary ItemSlots = new(); + public List<(string, string, string)> ItemSlots = new(); /// /// A dictionary relating a hand ID to the hand name and the name of the item being held. From 8aa95fab843ae176b5777c6c844775c684639a24 Mon Sep 17 00:00:00 2001 From: ProPeperos <61984624+ProPeperos@users.noreply.github.com> Date: Fri, 17 Jul 2026 17:47:08 +0200 Subject: [PATCH 052/108] Sprite cleanup - Part 1 - Effects (#44712) * chemsmoke * emp + fix * fire * gray fire + direction removal --- .../Effects/chemsmoke.rsi/chemsmoke.png | Bin 111309 -> 20912 bytes .../Effects/chemsmoke.rsi/chemsmoke_white.png | Bin 70126 -> 12349 bytes .../Textures/Effects/chemsmoke.rsi/meta.json | 20 ++-- .../Textures/Effects/emp.rsi/emp_disable.png | Bin 1635 -> 333 bytes Resources/Textures/Effects/emp.rsi/meta.json | 19 ---- Resources/Textures/Effects/fire.rsi/1.png | Bin 64440 -> 16327 bytes Resources/Textures/Effects/fire.rsi/2.png | Bin 118997 -> 27437 bytes Resources/Textures/Effects/fire.rsi/3.png | Bin 84613 -> 13185 bytes Resources/Textures/Effects/fire.rsi/meta.json | 100 +++++++++++++++++- .../Textures/Effects/fire_greyscale.rsi/1.png | Bin 62870 -> 19182 bytes .../Textures/Effects/fire_greyscale.rsi/2.png | Bin 110683 -> 32383 bytes .../Textures/Effects/fire_greyscale.rsi/3.png | Bin 52627 -> 18004 bytes .../Effects/fire_greyscale.rsi/meta.json | 67 +++++++++++- 13 files changed, 175 insertions(+), 31 deletions(-) diff --git a/Resources/Textures/Effects/chemsmoke.rsi/chemsmoke.png b/Resources/Textures/Effects/chemsmoke.rsi/chemsmoke.png index e85d4463347dfe34461e3bdbb970fdddbb8546ba..df01e640ca1d86b9df390c4088dcde9b2ef07ca6 100644 GIT binary patch literal 20912 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 literal 111309 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 DX0Vx%K726Zyf_J@za+>n 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Ξ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 JPDHLkV1mHIL3#iH literal 64440 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 literal 84613 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

#8sPD9*H0yUvIsBO8 z^#*S$lCWA=Ct)shq81sZi z`;hZEZyHwXH36+2b>;SZG8K6z5J0FgWNgT=Ql^ENG<6u(P#W6mst-&%%(^1-@0cRh zvl+Y(MGDC3AMt7%#@kKBv?f$J9*kj&Oob8|d zRmr3O$zmvMC-UTBnV3hRStnBZopIfoxOQdoFi>fL+Jh@54}Q`$wKo@$z(Hhq7UH>Q zkykC4?%ND}(=^h1(`0b6h$zaL-g72tJQp-CzYKOBI0F7ufI?2YiixwXNM<{5DW0J# z)~FtBN_SG81~Q1C)TlK+Q%kH{xSK1nR^4DP0)OlZy$8S!XYg0xE#Q{0F;&Pb03Clb zVNYc;8ao{(P;0B;ckllg_;#?5QS|avG?m$ez+W{6?S{SUsu2_nyNcHIafkU(#Afgg z*B+OsdRFgswT$~>A6|60khCvv#X7V^^fYOj`(KImcvuF?wz~d34}PWq&t+IC?mLJE zlxmSt+iV&Lszoy_9~pKNwMCahZpV;EegX{<^`PkPIzqelIDW=7*i;z>A4CqN?AY0m zB}Yze&ap-CQ{dZ;lx29IlW_b^)2MS9MRd=gl%d;rVe;LtVV}f@g3fY!mi&Jz@__$#gTBIt?Q0XyoX#uS+mE9rqYQg{OP#;%AE94AG72k5QG4V0PP#VYeTVHPBhm_d5XGz}gb;k(WlUO;rQDKK4BQ*hNSkZu z=8`wMu#W7jk8 z+W+O49$bnw-V5Ff_R}QKb30IWd%-sucFnL)(KD2RzcBb-21|x_AVrG#3_p0so?eXg z8j4mJS#{L5I$TvtULadR9h6T@1=t~^5G9xQA2Yl`>uEO(+itqnu-?UbOcCw4(i6I3 z-3@FdWTy{Ba<}7MJfgonv1aw)Ta%QwH=f_)*(PJnmO}?F>Rs$buzH72!3yA=avav- zsw3<)tS?h*c03I5dOXX3tC;<=LrR*Q9dJ082^91gYWdA&`rOy_UE7Uxq}#C$@EMas zOD5xS!&F$ElU`ft|JLC2g0-%Z8lxaJjg;WA=yld;aeYY>R*a!)<&#t)xlCzI*oh24 z0ks4#OVPYFVJ~O$#LrO0b5jgO{m2!bw-Vb<6oAR$TAU3UnqRPE#1H6;sWk-nCBSAx|~&obBV;`X=)E@Nxhe}7p5}|< zsjbO3gy;5sX+wB&Ze<(8vrnhH@$|*0v_H%pc=}NO7Htn_OnCYQhj){Vav!kUHE=TI z*clUoZxb@KnW@U(!d?5%h~Ld8u+6bfp$O?f(Mhd~3t*H$O9qEQ7g*gLd<=mQSH5<4#k^)MZm{U5DiJGd9NO&}=!MM5VJbZ{m!&jiTY{ zOv7Upl9mZzqD=L_MxZxAdnPBjZYp-W<$M+`vBnqtE2N-5Stxi29k z*foUess--=`;Ab%Q%KRaBa5~9@uGNil`(~H2cetwEw@uft%o>y&pOc5E;;Ee~ zp4#5bgr~lO@YD^cs4|am46hpYcm~_RuNt;hg+MwH#{OmCp-`;#2;CY&Nq?#h@+QNc z&)}~uA6zP-F38KkVSWiu9zwFO04ED@d0j$0?b_tuBCl%C8Po|i#|493^7=Gry}c>n ztBs`3R)weE>e{<;;3&e=kGm?!>ja)2dBD^099vOass{;MGcv}fOtNILUKc~j23>jm zPShg2a?Jn6Xgc7)Eimw8usWU|?9TB!) zmu%d{XRsKu{5YEHxQz42qjqtxY5(5MG(CbYvHi49^GZtnf9%LXEr`Z%fFNPP} zi;7WaGWdooTw9ILUO`pyoe0C+V#;BQsIWFlw6ajRvlDCpRZc79BBS~~TY=YImU%n) z3Ys7*#AXCfz((-Yp6rX^xmQt(Cakbs@eSe0Wk~pZc=pq1_WUV>E=W@u*n{Ee*>lJK zZ>2gI#%as({PnJ)X^#Z3isv8FJ9({RH^}(}dclk0IIvz<$7R*98n83qy8?aM5}lnf z;963eQi?ydzk<(T((cb^P-*ctbALXCkHe^4 zw;l>uMwQD_Y~W_(WmiIpCsE<1Y$_}rs62f9&SinC$hCn`%wqg|3u=E{bNp{it+^D> zvKxi+hY&WtR`>UD6U$CHHsa-Y;euY?+CnfF&=}|p8^%+AAw2giTEjYIptjq_@#MeB z=f|@*$MdbBme4C~3{U@>2|Tsa?~mudVA#8MFP{HewBqWxn@=Dq+VeKUmrd=mR|7d3 zm3$v3hR47UCD@zgdWvKShq`f7%u1HgGSVzc~aGaz23-V8pQ3P;u}U z>fJvU>o=biZB!!4A;ZQp74qhS&*14W-uL4(*q_~(&tSuR3XMcG%7gJa?BI*>NxW$C z_;0yj+1rtB4I|lTK^T_(F4?bi)E?u$d=^D|GO|w^u-)sr`It*!X26P3tz8U-+9^xr zYla2Gp8Fc|x|`!gO5pn}XP3Q<20z@jAPXkp{SMlZ8S-#=9~!QxqynqR zLq1FtcF3>Wf)u(jHgZ$^z7EZpx1hSf3R;|2#OtOTv87GUFF;C4jAkLGB*2Md%kRN z034UWX|nt8|2JK&!Rsagtkd)OVysOMRX#*_6jtwWtRL*>D106cK7kDN!{13lpW>Q$ zd`kju6A0(uYWP=F1ZA3>&)_x!XdJu`xm$mpMpzCjeKrp8P#aYaou60 zz_p=hj=XGT;Hbpid=Bj=OMfb)-eS|Wd#3i^3Mz;Uk;9MQBPg~* zm^UFs9B`~1cq<99w}dR*4pjADL<_qEd8RUY`TBUaNhtucj@7HJVkd!T629)(S}byg z@YIV4Pkq?oc&2qa5xHJMGwQpj;<>3oMXlDP0$e%EtH&R^iZz|&c=8SeyPc5>O`LB0#f`J!GETHJ|oCTjw55RWcVW3L08&!Erj+l@KVBRN}BXLXK*9% z^fydo9um0f1puWZvrcroXEHgh8MwJ0sAiaqaj!CyNZ^J zz&A4W&PTn*xvDkz2 z@orNgk1v_t=~l>4T?lT$G;ZD{BTYum=P&|%8%3{`p}1OdK8H3_XJ?ZKpM+~LYAPbe zS3?#aL8Iu06SS2zl(+0E0(M3eRgCMeB2JC}0*!h9PH#un^J5n#eK?6gv4Xa|tbIXDoij zAP^fpY48n$PcxA&%w($a4>$~?smBsnN0OIX$*?BFM`B3iDDcMyf#>FC7=h=IBA$zy({nZmKCij*&@t0{Jfr9Ic74|V z7Uk%5meaeJz+N_`6u%LXz_h$MlVGO|@6mmIhwEH{afdy@Cy<%o!u7xp47P<~xe*2I z6{RqK%oK$+g(t1>SzHG`GyFNdvb8zr6%1H8g8--tl88 z)<5_h{@f+wgQy1e+sN2n39)MH&8ITTP0X^|X1Q*SD6_a!-yl}z&rB~(Y+ z8j;<&3pa7u;rpft^@E6>nvl|O&vHJCL8E9(XcKxJeghScdeDcO!OOt$By908FzA{~ z-x9gxTqw#*Cd)GecG)A;HdSS3Grh>8p}-3+%BV(^!yS(YYBxCKvdHfvi(G@e{unAC zJsQ8?q-)u#D|{O={r@MZNOLR}Xc&CXg!~$cdyb*Jt2Z{_RMKKUW>Lto&yA14%rvylh}*u zE5q^gWYXVF5t1D;8TvK*wR{%le~dG$a9&*S@t_yN2$Vyh)=*JyGw^jOJGW8cq{qZX zU!%nobvFv%S3;3zB%nT!upeidSARZJrMVSh0On8|q*57gA)mNf2LEXRo_Fj>rqFH; z^@U3=gRlVnzfl2fGxEHhQd~L^Z`O+&!ZHQXS2bq5UF#1jrQKOH#3TtKX z9$%TDvTKgKu_o0I0XW`{4q45<{ zC*Wb1q26MUMIE5U@kVr?3@PV+ux3}zT|%i(cciV2@q9(#kmHl`ptjBN3CW8sNbY@G ztm{n3(W%(Sxn41HukuTKy9Z`GYfpkxWf_7=R3m%e1SHD}n(3Hu?YD)2STfk1@C1Zrn&VRg+Km3qqO3HtHZDe_Cg5u*d3O+C9Y|x4_y<=-x7;|8iij?p%8_*Mk6_; zQ)ehvpQ|{s0X#KR+>Pg61P=J!c3%h1CJ%V3yGQhimQapsU_7jv%YuOE0L*0UvPMEZ4Cdf!Bq z&!Whw5TNS_iB_p-b|^=*E(vIbLW<$Y$re!veFTL%?~yb7d>jI}2Ni?rkOAn8pUr02 z`Al_%-*JWZbEt5!ZnEh6BRuQ(ylVemC{8^px{Y~G-q@*4^A=N>Y{+Uhn`#(GQ2V1n z-oicweqV-WBY0{C>~1{wQN7Duc!ssW)}!j7yo>G27hPxS53oXH(gcx z0Un%Bp_zO69L^e6`#Jd>-u4IMlPDOxoT;-g9?vxsGL*Sy5l*0q)Nh+)^E=$bXHl%q z!q21Xa2N9I^VX?2ehE(Q5X$`1z{Ld5ie~OyI+xnguc1@AMXW&0D3Ewipgl{of&Q0X4 zvhTUxr!#E`PwgvyH=cXZ@5XaK?8?Q?MXs0-K&Xhk`gYq8o}5Sh!SL+AK*Ced`rC-X zWG3(VYw+~^0Qduk6A8P{gW>siXOg)N?#n0OThK7h!{mGdJ6uCai;fS4?5raN8aF|j z8~N3I2EAZ=1KQjy1>q^l_5<@NTwr5-4#)k$`6Rxd;B=;UZ85l94nqU{hT((!T0RTQ z{&mp>CUIH1Z^WYQN0Gr6lny);Fa9_=USK=b$}w|c40a>y--ayH8?i}y$q{;mc)_zs z35SuF9F@}gbyT?NNA15#G3cbhhgw*c$YIBA$O2zR1(7j_Z|WZYuT81M{)i+#4FRop z3FkG1QvNpg;;Anp<@tSs#SA8+jnarhFn2{4?MW#?k}&aBS%zcOWq8_=XTRcF$8xM; z6Zj*hT<}1w>3n>C5&RVbPwr&(COrAH!9!sv{x=jEm8jy`X$obkGyJ+KTC3pM`(0~) z4xMFi47{%h`^(s>JU@+ye!G&FcNw0-D9?a>WQw{>d&Og!@cf?TjLR)a^AT&NR$8S1 zy67tYWyq*sj_7AGWZ`ic6&lej{jw`!1fAmhFiJI6^)n_y?%HEL2M|!`x+#*m6+b(e z#dy2J`GmjZI#*!^wcrNg`+o)Al9Z~EsjINV#9qB*;!`kFemw!+Y&kTz;yf{V?0R5_ z>7X2qeCX%>DB5W=_+xaO-4XCv%lRa>$BappPlB9J0+fm_x@rU_2SGD>t_q*UV}@rQ z-4DBi&%)(w%38akO_lYJt#PATG%>eEe)z!Q`2V5!+^0yHJIQmEE#&QnDd0z_$NG;Y z%v=h=YePbCGlacAlw*cq{t0i|9|BfJf|a46nNmF0q-ikXW;}C4d~P^A_`8U>;&>?j zMI?}=xNq>NQ_PezML+(&c>?@gyV3Uqr2yj;g5Vnk3nZHO? zJ_8;OvW^U;eM`O}J_Y*N5TAqB*@N*(thgdd_YLt`nEx2x2%f)uxq%Jw3Dg1OhR>o= z&-PHjWmzeoF@;4b!seg3iao6%fRQ&+A}3U+BWS}+gbKf`fMb>uD$Hcn14OEX4x{7% zj(T*QbdZ|*Odu3z4K5q@bSU5w5}YyQfju^Bi`K)hm^NhI1&Jm;^V1{`(BLY3j+(4~ z0XD+MD{Ncide~1c>AVfKeaf~7Ntac!6(4pH6b!Lz-N&9R=-p}g$>{T@la&Y zzD}6*t}hgRkLSnIH^iP_v3y3RvhQmMp<2N!fDF?Xl;-@;@ws*sF|;}K7{w~L_-!5t z&(Gur`2=<(DduZPFiu7YK4H}mobR}D^EZ`7 zlLjX|29Y8(pLC@xT_|_DioC%t6oUUWLU41u3~5}-OrI$PzvN0`?hL^W&cnvk1W_iJM0lZJ9#XA=Fk|MdvSm44gx}0?$SWZh^yZ0z2ip#)@r> z&!ES?Tt0=3-hU#}@4Y6+Qz*rv6za(wo1e5S>#^lmn7c-a+Ebs>enqJbVpO}+iH zOZcyvD%HJUzX;*njD-5CX@+963D+>~sxegr{+i1uwV+UXkLP>_GX<=B9e=q<+PALW zcV%9sDQV(zDDGe3Q}_&ZecFIQ|0OqtyHVx3 zI~1|(0U(MT zatgh5mp)9p$WFIOCcTo1oe!C7G#R;pc+YuA8^!Z)m`@-BdlKw<$7)PKn=Po&(`)k9 zL$1P`A?xZUVUGEGzv(KHj03Nj7O6M#x2*)XoXfiIbQ!nTTqBxgu!7_5rsuuk+U&hl zS&r=hSQf@$25m}XtjB3oaIADBx{#6#qYCY;7Td>6zaItvu}-z|brWD{w_~fW(DC66 zc4g|#&**yom}B!n!?mpIc()k)YWQ;R|GMF4(NXrl z0KZ^jtvVXd(TwEdEbx3h&wH_7eaM?ngke}hhHO!LMh$t9yd`wHl0Fm-K68qG%QlAR z@9_=s2~c5o9YtYy5w#&NxN?|f7m#IZyi5x^7Y|oG;qM~E|9W%`T3z1lDk72`<1R3c zWoXK|dI)<0?!am3} z`PT+EnZfVIvs^Xh_Zb>~8b=e13j*UXiVm=N%#|~Cp~CA$!?(GfxnS^%z(K5mlVGO^ zN?1moXT%gXt_B$A;Q-?-MG>GzJ(a#dXWtLN~*X zxV%dP@Qz_O48G?=HP*yuCtStdbtDs=$dGJ+&%k!^rSd6k`2PJWoXVJ5&U|$>o-5Pd zS0^SXL&hFAdH)r(?v1GKP#@pD73+H}u6Ns1NS`qk^_v|AAXV`E_ngmuIbOO3;jph| z*y&6Pb;#gp)3Cw00;y#gn{fQKf~xD+Vj&w{(9C(1&x|191ogr@kU^Pqs87meYGPqV z1taxl!#WeTC8;ntWcu70auS6>$7kcEuNr>Lw6G^6jJ#{uJ81Do!mx~aNH3~uRN`&#~*Wb zWG*Ec+dVNipJFY_$iU5-yv`KZB~5Tr?|6U0DuXS6eWo;ym(hWpndx)i4`E+3wLptt zJ&tu|*jX8II#Bp}3h@~?PA($_Ee0{kLC3zCskpp?TDi646RMRl=Xt7p3O4JK z#ZK_)qS%*`D>W+odvO0{WH@fb8ohAG^~&U&7*iLDKz9ao-Z z*CHgljQ~aMVRd^7kTT)5cbkTVP5}Fo2qp(Jg-tP^ZihTVD%U;Qfm`6S8ez0(ty$%8 z(=p%)M94AgiWF|j3vd8zNuixU94LP~DFN}dr2cs?V$QkYRfbtx0)|`>(;in5cE<37 zx`z*f)qyWKb}WoyU3ipt9lm9_n+Q4f1#W)L;2VgL!%ei@?*re}=&)~f?6zyhVZ}tq zVTQdCk%%O zGDRi}NfARCcsMNK8aWPP6#N~ljwgF(%z}3yPuNkCkY|XC>-cw59Jq7HOgq@7gf0x5^nX2!5BN91pI%A;Ia{`ahVXL%oo6)o1 zj`suX&*Y)K*|259mxI@@S;ampq4cSMIz6o+K)W3t$>6+UCk<{VjSg>?Oi%=msZU#U zAmIy1#nb_mqGd>F23>WOGlqX`&Z8a9gRNUK!&46P>BWcH8diyi7)l(J7r^IIgwiiVh~xyUao20~MR>TqdQSc3GZfl;@XR#fL)@Y~Pin zC?thBPnTszVoHps;^Bu8Q_tVKsE->=A=O1x-CvCteJ#UpW)i5)`mTNADwIqc>@DD9 znS^d9s({ZJyq^hlvnGZ1DMcl|h|Vx*GkMzWDE%5BuhfsB zD*hAX=({ib{#mT~K2-QyC66j^gif^>_K2=mjS4OzqtXC8Z>kAA6AGWX>IMsOy+TAU zOLyqQnv6%H8?pPo92eY9UNI!TG(mo*-!B~BQq+Ttp*-V7SE#W@ez3%8Byf{x0&mq7 zVt*Vt_IUiMqzjE&6zfHRqwS~{K3P(K{s`C!$3KabqRupJx1f-!0Ng+$zlxFHgJ7LS z@cxuD&hCi~UPE5AHjSa+686kUs8bEeaE+a2pxq0UZ$ zO=Ynovbw@TQ)eF<)hc<(6wgJe%){x)NdoX>Wce) zSH{^pfEO}x5wv@L*1)5N_ZVK6@Yj;M7caONc4j3XcGeZf?}{kp%fA020=a#HhJLyc z@y)2|bA9Og`;ZZyMG;CFIn)YQMjvsCFk*^owOj{VP?WI8T1Q$IQgWFmy-tn1*EIOoA;y?TVZ*Pe%z`v2kD3_)oN$sdu*k)pFQy8T)dIq{B^OOKw`ZpK)H)uJr$z^0TqP|56S)Eo&Q>;wjJrJJ%26>_3 z8uBuA@$VrtF*nUW%qP$YUT~}{>1eJNs~*k8n-0%{%_Cw-L(^0VwJ|D3bG0Zm=2%$M zPDF(8feXdAE$L{ky_TZ}Z)s6{yQy_nIhxDjJzB|6J;oIR)_NSxt+VEi5lZ*u1l*L^x29AH!h%Xa4n2w79oC*!f$H8+Y@#s zlOWtSt?^dGMpOu4m@sSvrBCk=M{}WEun!TT4!M3GVWN%2^&3s0=WSOy&=;vmChuak zE`wh%<*$WMn6k<`97191Y!tgZ)~*|TK4~7J!_`7-Zlj zQF?(lP%*8d7)`F@waZd$A1R6$aouAIDL&VWMi2)P_WU94<`d|Njdx^4M4CDZ70%5p{PHjUaA(Di?6`hF|WUdE>zNH45V{!yJgNqdCn zr3BMu?9(#r0b4hG(qX$PtnZ*YR_a^O_X;M`(as19|2X9*CLc3x?mE~S!a>x_;P^q4 zw{8fdT#69C9~Grs>%joka}}&LA`Z_4XB{)F%kXIzy;ZM}o?c^MhAk)jq6ESRShq#wdU_2IeRWEPt zcJJ}rJF~lv=f+(#?NcsJ{$`*fQ|l%}3ST*%dn+<#&v5tg+_xQ`E?{R|i&jQq^Dgd& zb9QGrob#-Nfu!(>kxWLUGhstnUY&3AyWpg0?=qZDq=^hKCA_6ZX9P@T*kZJ0p2<{D zGXzXJi!d0wfwv>|nMFm}P2pLa413Wv(S0+S`TLr=6-Q+l?r$ zmXYypQK;`rNtD-JCS{mQYQfIB*7AnM@!UXXta%*IZI6^iEjDUYA*`KA0=cAGg)dt5 zcy5lcF+PJ?|8n^hHhTYZCWHI7bi#Y1#?_9D%sTk(Fy4a^JqC|~4Z7-EOVS-3cuP)D zx{6ZGIy9^{?o$3GbkBM)|3h=yJwKnl!||nr{dca>+Fc0YHm(rDHyg~E7N;q0GKij_ z3!Ps+uZvRxZ%Q$Ptf3%^DD;_kd}qS8XK<*H6B?Y#l-o>!AB|A6KLw$I!^1^psTL?XKa!Y4O$(PBGM_LVI)|6m0gN~#FK5oPUZ3zSM3i*-ILFmA|DL+1~u-p3* z_GYY63)--s0bij?D8V2yRPVVANUJON+Mh(deLcgkBq`o47bc-kn`g@=BFQ7_qu&=# zKWyU2`zD%7`x(C)&yT5i*NE`^D-i+pb1$C&CZX@=Za#r^gQo0mK7kPvdh!AJ3~VYq zSS6(WAu`Cv{+byxRjA;6xz0e&ml+DCFQnN@JlMBk`MxP0>P!f z%=_0xI6s5xCc6-kXPt}jx(Bk4-6H{ORFgifxW`y@m;h1{mB&tL|SIEx| ztT#oi{Vp`1cO#B84Eq}w!mcrc|1dW1RptJEMERs$0Pk`Q0l9k1Y;v{jW+m|cNx~k^ zpx0&1J`2TfLtf$QA#fG1Gv&&qOhUx0sb!YA7PbOeZ7<-9>YMnosin2x`Dwqs+)b%; z6A9y4?xs{Kc|Ne@p{V7`?@c`X_2iUJOHr|{P&&1TWxtIq>;MY23gBmx+Mh&~c!$y! zmNZGm7NEJTk=qUnT5PYPv@9sC_*epE7c9rqS17HHMd;e<>W*AO>DKo=$Me^NpYuB? zwft^8f4v0V3Vwe+fk9WjWz2Ivfs*HZ0zD4%;4KB{4@$9FzBr%3cF&FNFp3V33M*pE zfr;os>%Qn3mTHafuOkdXW#X+y%0>yS8=YA7A^1OzwLFeUIc7uVOQ?SHW!`^NtoalH zU3cMWDe;v_qZ zEKd^jk!y%fc%R`tN#njxMhG|HDnvc*5~`vr7hQ0wXPVstdnjVz74Q+H{7=LpZI2Le z2~}7}Tz_9S_;G}lM_qYR0ktwl608=ac%j6$j)bft;BPwqZ{j-Bu@KKB)c_t(@Qg_a zuOMr?#bn?+mK*VO=6;t*tlxZacE5jfgB{(Db|o@DoX3k^Y2vrfI-6WMJA5 zpIjE36g^sNaupuCV#9a1zIO#F=n6VG^%ISv`lbZ^j?JN|yeqCyyxZYh`YtW{x3_~$ zTh1KQg{BMNHO&bytn+;kf>GMfwztR7DFJ*f+yMw1Leyb~V!!+ri$3BaC7sRWY3hX1Wsf2Irg$IxFEKIosI6noT-xDVj6WWD0=jN6%p2>SzdQ)M#b0T zu_kM-zV#VYM1BROX`QiN6Vgd`A;TP?wJI$8=iomEA4aK287WH<&BOnFw2Qy&`=8am zQBQsl&qBz+fam%B9GWedjfnZOiC+AqYo8lTU9%n(rL7=iyo_|ZLMpSQ?7^YGY$D{M|t*|!DYj@J2vC^bP+pT&PgI0$WQZG z7PQm`+0elTbg;356*Ax0!48Ry9W3#mvay3LuCt+oHE3dE2YWPycf8009V`N|ciYJS zyMpE}9Hl)i=y|5e=SebTAZN&HF6EGiS7N_5BgOuTWY}7eLf4>3t}XWK%e?>Jgggu* z97ngyG3<$by&czd1Q&1eYQfKIP0qACo}~sE>oJd`!QyvYEb@QXfYDA@A$$djwiD&b z{SpSB2m8-rQHm(knI|Xq+??_woim^&$=V+?eZJ4J5j}u)mU6^iA+CwxXA5|DS?#yh z2!E%^k2dN}3O|pad}XdI6kJ_w%0w*4h^ZgH8jJt2=V$-jd9>0A%a2wnn|j}w>E1O6 zrdz3;9@2u_hpxZZAuC;{MYm~H-|0ul$Q|5$v{WB51j8X1^;BD?>_sWfjKiK(WxBP8 zT!S8~NP)iQFfXX@okv?SX?pibNk*{(0(OQ+_(PAtiK7)&P7oUM2ckD+5pFyn6AUTTkVPY7| zb#TUN{Co>Cs{QfjE#v^!(7MgX^$MutQ&QcvGE2`Ca%|tFN_+21k*~_C0L-ee@vO)r6J_8$tijrRSr0= zB8$<1tlTIHasGrH2vk5}-HJ;Iwq{bITPPwZ8-6Zf&y?>zpFJTDby453$?!rk5=(Zf9Hke6MYj2G& z#wXAo&$${Mq6r?D&w$ztzK=X!Aq3yGX4IQdjXTKGxYF{}|MTwB!3P(ijaes)p@ghdzD zVl?FWk&wgxCc%+R9kb4O-g*x-;3(Lit4%>d`ScIs#F3%I6WBbIin#ct1RSJJ?fq;OU3- zvj@WS??=F&3eNmCUzkt8&R9+svlI2JAB4}~w_?pM6IAZ;TsKV--Ag8+zGaG_24WL> zOb)Bd@(TRHkl!~$*}@Pr8hg7PIVBInw&~x4`?p(_7OWcCE`|PGLTg;<6r6HJSIv=@ z96$zZ(KPf{Nlj*41=xtN?a#|{HFHITJ#BGOTn> z5^2aQXc(x&bRfr`f|S3`VJcHt_9|i-N+yFbn4m2NmX=-0@?3(lV^>}D-WgTIBNtIP zw-4p#n~^3fe?ZrcS`Tl#DHzj8Jl=B8}*|MR!z!Q?g5bFGA6{#MdFe{%RE*V%M!27M)k_7%lGN3fuPp8$Kv;6(J%J=15_wD8sX z!$REuGgPn{LuVHhs19;4f;{_IP>L{x!sNeog^fnmp@E#E=axG`_oKXQuJio)W{s1ID}8y`lgz;4vL-)W-o9!~j@NHd7w@jRMH z>T%t8J1YL%_87A@De^Nwt?BgM&yX^9hj2{06fWuW)|ZLYq78-OYnfonn~;DPldf57 zx%KXhYjwCP__wub{43zE2;O^xU$|Ni( zXcl9cyc&F25rz+fT?A%@=eJdZYX*Bw}f;Kvb}ZSi2kF{N?E znEY!1E+woxlMt3O9Thg_qSv|#JQII!Mu%F)vic~RWPH}89NXeOXQA%!Ml=R zw3*9@wu2u`Dm2b#fr^WWsoC)Vz_5>8A@U`Me})i@n*#T-6!rQ{f5h5Tr_P zk`-j_zK#^57kU3t{js+*(M~U98rglwMBcdvoxZvnIpLfhz|WAkMILf_r%SF;)*GH5 zr+fts6Ai}8&7&H_8IvWQAZJ3YAnDp1E@p~ME~7Ew^-!#VScFxijC&G%T-1S;%_biB zoxqc(MPJfpvqH{g_&V@s;ID(%fX^sxC)m`V@7oxbXTlhrBB=y;E^>H5-%XH zF-<-u9P`@V8hH9Qr1`Mr3zmJF{Uj!@GccyGeq zvAc@2RX%|?B2`)DUOs_4rY}D?pTQW|)ZKgr)FXu|A~KqDDCKI1^%;w2FCfo%F8<%H zRKs4*w65<0e;fPQ>DU#=AB~iC6-AasauU`>7fN#V--G+FneMR(rM!!%AUK5nz5~@M z_92gc%M^K5Iyp_mDNn@gh^uCC4W*F}hrG6+w0$><+2C7J35c zi_Sp7Wt2W8XLM;ah2;}aJ?C)HR0o&@eo+<|;6a0bkzlT@=Q>0jW*P5w7CrMb$cQb1 z?LjTgA@r`h!GCPn$BzHD3Al4D7I}o~SgE&z-9SdQnfxfUZOG`IM(=no$&1$^#i$9R zbb`C_^xtsxmF#Xjz1@lD&rD;c%Ps@n2mZX4h+z{6ML$*Gik-@I?!qOLApJ6*K)tJ% zUBlgc0z+U+hOdGRZGg|R6ymb!(9dT)+N>@o^Z!v>nd7Dr^1l_%rg+!+>~+XHRay_Hz@LfmvK3jmZmMJv zj5sVL-LTVD@m>pIZw$pchloFpCsByagtsrCkUE(b@|;Uq7lECosNsF&JYocm zyskW!ClT)dE3p};O{v2a@Rym|fkP%#-y%>bKy8BSnfjtN$U1M0|Ifr4JO@?+YevH_ z>r}@*?RkeR!v93x8aju<{TEPbaz0amun9#S2^oY+>Qg|xdxco9e+W=b3yHnZd6~`WU98$m34iP0=&CResLI;nK=>U$aF39MVD`HqR*ynfQ z>AjyE&%YC`LpNexvP^Vcv$0>JCOrSHP{OW+{hQdQN+r47@U~#~dCKL*Z#jM}X;SbJ zug-UPKXB@o_zWUav?;%r&!8oq}5zTbms}ado8P(X#~pHT+M&{s72~B0c2HH-$Tdc@XtDjU4^- zb#iXNqf!;eKo#WSR}=PPRz3Glfg8Mwv;7Nz;IxDDmz8?3U zM*}@6Ue@DhOF&Ce3sYelo;H2A$7M7Ik`%)ujP6Dl_4RUYICgMfIHx~C6+i7Cki$6_ zQI5Yg-nmvA%Mm@NZPi-Yg1n1ucdhHru=GxVXzsw%|85!UEDKLRY&i(0GwHhv**$oA zo8xXg|5Z~CzUbh{@UDgOF1tL%t-$lIqhrt};vL6?+_Pc3n@?aSrV;C6&3A_IU(Zwp z?*G)z|hm+QzW4{+s{?s4d;ItMNOkjsP)Jkj%CCK9bGp53zQ=Mt{ zi-vuIxCXbIn0&?^dnD86K0$)GK$RZb+mrhIldk-GiJVb&8iiX6hPM=iYAd6=Z%{t~mTn5}7Nm z{B$S;`90)yb|Pashf=@CLLR2cc@wuH!}Mva{gK$?O8D7=x+}YpfxLi-Qg>Q4;_}Ur zwp4&!PsH~-lZL$Z6xHgjHAP?JuC(u#1s=u4QvIG`|1xP9tEDXD;y6O`4TKCWC$S~-AF zeV0*QRE*QzZm1KJJFEKQc@lJCt#-dTcM5ARH_%{)rzni=9RL?OjBdGO~(0htm{As&;U~Y5*h%jK{br;6ZB~0`1y)3R`S!v z_}!_v#z~~8W3ldM$d9+W26UU4ly;YLK8F}DW)-!0Euz6sEDx0%O*NlwuE?*gBHee3ru3KFg;$nhi_*^*( zBxo9Jb13^NV)AK5md!n&z;W}k$?IM(OMs?Owf~YsD#+7^^4he^qorso4WrXm7SUAM zjOXLHe{FeT@MLVl&xo<&5VTHHfh&uRy&M}p_6!u>rCoEZ^8fN-- z(?)+6ox;=}@3tM-=bBTmjh}g@W7sMal}~5*^JswRn8Q)WmNE&=ObFg?@TaYM>a4$; zWE=qBX84{^x-sO%ug1E41sT{!kil3YXSkh02BjHQvR9Eue+R1cU_->rM}`fRMC(3l zqERn~GOZ$Phokjcc1^5v4IwHP+4B-**qE$zveJ0j$6rIi3V}fvZ z@a6IetQhnbq!W8%|E4`RhKr`QxW)HdQL5LBbZ=FUVw;nIUcGvDU&>%DK}s5W+vd{k zxsdDEz-J-Z4g^q{jGXiRq!)b*Vf0UwMNl!V#j|GMQl`bq&_g#n{G<#&j&OGhSWKe# z`ok~~6PY555h)XMVcEJuxQ3DU8g`x1yBW11J7V!S$0A=sxjw{c#jy!bp_7STL=nR} z8qGX}Hfldo&a<(}tMN{YsB%An>180UwP0-Up$aLeEouuG0_buDzGspYnS&WEq0 zMkPIiKdM~IJGDueRoQcGIf+B>XDAOZ#Cmp8r9x*CokRGs$#cwuF9|Q;MviAMp!te! zlxnGcjIShNU8_5!4}jlusT=xxh2;8nwFdq6soU;F!mxP zZ;Q{&#~LJE%YSBhpSzjJWvRZedDI6+O+~KFNhdrg~bcV(R7A9 z3?ta`48m(%ianpvADcz>nKvB&$i93&0XJxmBKt_Jd1db4HIKSiII}4fNqE@{9+RgzVWYXbsM1=1r>G-5!dle-V*#v$;i(>Vr;?E>fyc&a1#~+Ht>jh2+ zb$25o@H`b>`j7;++Q+YRIBeSRe$QEBrU<2rVoQPQX*OOkSdKB_UF3&#jtM!MU>5ybl>jM*`V^ z21+0|nEwm%_M1^%rpE-5T8N)r(KV`P46Kt6d;Jzl*+9nSv}4C(okm?s*d4#$jH11D z)11OOYV{UE9!5hJ0DH{g6}_XiI!qeAE9xP$#L$}KCk;CmbtiWj{o#1e%~bLHwmIJa zD=3t21lJUE#+E2IZu#LJ1Xt3MjN2jh7w@ zPq)(~Y@Zl@!gTMKT=`^c2xf_#z4sLa7&_;8bAo*u#jG&=GJ?X`(b(9^)LbR(+paXg zkGMAH0&xHc*d@dI4gan~v*X9WzvBvd>mvVNLL7eotLeJ|wdEbtNk;Rs(snAsxLU*v zOGF$?k*nihCsl^9A6j$&2;qj}_6r6;bQ>a71^z(KRbM za&5@ZPfa0n8F4uF$Gyf~6K%)h*dC9>L-p%9)zjwo0KVb^jUj_~&Xvmc7JZc&y z`hj7infmaLAR+u)s>KTy6@>^6j7E&V>MCTc-m!p#X!Ba*d+&#JtVgG>9?tNdguU-M zHQ9bNaC8ub{%@fL8CRv(3g|4sCUg{8Oyb#OgjYAfcE&vWR0#4>)aU*ftUjsbRS*0S z`~Yh0-7x(7X!>hDqKU0&!tW4x7ucxSd#xT}#D`H7;KK7WYnmxo)NDU(s19?>qSfTV zvg8VnD;~BHMIO6Nd-SmBGuOf}&LNcIVOP5gwX^JEmJdR$p%8Nk?d5`mQ$nrl*;XP? zSER_UScf^spG&Y09T(OhMda_1F^Dl%f1`kXJ5$T5JDkEb7n#d~-kYItF7+M^)UglE z1v#XxNI{lDCi+aX3Rl4{I6k5wDsQvue2SUNfb^RbDALa_g->8S_VIai*vOv)`!jqr zVU+^xgk*vSG^YL=ragGu6>UFl;)&Qym5kL&hOfuS@w#bUu4W<+841VR?IeYx$U7_n zM-vQ{VLTHeY2EZPO-VU=qhoJoSg&~d{ixxYYbM=d(^loJSdie@euKkF#gjIacQ%A2 z9s+*_>@3(fGVHnNlU|9idkK7(33@w)Jo?MPUqq}GV^x_M5z1WB;G%27F z-9Cf837^bVpn4X~uQ#H$*$ydyS0>%2T}(c$nY{W+4BWIKLEVMA1na05yj?F*8GP}V z4Z8_E5#db&|DB{W0**uoJZu{8?GEbhF0HG*9p1kKVX-SY`Fm(l_Cz7`G8*#9kPuX= z`P~vA7GfY~$OWo-MlGG{*@h+5E!Ye8a0p2kIgQt^Iv;)}rs0~BEPBy({8~98ikqfM z%P6KHxHRQ>OWex)9LKnW)?U%+&gNQl7#_(47A@Q(b3= zX+~-jDzMfA=fU@xB85N8@)MnIAtdAl6EW&Tj-7Y>l)*8V(EbiO#kk<|_}8coaCs`K zz}Q|^@p(BE%Uxk~1EO(j3k8@%knUR7Y``Rn4!V(NdpT06ry`PFM{x5o02An_PWP}| zna+xANK(YDh+6GVJpZCAZJFWU37-J_V*l!5oyxACe-!($VlbERz6?4HGZ%#U06G(* zR*{WAYjIdB*kIIiMm;}SXu?#ByWwgJ0zP9D?GOS8jJT?>nd@A%Cc`?Crs-M?|D>df z@C-VuuOsQio>J07w!%@TIzk%7OBJX|xPHXCqFI8N)m7`6PA=Sjob(6d)kh<4hJ1ne4;lVKpi{sdVjp>9ACU_A=8mw=uElrlw*tLUKE zZAqs`H6VKIIihV$b;6R5P+@zT|DW;+RObP%qG<1Jaw5?E@ytmrQEN@`ZAD^~Gw9cl znqNxTbU3O6{z(bzRX5K%4EIbCP-QM>+OhxA;ii$OHCW7KZD&oPY$e2P1ur^WENg_< z!IpxBX5DpM*R=>ynqvb8%OXSUCa~`beya%2C)kwq5UuDtWhquxZ}{b;hZ_zH+!WUs z)1ug=EC*Bcg{3!Bz6}Cftf4&rPGu^h&96NFP!x78kCKkaknwRPa%b}7a?;23_$w1!KD?a(x$op*IyJcREyGR9lN z7+j72H-T*z^}C-DvWx}PqTFs8Tdj4~cE(UE>7P5S&6q!)ci zN1hLzX-HK)uqDKdy(g2dts&jJp>s36PP&OBUAPT|v4%Ym)f{BqOOWnAB=% za83R7N&tN&(;<1p`dr{SASA?rc%X|4YUVzgb1 z`wxI$LiyVauwvLvQCCw$q?~5?`S7O@-~Eb5RD^g0ZzET_Ij-4bcum45Oh(|&^WmG2 za9>B^V@XEMA66P@e-}dABJbxdAyEG`gI>p5qpjtxiNa-vw@qQ|FA%@MCdWQDd`}2- zlZ3~v8+HXnX*~$l_zB{Ss~lP~jONTcUEQ2IQ%Z1&YORD#Av}SP;HY8!uED4guztt> zjqYuWV0#^(H65BV9QQa}ru?Hi{G(#dgnY~4gCt}89c0M*lEP;9AdB%Ff;(y&X`XT+ z>E1cJnY$Wqdv&CgtgvvJdP2Dlr~Uxzv^Hyq#1zZ*V*ag@q*A>GJASJpG> zPJ>C877#6d*`;eUNxFB_rHc((7d!3vBN4GKN{7jiPS=}s{2cJ6x_d>&;-=q;BGG45 z3pdsj5Bd#Pv1lR2Uf06gZ8g}c2PXraXjcNKbjR zW)LE7*mZCSWm(e}bht;^^HX|zT;Pg+RK;#aBbd`rofW7-a{%oq7139MgU*1BTTABym|%XKWiOl6+Btg38$}-TE?!#rRtF>z#EJMHBZ7`R? ze;m*A*CCq+;@PIS7tcRzSVx90|2yClSVQ%v1@aKR9TgC>48E>Zg|CM^FQSp>MX-m% zDrHFSYQc9Plx02e6T==iyw-EV(SyKu4BpA$hLK3o3vG_Ps|OWO8VnzCwTimIZyVO> z_&AzKTT}Jg7c*FMefBeg(+{{*Q0TqYg4Re6&S(hBx*o{(NjQDMq-+iHa9jt9E)-q8 zX#y%kt585kbnmvDpTL2aRqgd!bh=N`@NG#a`pil|{l}3*Rl=YyR3v!|4I_Qsv7dsy z0h~2OKg&upsLhnS&jKGs{<}AfOTkscn9hW9Y;y_9ErrT<%gH`Y*bMkZg?649cF_ei zdD`)Rg>u*u0zXZ-n09x7Wf9_yIdnf9h1 zO$kn;oPK}ORN1)@#(@yPO7$7fPgQP3q2xRYxo1_7WQuB)+-D6A=y|vq_uiLj|N2AO zkf8hC8Wlt9O)a^{(V;CnGyPe~R1aB0G;aHm;%A=oGmM3T9x)a1J~p+o>yX14c0~pY zCa3ey!}}Kyym|^vk5-1J+Dz@x4_1phsjVTZwLGljY<$m;wV z^7?D!D7Zgx^`bL01ASc~ny}V}wL8`k;ZOrAgoL-N5+baCuO!%9gnb1m{~&l@f;JPu z!Z>Qb%!9p^!F!I4XUb`xmcZMRtB7}){BR2c{vea#SthEuhVKbsZ2})f;k%)ZN2dhC zC&1qId<^(Ha8Z?7e-5%KQ=9HXBh_a3JBSyd#w2hnrh9atu->K6bd%%2*Ia8bf{ag> zt0h}@wX*8bR9Z=2_f`}7tRJ!Wn(7;jMU>GeqveZH@0g&9dFQni83%te#W{eccWu`CW3kWIO}ddGUHJnK1Zmv!mC&vF z(6zF3&kiHf&z6wEizZ!NP=VMMrOSNJrQ5Y8UEh|163kGJ^*#bV%phyD6D^J*Z?H(t zL-wj^8f(gRM0aZ}VxOrfHDdB)gC^?kHq#0rj#m`%Rw!8qa7-b!oiZq7_*YOBx|o8p zEEDFx!$j%!I@o8f6N|bLAw?q!e;?Cx@rd40IC-j-@#-<;&8UWusc2?Xu9n%XVIAlk zgT{oHl8So0DX%O2Pi1()6kQC{BAyhE0RrG zU3vN@kD^l&jo5b6G~27F2C=^^1*}2oTSqAAu<9vnvHS8Fq~BfP9zKPhc;5T*DYR;R z_!NcG`(qypCS@(7(D?K6IaFGBBQ68l9D6ovaz=ZQ0(7JFqtY91jHqD+SWQxpJNYa; z)BATCc>0xm7L-g>_m`5oC{Ma(Ag;y?L9Z0tuO)0f)BEo>8KK+ZusRD^e@WLnDjD=Q z3Of68FWBBPj3@k~q7I_jTchY_HlxtG5@0u1l+|NOlhzzYi*UZAuE12L=YAVS<>$fc zOhwBkbXG(%MF!0-eYuIC)IA8}GG9=k`hU!Xo9Kh0s*I%Yb<+!ldsjh{50Yzj`uTnjF z-1i|qhuZLZ7x;X94u=Y=1XSvden7fc&>#^jw=$y?%=byfMx~e zTt&|kznaft*@cUDL`#W&a*M1$+Agj+FdEwTvDsPE@Z4h>uF_I?WX{?4XyJz zG#b5*3WZO)hUP9A-kRyKm~H}(6CF5qJUE_u!+7ou;>kCRXV2jC;OPNHBu&Vo_MvAl zBg4|lug3GYBO{h^FP{IF2a&3*IX5il6S(2ZrFR;>`wl*VMyT)!ctc<{N~WJ*M$?P? zB)HzoKgefrUp|FeRE@rqPhnYmUp?8j6?v*a&{g>yieHe=p~5H85~*b6GYzi&T#b89 zM+8*iljtqz0GV0v*Fy2;2wa294A>4?;Ux0_A? z>PC@GrP^QN1ekEG;WCO~_qdRYYrsqa>sZHME|T`GV}&)Ww2IZOVXbS@fpw%4)1f2p zdVboKhc2y>AK3f%Dz^H9bkKSXziQRg#b-iaQt0pzq|*iIxa~vp3?)dcljE&x_`-PV z2gY-c$3|}uPrhM1d&U>X(+{|E#bo;aufy|SiFcY;%HbCL-c|N#k5x$V13YF zFFBvURc#t>*dGCd4)b*!XGg&u6h5>;1f* z$#zDKWiDj(VU%|l(K(GH5&oBA-7dJ=)4REwMz09G=lF+)Etj#!*RjzucFDDtdm%Mu zigISCPFS)nWGErs=|Q?Q5xUi3It-*o0k(f+@P>d{HcNi6$=T4|n_&<(c@BE&jP+T7 zVwH3gumKYwV~o#_r%wK0cy7WA4zn>lc_SOcvmfEX@bv9Lp!t~pdOUwO!Vz>xaBM7; zz5~23D)z11%_mTUg!E26fsUvll+mn2XBqo21)qV*Fn2khi_c)vRRros0`Ml{Q)og; z|Ht96`}qg?6si+~TX--&hdcQsmi3-2nX20ROlL(_zE>dUlekQE#Mn=AFP}vb4bl8M zK8q`^_gafRo|QaSA=)=X`IlVhEmml@8WBnBw?fv6@qGJ{On-nX_QjH-(0){d7>xAt z9b`y^9h_3V(>0Lfz7e8HROB(+j%fPgRL>g@CtYHDeR9(uA-nL{KI?-m5TX; z@;Qu>^GUR#qTO!IaBw+1@uc0$C$Ub|dvA!(qAmV@l^m|S9T|~7L8Ha58#dzjc9)Uv z1b;tCrs~Nt6YHpM;K(riCW>y4BNX56q!Ht*s4zW^BD8svPE_;*m(IKz@_o#tQ{xdi z^@q-tLkFAUnOaQsieu7Q+Czt@&}aKx?bUZ(913+%qybf7D=oe+il<)Yi{rT+bq7k7 zI)Obnp1ifZF+BS;0_)W9tMT+Zh@->o4m`cQjn^P*?gBc+cZ)u6A8{|9zX3%9mHzH| z7ntZ{zBr#iW3(n4ctAdbOyT?@_wp%x=%1fYp@xm|IW&0AC-Ea!+O-^>@SwpNbWm(x zCgFVq8R1uBPd3VD@i=)@a|NB~d{Ij1|GB|T^wHl&U4bQ_XxPJ1lv_a&=NL+FZikEx z65gErB&@exb&WBw@41Y14dOPK%A_01vGxrnr?MFOxfzZA_9_BoRuLTirn#4*Yv8Sb zra@<2h|Kwr{YOH#$IvwffB`2}m2aE}!&5&9p1UUgzTz9llMk{nJbPtSb&g++r{8Jt zZi>FW-;Jm50dH|Bdl78G@5S@)bL=uoM;3uX0DHPZsc!Mb`2=pobHx(=%pT(ys?+Oip9dJRk z2f?Q9SpQD&>7r^~t*&&o1pZkP=xmd^FigZdE|YTv6is8$2OaxnhJDp#I37bq%iAuF zgQ1AL-VL28hYsBiooWglDNzdTqc>ePyuki+WE!b^=mgqq<1Q$#~*Tv`O6R6Otjq>1p2D?!$ zW1a`+Q>bS{d=8eV@=0LmVAJcr%qJ0{`dSF@R+QJSN7Wu4oX_If41StaBt4`{F@YRI z(|y+etm$Oqegv8Cb2*M_bbMP|7^MM|11q>dMbCyIxgPS|fp8_Orae1nN;^6e3}qTR zT5=htwoL8u>5$(|E}feV!&ov!MV*F~%kuVD2<}LeLwONJ!rPjit zUiEwN)QzS^T{Rdk$64~3h&{Ve=(B2Se|!st*we8o2a-1MUjnVsA-Lvh<3-e~-r*Xw2t2*N=s9!DJUaDdhWx*}P^iFXP?DngO%tK#R>!~L*pzAGT{Q%I z+u&d(kMYZV0%Hj6w-AEAF65qfxC&4O85vKm@!K)WM|8UgJ_9sjJZ9LZ;h{296!o`M zG2|>qXn9OZ%pX!M(6S%+HYx^Y;B|;AzYp;_Wa4x1cMZ-2gn2LoK0~B21E`(0lwwjc z6std}NZDF|Zx^tZ6kVV!=ac9_3UHA)!I0-!V*#Oc&Ex&Y+OD=ALJJ)}ACdYIuBDf}3TC^VWTZba5P8nstY+C=(a3aIt zXN~My!fGly;88BzrCI&&aNho(cPzJ+vb)ueOXNC$7k^ADHxyAhMl_7tjE5b9BM zH-u7(M}hr`#12#be$EBI?XoY1r*7tp;kn(Rx2$8kBUHQ}p4^+XxW5)p{vdev8DN{M z`u-qz`itOM6soS1ZO>I!#5SJ_#s^`|}ALs)WA3#3%4Z5))8wgoP`7 zK0br1dba!W8ElYGVZ(e5zsx7mSym^en_tZ*(HHyKj-trKgY#KTna0Q;O8VXjH1}~N z?y=ePnSilKH=l@gshm#zP&{irlJzyEnYuZJxDLwpilXy3*|f!<6H&S%l?)g#Y&)U^I}34blgSbjx& zT=DRB*0ug^Xe7RX?p=y~xJA%zp{QvQwPrtd_^wMKJAfB5e8~bKYkIDOp(6#PGj&Ni z)ML`ATBKu@=wmf>@F3F3w_ThEms~nq4jry1pIumT)#FY$OgTl)WwKzGWo7P*r=H1_ zLx3#gop|a~@$-+lKc0IbEa(nXHGU;Qu>e^~)~M3oog>GS54nm@70(@&Q(rW71?saL zPd;rAj%V)%nz9GN)ANW&$G~zt|1AlIH*znY{}Bm;6%Y)#g6D5{IG=(oCaHBaf%4Dm z{;T-}_UV1S;n(mP%tW}oXm{}$P%tQMoKGQJV?%rn94g+;C-Ix`YxyM3k)M+LGuO`^ zl+WTScqigV=s?l%yAcs@mGbySQ+;X8wN@=??~9=aO~iQ^1pj`>u3NP=X}zxB_kn#y zKLZrPyDJ6C5Xa$*krph6{1!}w&npg=w|}cG%Q89t!taHlxS=kEU3YZ~65=SFG|AU4 z;9Q3J|HWJ$LE$Wm=%M$U03!Xa8w z*W7Q~tjSE!%n~ZVYy$t0`qRD^;rCXxf!G<>snvD7ScjKuC^RmKD(O-P>8fd>tO7 zdmlv@wITc^V1EH_g#&um@h40<`@E}dI%C+H>v;M~+TdZ}2VDCzOm(KAy8gXU-?)~r zePz{-RuLiVE2e^4W5`sSA~-9eIz)X^u?>{s?(zKesb8QJtl2b5yfwjE6#FhAc=8Z& z`c~-94Wb@mdd{LLMVXS!P(}uJDx#YLss|iJ$B56GjMWyTBjZM*GDK12m+;gD^;55# zh7Q_L*zor*W|j(`x}3>E??nB~!GiGI^9B9;r2-r*h{dJ7pcg$?hWSh&q%M@-|03jI zH~3r)A*?FcV=pSCI0qIdmd0$3$$bDW~Q-;uu)}oO}Y|scoCzpUH7XeC8tAJmq9p44cfLyR6pn zXsmOFQnx8oV|f>?+o&s22-vRmId&+MBbbS2J{8|NK~4;NJ)ZxVDXgC`aUuK=%|B!X z6-=87lD|b4m%{1L#rOU0gL-;HclVpP5&A;6D+6+6;4vuDn_#32<{G@H;Hd}70k^fg z@zlXs!xF+%7edGvT?-PHwHg+AMG;)E&4#3Kbiu{$vIA9m4{IIh2m4RTSP6VR$CKNZ zP?SB8H6^^9U@F6|XZPaSUoctP^RDY}({))QZ}qGrFEs87=Q_i<^v5QxqA^}aQBi}w z=Br>!NpRjf&xc@(Hkjrn>kXd;*4) z{sVcVU&Uv@5rdBm?{(}ed*M#MbbpI}JOMNzVI1MsA04c@T!|Av$8HJ2l~IL4FI#=6YFzHDz*2 zr%+fw>UnfC>^f{`4y6d+kGjADA})O+Q#We?!NhmRd+#&o$+Z6;hC@9V&$j?9@g;B3`muWN|EBur(}g1v|b1 ztS1%Ct~h*{V6So)ZkxjGIl&#-j^^_(gz{cDywUK5TD(2MrUHffCE@G4GPv%l*v6Ef zO_LwP1o)YPD#4pvq3>^I%C|l>{3{OEWE1&N#=(1HecHhO)ZoPo?=>AG-hgKRZ=lmy z4r$}Oh|-<&jx`{w--UX>g=ov|%{IhmKqDLDQ-FL7_mV3I-%W7Ug-}-%t$=dgPsx#+ zOXQJRrgy{RJ$@^$yNJTtbMYRPcfExaWWuDl3-Rph$Ph2bo*kxof)r=tJCh+p|6khv zGse>ETGIrdwa*FfeMUw^nn-V$nY2kyiXx>;T_aPsu5P&os%jb-j6qM&Oab$MfSCpw zjY0kBu4xRa3e`1LeN{$RwL}Ws(h2yq0%?4xq4hB8)`~iv6eK`+JbwjREt9zl$1&~I+475Pi)6;HTC~4Ab~-MbVJI_BL90}X4_S+ioN*;e7UCg) zreCTi1aE>_ro_rn9AH9O%}-;~-%M~Q(*rgrE~F{qt4S@;Yh+}e)Z!BTs6?{_hH5u?Y8fdZZ@M0Xq>DZ`aCWU$` z6Tw20X@KIGDV|>fA99t%wgVTFT97@~UNLd+?+w9j1^XHJbFKtf3gvN>oViA|Dd|D@ z3|QfT_!I!)*{^#MzPyRNh_Mi$6DU!978#|+cx{SeY}TE4tu}=D+vvjhX(+{>_;c^G z&c`!MxD+h#5`H7Xq5hD`Flc^Ba%JtVY<6ROP6IL^71W?M=Bi>;Tsfte(QL&P54kj| zd5Dc9#hgMt6&De2r5=xmUKPho*4we-HUFU9%R|CnINq#VCP*Hek;O+ zkDv~(PE)JwniufU$ujh8h~Z^J>^Z(GVH1d1^?V59rzl?E>?(QGA*PydX7H;djC%?+ z--;gGk4S)gFLGP2Pz}zT+B zA{W@x2z>RVD_MQjq#T=ExvW8o{)5^Kdm-dvE75HSw!?L{cjCr9@2WO5n{o~x zg0C2KyK*C)+D>kVlFgVpY}ev<8)82Xo6g7_%fO#BY&yJ|Efh(}gQ_0*OoA(ktRo{m zI%9I7}K#3OD0kNkdZ2MPCd4g*e<*F!4EgClA`krCe z#vOLKKNnp|qF(SC7uNcw!AqH{4byQe|HvdL2fdi}UI|4>CTxGd%YuI#0<|p^?Ku>R zTt>D3U5IcZl8WA9I=B!(n}`Fs3O-;3k!V{Ojtp7hqYmFS8PgJ?178PQ2ydqjVF!*< z@EPRjyxf)Urr=X(LAU-O(I7*WPr+7P3fYW|@(2Zg0rB@1ipf8lP}%k80)kbI!hHPh zv+k{#2k65#PUR z*jM9HNO68A;_sc|owXSDqU-x7kg|@rjMuEmfX<@5|9c3ib-4(Mtlm^@=r<*N=UnK> zWMVX`L)C_EgKvPfn3%LKxw;GoOkQ24(2yAm-h(8sWfJU0oZSIa=i;J;2dU7IUzvI{ zzLM!O9&v1U^jS24ZE_jlS6v>^^^n<<2vYyBWW|%#BwRNgKm?3)23@X9{dFmd-86iY zW38sT@)_N{9P*;p+k%>Q-b!%T#Tfwdfa=j`so7AN7L%tl?N#o7yKZ{U6@*J~1A8Cc zQs2@6KMk&drK7`zhfdqeL41N&gI2)yNt?|*6O{ccG^ukCn~7fXPGKQ zmQpB0BTDMr0S=(>Zc;L5Pb07N!=$r!gep9e^ck5)*I$H;J*H4&1`%$ocu{7)=7QAs z8J6$+wZLPPBYZh#%HE%p5wbeR>ykXAWiN0m+odBm4~&E{n2G&tlumI5>Ez+q|AjcG zdX)c~)q8!+)D?OH{JiNR>xV=u1xxB?6z7k|VckKujv*_!&x9F2@3K%oLzwQJ@foWj z2u~vnco}uH9XB1q4%5RAS(RRlIWRJHr8Q{{c1ky;&xfF$v?x)UZt(x8_=crO?rk-p z8NV*fJI#)N!?AwDE{8D~j@$n(_+b}K_I5NJq%929LoQ>|jEqDrf)6jdI0AOKvgYF^ z4gu8LP9sV*j!O7!8F2vI6(@inks{eu(>`_N2WSt@XVAlg@hN-|f6wFhk$CU^_}wn_ zS#{yIJ{;c_-^)a-<>mPIRSH%oD9B+J;xk_`J?jQ~_G`%4Jc@`e`oT6kw#Su&8VlFh z!T)^;znCQG2f?<8(YV^3xQv*CXYcuUExJS;W&3*&r2R$xpI)Ry>nK+>85iERBy!w4 zA?ueMA9H-c1tVUqsEXB6!REluAkfXC>*5@7)4=NqYjny! zhb+}FYTC&|fzzm!aULaqPN9TFZ6?c;cW!-XO0XQ}{tChZx@Dj9Dr}QC5%I((L^PTK zBPLky28AWN0d^qMD69d)zGL_feW(3M*4K`OV4cgbhaEqnhhv2**oK>?a?Yd)vRiN1 zK&A<~wekIjT)q3X$aq~xoron=+x>dD@tZ<029bd>6xZve*;EV$EES#c>3b+M1V!0V>7egYZi=TUO+I3k8=GOZ;;arO>V`EUpD zL#s~i@fj1$drIr~T_}&Vi2CvCQHSk5Q=iR1MF!$x=W>v;9KI5ZkPmcn=71o zThB+G3H$$5mje9&^_|y+B5gr8OoLVP2G;6$Dara@KuU1PmGBzY=Wrb*K+6WRCPZJ4 z4$YSWwtUqkoW0;}Nt0ib!Iq?PS~F%!PY|gr_oKc3jSo0OFXG09TToN zZqTJ1cTF@_twE;Xz`JTywU=E=cMGzsMmp$nrK6YGKSg8->n_)_10`c>9siYKhg=@V zBx-Zr<=7y)ai-Dq)C^plK+J( zuD+cle5)Ru0mzUIfUj!pHU+)}_J&C?`W$vUzG~I%u>HdDdY7wSLSe(I@+El0>$4IJ zzmVW1mtpvk-_K{T5Ahi^qOj#c5Jf(cRfmxJWaMBf6nqNrf^U?uM;+QL_?_?o`YSL~ z5`krTLkYetp0T7b&$>L?#KAvFYP{O*a8hm1b|92uGcv^Q1FxE<a%7%jhOgU@# z8KBunS*GOC3&3n9xBVH9X*aPU=L~-qYjFO#~=4#?GKBHaBQU<-0} zY*Qw}j9Qe?J8N>&2SulBR}s2u-Xw_4;4j4ieWaU;4p;5|qN%&8k7|3X%>yaZjDivH zugFudGlDdmJKkzV)_PY6L0&!iAfCAm5o`>EL2Tx;d+T7oy8zY| zN_Uf@3NRdNZ)rLrcQ!3T<4Ha@%6igUop~C zVO$L5t*(S}bW$)~=ZUYU!^qT20T`FJ;&TknXkBRUh=40>HB3bvU!*#@@lu)>F4y=1aa-5ld zufYp8;@9G0>yGDYh@W5A`CF4N4FT(1?e!l(vQ>obUI!bB2bqeEEF+h6PdrF0(pDl9 zK5vQ_)?=gUV)HI%s?m;7;JSAq%hxXKcvf%fZd#FWTd&Ktd@D&=?jo;YIE3Y(tK_qe zu=CqZH^qwx+ny^?ze^CVg^L+oXx|8us#dW4jAv=!Z;LQ$y7asso+lrdLitM}x2uSeXTXc*spFv>Z)W(NiZbP!Ly3>O z5|GmddrJ6NCf1!DdM=+a_%PFen>BsEPobf-i-@DKO<@+>(d9G^e76!rrb%bw;Fk

bqGbwY7r$m=zuB$_@#!+QwW8Z1S`=+1 z!#g11;=5mPA^37~k%u$g0FRg&V>Y6au*ozIyw+ve?z+N_9a4OHlqcY3!t+^ji&8MV zY4~238+XfsO|`Jlb}`o07DDARW*)7$zFQmtJnw2KxrOEkludb%Ho#rrn?+PsJet8L zsQj~HYCAn=*!KgW_plC`8JGKU+7X|^pu_(g zC48oVJub`tlwlV$DM0WkqzN?wWH%CN@49j;&4_#9-B{POo~`C8e z|E3W1JE44gT$uJ+S1B#8-!~%;hnwi8nl*U_ok*cx4Mo1J@Q*Xd*e-;i_akp_&;_$y zLm;X*lghHSt_$LnOVMXTj^9LkJAu577BBb#8nvg^i)!n&KusnZu`S?3U?xZy zhCCq6DF{Qe8}&Mr!TXbF^y25-ME`xw1CO6HF6~RM+{jX#`&DE>|1ykiGQ3}W3T$`f z)hr2HaT?`=8YqZYM^M6dES_T=O%l2o2-0n+6nqoPHWwQ;9Gh?!fhzXKVMgz~twh#3 zx2h`$*wTZn`GTwFx;-`#*)A7G{G7u8q;|*OHnjk6c6HHp#|Ac_7S&79Lc4~r z@pY*A;)kYK=1!6lZXj&IkPByD7vEj)!S(|Fm~Lvjp^~3X8up3d2VD@~>7>;(3?_G&H@OHCu{_ABY|y%TsZiMaD9;s$6m^%Km3H42nNFVU>T z7w0pW@CV{k0C```W~ylq>b)$QLWdh6P($H?^~HCU;=9WzTuV)OWSgGHLb3DS{te>a$S7FAZDE{6ir=w(9jV>b2D1x-rEe~(44C1 z0&9!&c^ri}^)92C#hzZK@Nhcgybp)B)L}vQ?to##N$>k%MaFUng>Lhq^!t%fOl7RM zBE;?j*e%DmnnL~EP_EJ`IrvXPxhBKiXfy0;{KArpZS=G$A=OQAs97d zE*RSfgJH>AU`CBqk8uIuZ8lA8f;nP|VK z0ueR@{u9(m*nz^I8FVuYi&e-bPxSvnqycK*38+r!D!eiTp&N2^uT54nfO6ywlGbV$3H9WTK`s3$RHuVnF zT6-5bg-~tVLm}rwj{3p?EKsyYFG$&FH#OXxNAnlq>ArhK2+dgtuJ; zqVtF!(vX*%!hpPC*wIWfJ!#5yoHRkb%@ravB=r=mXR34ss#G`xg;v(=8kZImdnw1B zet_f(m+K#49wiUL)DrB-^qgnIJNuLP{SDv=Q^CywimUG-SL+Luq=ETV89rv6q#Uvu&}_ z78%@T6yGfwz6s?C3~>SUB1PYe+|Uig9nj!#Q;=Ia5!uANNzuxvYLGWrHA?Amc_D(T zIvnA_`3$;vAU*~C2?O30@A+Z;&WHriHyb{ebi;dm*T?bx96xb4)|SOur?qygCFtdn zT4Niiw&{AG%SbFCgHs=JGYuRyVJS9IfP${L+G)FyhkDS3hRY%bzY_VQ6;w@`Bgkn? z-pBy>Cn$tlKzRh0G4Rn$=*_lJ&LxMhf;Fqz$ZEinsX~^(_Bi&J$YVTbY6<=?U>$}v zn&SLtO>o_17tg_%s~mU3b)(mV?=r1-n-}a@2Vx&*(RAk}$1Y@&lPN2>I!hHjW4CEP zwxFB;f(htWi>f`-HQ37=Wanz|O0CFrR%`LOTFN#N3R>&Jdbc^gl(2v6YJS;?8Yw=F zTXfjuzWqB_PjVf>>{@~?73{GnrCf7mHET>+`uPA%B;ZH-H#_9Ivy80tR?{%UKNV&= z)q-QP$_ueMx8#c2c2k1n*}z?&bB-W5IoI>cbp~%`#$wTr-la#he9*U30=iQVc@R#Lb$*tzW`3#16 zAU*{^Q)-(MX)5CKEvSzE1bC;BhBJ5taoBPmM&z1%Jj)VA zRcgsq_JhKWkBi0HEqMAhH-JVoFYsoP>}@sWMAi+a9A88iNJpk{Btvvu{ia5=t;py- zhjI)3DCc$8;n@;)HZFiloaau|UHhTwvg^)*NW?T*x+m7Y3f#$LL^_jzU0KLLo8LE{ zJndPAGl?{j;TuVwUnLWthW{9UAUyYFdoVotlszDx-qp(bXPKH$CJa9aeB!?sp5K2} z_xXGR-P$Z#T{qcyxVxwH96nLT<|}H0Z3(yds!JF;6*AEYTun;)!To#&C2&vJqnY;m zxYo%6RaBj~C+wQ5&tX#t@f@mHOe1C5ql~j!wn(nPhp|U|&*I>_$eJ1s({`?VY6u z!;@G1i{a@fz`qLiMy&s?1(Y&_Qc|AaF257cZ`am8pHE<^jMZ!?M{zckYJ1f5+kl>m zm}@eW%rsYtvk%o{`%!tYM@nP);1mdSn373$GxmEw0=!&7ITlCXbJ?XhLvgU}Az-_Z zK|Brih~rP1nxE>zW4VYr%mzdG4x?;yCPQQ^#B4JzbuCr? z`zoKr98#+H`3#>#b!7TxQ_}BZtZSZv`n=8IB`a|JbFtPX#OQPvc|lLa`wyCo!D4*( zZm_R=fl0W63}^$&vrL8eVJ=ykHI>Y=@W3iAFRZ!zl4yS%L5il=`|@AYR*gE!ZatJDLwlxhCm z7{43O|INy8<`W36{wklqB^{F8G2PG&j!o8x&!FT`7kma=gU?_tlks~QDO5QG;D*6r z7uqhbW1oxlXCVlkrkq2D491n%t3f1;b4WNN<7?9n6~pV2N|7V3_R{EHv#qWhdJZL= zw#9zKAI9gf>`LVA5BV6R;FHL~MDyIwC(&sV`rHNoIR&4@V93TAie;BvKW{`K*H6(c zdYK}*w-w2pq5WHp=jb%a@p*J(KI_HIfKNk4d&8TkMT)=S@MMH-Kgkqg^|&sqQ?bU@ zBv^5~WA)&7P%fZ0^aQZCUEP?ES)f4;o{Mmy+k|Ai?aDj!qwqIc$Jrm}pSPr+M`6@p z$ii}XM%!Z#9Q-w4&@|k{z)vJy9Mef)t3I$beLZbxmSKh}O6O6RVxLofU_AFB9tcnF zWz#`kHg&iq*UdVC#%)i=L4OXO-o9(_5csPI+PT3WjOYKYd;;ggD|y`tK7l#JX1o|e zGg!fvlXkiku9i{o8Pu7K$40EXj1+AFDbuz%Xh7mZdwfZGhlQcswZuANTHCj`ICM%}76<@Ugs<{%+=T++D(J=ZWp^%Lst9f|3 z;acZpoW<)D<-s-t+^NVzu$vTJf}G^n*ZbfZ>zILeYKUPqm-!(pfg!1lRx^Lz#WY7(&Qs$-i_hiL`rUfvkg z0Q?Hd{D=p`a}V=CcygOY3b`s{;BAJTL^aQG`<-}tzhSb@^9T{<{6Tnrhw3oM--}P+ zmisuUIkaeF7=M zWSsvCNtee}*I2GaSIq1tPwF%>OwXaL{;KOD%VYb^7K3(OA#qcD{zJgeO=Ua}4;Z6WAAG(rvTfoj5b~T!GI^uJeOnCm>9ec=i8#bfca#JYTgsTU96WH6R zJ-5XKUmXLlqsk}1ELi6FH&6?3v=RS0p8yScC4wrSft93Kc1kh1&#Q-=6;s*oq^bGi zg1RMHLJ6Nixn;gH>F~E3_ODz5e+d~>LrpEu#U5`+K^P6i7&0-*9F5QW*n}!O=;|%c z&vp`d5PKrqOeFkH$7gm)$Zg$~<2hkEuSY$QlHuCU#qHM0XZa+a3;DSdYda494}`n$ z>xP}r3MQf9P^3)?GpjOm4H>)K3tV??!l0?TFc@cUArA=|-RrK(!YIl?ycF+y2hA}U zG0iWipwFubLBC53_i#8;77K3zrd>FJvk1oP$Z$CFR9mwmj63EvtLmA$aboh0#)_sVl;Q(^? z-a%!!aqu~?8gye{L`kAGglB)=6{oJoo;1hjb%xSrs2mCp#OLt)@=4eyjz4Z#TXsL6 z1jvh7igjk8T(_yR{LtYFPfmt%?Tpu!s7?*`cTC->L&(TBnf7i5g`{6KL9(B7edcKt z68uTh*s-!JtgCaFtmr!(O({;wyi+g3&uB@?S?_|cmlK@M;8*d!M@*A=FNFs@9{P0L z^zSwb&Vq70Z)b#8KX)1bx_GSv4QkyJ)e8f5ChT~o>dg)pfvi*D9=c;s+LFBZW)w~| zMVOM~b><>1^&og|Z{&gS8LrP)!%Lu}n*T4;YGci2~ zxz%mR$i9Y3r(emc6xn{o)Yrb`_)ZhB?&zBr%5BoD+VQLO|VNAdRG zM>lLI3L|o0Pc6!@??-(dxP-kKg_8fsRh1Zt^L-R~UP~09qg>cy67AL@ zQ%Ugg@D5rdd1k5N-Y^~fh)bYX!|mE)@N@8HFYxr`a4GwNX2bhTbY$-U-!b9&_hiEJFGcKi$^y?H zH`@W%flRBBh_5>|y1bAk#rfV8?q|2ln;1p$-V$o{tVrm*8|+X;8$J<-*`(OdKQQqb z?3dE;Ja{kIwkY*<#o@ji*1sbT|75)OfrQ3(MDHDaZc0snz+ZxG@s= zHt?ifjP(C4dma;@g2PprqsKtA|E58brcEV2gsdYjc1q! zF1xr7o;18!dtlF)y8C7kv+jn)_;QLoK<*{fAn)V~N)oQcdpc3B;Sxp7eZcg3yQ^p6 z`zB-juqlyufg)sBcjXwCP{n3zDA6f&i=T9TPfddQq!4GTsgtiJgWaW=;pb|s+6=sb zLb7DigTWM&ev#Ml0ad`0U2~OsGjtjB$FuB1#{VSpU=AbCswUk1X4lY`Ih0f%yJ!DF zIh$nSlgLY|TQV6TCqi>bz7$#hCW_DxxW=fE)TY*!CDxREkNlCg@xwHON7o_)`;kTk$Wdqe@n<${k@t--e#v7<% z=!f7BJH8F!`Rl~Khdkr3nkYUB(7bfo|lknN624e#5_!_V&lLFRiZ*0tj2}rIy zMhRHR@D3NkZ9NRi0wO{g)1lqRXRs{cwAZ4^BcW1HC4{pgaH|d-^mCT8P{i?HT-?U zXA&uMC6D{G7O$h=llaqE^QL%)e;Lp82>0+wpl5#uH2^&?FNmpdlT-ZNO|EmevcmbB z_$(u$ln$2%u!@ZGu29B)m$$o+!9PU?vQ0*VyGfVcSwtYy zkjX>)*BLBtD1`0XP&@UtOlN*R*0}=yG0I1r$YgLYWeR_{#q-spaC;&2>~!qkGbo&z z2$|`N=e`u4!mY-sE;Y^s630pC2}P_P1Sd>+>iwIB8hX>}9_&3OC=H+8Um(Y~q|BESCGwn*i zUPj7t*HwjhlhE&?m(`3Ly~7V0Sp<|pDBah z6VI`h$wS_R5|iaH4z;Fmqb3xw!=&I_1FBq`!T-f&IBJnR?;^&2#pgYRJekKSsx$|X z5xo}Q--L|9IW(ws2>hRgw>*ms*p8!P5nDnsfQ8;o;%;{EiRX# z$#rAgc3Jcc-FB^xe^RFM<2pE0(Q6~%N0XqJdx9;+!2V~)`dxytJN|yeRJIyL%sD$z zr(LhZ-_O(#)PiED7P;*9L&FXH;Skp2I@lb~Z&$%?m^%NO^xaiF|0Wln|CdCaSm6&X z1fPIo=S=QjPJtDC0+cEE1XfHp=Qv_}*@*;lGB$V?@fo}<<@X80YcxWQ0puo{%fN0R zH*-NZly{oA7mkJyY#_`2KcSAu+$A0WzYKIb35Sm0jgRUIJ%~eYwyf4sGwfZJ1MNoK zR;OHl7Qk+32&la)uZ?c>yES&-XIfJR9httf)3t_ySkq#x@qdanZ^Sbk1>a;!wB~#g zCv(p(-g`5Q)1x84$u)(zH$2B}z)@3de$b+d6N(V{wwer@EJKm{NF;6yQH($m}##@kPLpApfLx!lq+Km zdE^Tey(4*>@KWBJcE!Fhp4;1#EZvISD_@ISaLrU}y@M>@KL0G9eBNQ32_&-!wgY?| zyq?d+)91Ib**$pr?U`@_gZ78x`P(w}8h|Y7y?g>tbwz(GpFoQD_wbwf45m!44e7SE zdB-eKW>sWtnrgy_8VZ`Wv*?UgBzQJwWNSLq^h|hiGl+X(#6=)UMP5@2 zf>>9=hx ztfS8uG@W+?;!S8mrOuU93>#@kn(*5m3V9Aa>vO<6p%c4NXgU;Y*@a;H#{#@J?FGv7 z4pj_+x1)xo+Z2W|y1(Xr}LNHas)2pO(PSQeY4o z3>Ks5fiPN^Z1aqigU;FB)mR)n)X4W{RaA$#i(NA$(g=+2rRI zgrMMmgy6ORqiN3IAGzHBCdY5*dS>O>d{zoz$3meG1r&8QI`c{{g=j?a`v#(puBDnka7$v6Y0XsI&dY#x z23dl+gkQ-pujtu2QHAApeCAH7d=6B=XT!KPaX+8LKIM$)bU~4CIljZxI5Q6Z3&UPP zZPJxYH}ZA#ovkQw*6aZjr{Gg)L&k10l&uj}nXZ~z!E>XwjufA`gyy63t;6vjn6MH5 z1R2WpFreLKc?fsIi2eXwHf1lsHtX@db;w(&M}}xy81{=Hw^xAOWj)VKCJ&&qtk1|c z)CRmgysq4tOy9Ja2%Z5{j9-Ot-08U7rYxa)1KQJ?&JkG^h`{b&b@RsZ27B;-n`~Q%#** zXkRmpa>}ax_NEMl|0B6~_BO#Ma8Et>!z9D;EiY=Ut6}8I zs7tV{Th0$ERALQvBv#_kRsf>$7bqY!GkP-vf{+UG%EBz!L`>?0w=J3&Eonm^x< zkO6xvzHh=itvZv8i?Ink$m)zEO01|^iy{e8g=G|c z0))`_#|Ey%;j9}pWx*$4O0t|v_*eB^_H#5ZZ^<+xFwejepSd6-V3%B%^iiMZLz*#qIJ*~kY zzki%W!?u7FXQ2>W|1>FvZ=>K7xMpCcnGUmFP@SzPWS~A2a6DuuSHSjAl;5U+d1K6U z7>Bixxm*EPT;;x2pfkaGMd-Z$e=Fb;0yH(o&t{1>X4G4dp()ve73i$UD2;>;ZLumA zh6Ty0XI7<0w{fZzY2ISkY1GI!9${}ia4wpSmL0Ykep8+|Lq^$KO3+_X>1`I>_BAfo ze=vj~xelNW>=Uc9>97nuk-^0f#1g^#XR1T5nd+Xk$TDuYnlGkN0%|@K^fD@Ae9MJl zZ$z-m^IpI$Uw38xC&L)jYol$+qtvKFu+1)j&@lp#6u0+w-CA5o8q+m}6uO-U!c&|3 z1L3)?-oF^0ygroC?1Av?+~I-n{I;5@kD@P>uOnn*7OW?O*Ag7g3O<2OpwY!J^$DtZ zHv+v0+B3Ph>!vD=n-pxF0ycgz{#_qGYXfRG^s^g8a@pi&-$llAI)fKo2|{-%=tM=& za5|p985xZ}?S*xNPlJ7odM>6Bd-f^Uvo%pvXmVpef|7$r0<^R2YO>oGd$WYx^L)O+ zy7a(nfSwKPU!y^}Wa_ZZz4F;CO7bRt%qAs~Sw`*frPv!oovEGCUf+S5>}p+O%0?*$ z>()q~l67xXSyNew(#8Usc(cXfc80wV_A9Utb&K&K8mH8T4%kqMDb!aURG$_%<0I#Db1Qv6=j zhdJU(VwF&~_fCSM5|B7R6nVQyWkw>?vFq#)p^{NN_c8Zw@E+(z( zVf-(nu>B_TQas6s)Kl$@^hG7yZA@Xe`CsGSYO)5L`k? z%a^rw&Sc8?HkIICRU{bsZ9e0=fm=giPDoDq(~>ahfoJD*2t}WXJ0Rcxjd-rDRPp?@ zS|~;+V;@B)=IQVbdb}VPX$^(>gh=Mbvt30s{0@}0cchq&v6ek1V>T7*Sf@H-olXk! zm=gDt;o|!mt$^6JA%l^Z;U-Z7&n^qHP1980+VDhk53B|m@io+^@eX8*Xlz`D%5aNX zum3~|PyaJh_2E#o1jqwUNJ&?UGX-TGyD9{HL2c@to44tysXC_CoWk@jT{hI@JmS)GR+E=Fd1Mu*_r zq6@Cmu?2x;eA&dYKC8|1ZpSVnMx6t3I5&{;T|*_0O|JIZTc(?(pZoFToyg!^HT-d~ z+GxDF1U>-%B_#aIuDJSqeAh{ojU9IV{kq}%fu~*6*tObFUo-e)R6D&D!t?8R4QU)_uV?D8dnBG^H&T|-*y|k9d=phsE&xxW zIKCAj8~3=Bug#0naZCIGxGE*3IXVQ_f0;_n81**CO}Th&+>;RK=Fq zPfbH}8W44UTPFUD^`Ozq2;g4eca{;b?hV7g>gsB(HGCX_?Ix9QFLM7PurUszE?Rik9edN%WK!dz*)|Fccs)>K z*h!NWcUMEumw?Q%Gp3f}Jod^$0IWb$zo-@rd&t#lxr$t}FS%N5H@v{JA9NuACr~1! z0lD$b{>AasubSfAze|-ggM*08=VRC3>-g<>?h0QJPi_UN#cBxGs>`MBO;Uivz>UDO z-=zS8Oh{*{c=mk%bK!q3f1T0SL_m1`fnyo7t81I z2^>WU!f7v*XxU(2rcTi-p)^k*`D{lB&WBBjzuMT7JYhO#T6`VKSqx?HUuR;lDgmz; z{L%}Gt-QooABtIu=iiV6$p;iO{Qf%>5==_=eJR4lLG&!wQTJa0CLJGEt2EaM~Ja6 zGHR~56LIRQ;tqdUU3uP)T&`8!3RYIeni;t?zR#6>c}9kS3ivKpbIfF>971=j@v7s8 z3_BdkP$NOHn-X~s z;034udDr{j&6!+@*b{_-l zGx#4u*()wXvlkhq(U8@V`0m5wGk5{Zb^z^chP9>;fRY*Ay?x~m*wn6 zBp|y2i@!OO7x1iv-@AfiZvi#z>^6Mb3l^dZvVOA`Jm{!~yxZ`4*Sxiw5UAr|74QoZ zTpv`tYW0qP8*CQt!?Qo*ia$>q{-OaqFrL~UN%!NqTlmB9++PGwejX+KHjrSqxq21G zUHO)Cu2~EV{=4z)ZTxOL|3Q@NXaiqP8jLb%a8adKJ|Xz|_$;45lPM8951-2?khAx! z0&hC}pAj+5v*_9Dk*9e(gXRbW{;{b^$1)kSc2|z+UN~+C*rOJdL%n*V8Bj>U8xv{0TBVW9Zp(IPR1Q>G!J1DBLDyC5DGmGKG{| zquX*h6U_Ur;q!*K286i-A!7$rO|TYyR)lj}b2608f3eF%I5ykhD!yX$Z~>9f9)2^Ku+a&xXF8LD$}a}gW3#pR;M2GSaJ zW=Ei(0R+w&i4B}GQkyHjUZS8dui~i_VfPEB~Q4>=7?OB1295it!=2M1y;_P~ntlsdV1YPIQmjZ{7sb0SU z{(nsR-BlNX>3{Oi8t@Thzz;~~DVusj+O%){CzR03FObG~PucIkKmuFC8r2JgRg+%a z^x^``9Dl^Le@)@Ze!r!3-tR&*~*zX z@PF!x%PJ-={vEEHzC{`L>U?-&bDQ+AZeW}E{Q2K7$KLPfT2~WP=z%#vP4Yil%Q;_@O`}fAVtOSr|7`e!25%tx27I=17 zJ9C>=@%)r1@civk4n{-x{|fkr{2HELiCDXYas=(B{6iVI6mZ&n|2td?a1#8IL9>yv zOqu*46vp(rl7Hqx`%R!elDP3U8%+3yb?_+@uSOn1z9A+pZpXekYM7cp zhArBD{VEC{_94Zr0Zy8R*L=(MJKMF7e!}EY?R6Q978y%xk!V!Ij4i0=WpC(cYdqUZ zgwU5v-h4fn|L5d%qr^rf)227OZux7#bKzb#BX>W($0I!OuSMJsN+2C71eo`eI?`To zB|B~y{*Y_#I|5itaDNhGR(T0qm5_LgJU>>Dd$)>i)m>3?yDy1?lysab zKfHG)mEJx!{7+ruq&v~GUZ-G0-atv5QIFdnl^3^DBypYy0k1`IT^mK2Y9lu41LO@% zA(-qpv<{vHUsqy=3W^mwk)b67!*zO-<~7p2V%7a_lMO(Or&xtpnd=LN(TEPwZ3wEGg$qtn*ZS)?;W+ zM2?L(qcid+lESO*(4W&3q^#YDP`2^@B(_h=gRyNcyvhP9L)KD+COOB(!yaC(-Je8n zq)4LQhUAk;12Qv*H%ukBWH1%+|B@*uFa|bdLfExC)-55m_afFvap31oit?6j36@og zpbVH}rwQmO5~5QfB=tbQN*(*jrM3-)s1D zc0Zo|Y*I^SYeu$ga3m`_8b|oTcxskHcvkpgcQqD2a8hgG)drq5+W1+#}QwI!d zEhz`F>atGV@&Ep;s+^RNQENxu=y``@6)C}?@RUA5rNEm=-sg~U`j5cBMgKmfJ@ZEm zZ;Nx-i{v*$Ugu&o;H)BJT1ME0^C$#tprFTJq3AQnA@%L1Q2R%jls`(>)WsTpE(7Fc z6OG)FFdUi7;NNuYyem|`Mv;hKcg?b_048H)KL`6rBe`SX^`?07P8@E%tJnJ>SFOKZH#s#STx}>}GlXL71ol%N zsF8u|57JQe)k=MtZF+yhJ~H$$yqyE5(PIhTUY7>qjEvXQp=gEcb!)E}&o>d$zvMy@UXV2xyX zhv64(WLx2Z8tKZFl}6I#Rct;m@CRKBIHHBxxJ&3}q!^ZB!_S}$@Kz}rJ+Z+3al6j} z6NZ_^&<_2+ZcbOpa4D&#yiCWv3nh~D-VR>Nub*6IQkm)%Wfl^5&u^X8(&2?cI z&iiNa>>tLu&Qo9&&T~JWJwwLS!!YG|{&s`5U&Hf{xw`)zM@Fg<(X0iZfHmIp{AI(o zyGFI&K=E+{0<(+T?Xh@Nk)Ff#mux2>wYYh>2JYL zqJI4dXXrO&>Q|F){?#mQ`3M8Po#0j`Y{Spd4cr!e4ohG!xCl&_O_XgprP@*OUziNp zGjSQ74ISuB*iSa1*~dhn`*9f9W@O;b$1^^Mat$>odwL;*6DA#JNm(8tjj z?tUGf%>$oASKv;E@1%lSd6$bbuFbIvu{m|XZO5~u(Oi#4eX|+7Kf#?SCDn`S%Vy-} z_((uY$4%DiP$VO}44)4p)FlJqHOS@p*NC|$2UFY*Wmw4W15?mM6-;3l!w5Vo<>dd1 zz#M}Fn8OOv)O*1kEuqwJpj<#J)e+Nd5D;XrD@wB2Eo2~1h2S2F|2LaD{MJKxO56ix z372o$3oy%ER%O|#{?`cfmhJ)5pc2%*V45u`S8y+wrXE4GbJpX(b>%1;k(=BZ&o=gVv%`DgJw9Q0 z=8^rj@HP^jmq#n8b$!9%FruLA;eIgHC-N-0%>7`hdMN=tNjU^4SamRgw(bRUg(FY} zb9Kv5@b3_YWdN=3d*CfeH!$*g7&Z~;E}8HoW_r$vNQ}RQyq2|)j{vjTG1Fx;0368f z2eZBE>QtOj9>x}t_j%N-U^<4um;D|v9Rky>QqaLqK-p$89rSaVTv6oua||8c0oMfD z9`Je8xUKMV^5w zQ%^SqoHY?}+DwgC9j<*^L7%ZsBuDjJq&nyz2)J90s7I^-D>jj>_!Ibb?RbrGm zQ@OAS#pUHtoG$IL9jRz&vdIgEopzmr?aiuiavO~OuW`M8Gh}36Nr~+n8Qz%W#Z5YP(eXK}_S~?H zVAH=$(y_Y+4?DIP3D`NqE+aU7hGu2vaQcRLp0c*aUyXg~Ma@Jjk|WE$le{_~epx6y zmJmn#3DigYnteW={(Y06-KHQ+_)U2J8_3W!B0T>QZNA^N&+-Yl>EJeTKcB$6CTQ;v z1)sp_q#NK1@)_8Q%iUf=n==;g_Yi_DIyAp(63BU1SVFuf#rHJmz^XBJhSpgRd@5r} zr>kdvudC7Nis`0o3ng4Y0+So2WrNop_9fjUQx4}dRb`$)*nznW#tolE`Iz?jtYzJj zK4Wr=lj$se?kcsm#vVAu?N{A@6wCezdfy^a#PjHTheDWdqoJ<3QMu@v3Kd99KOKZ2 zO`(t_l+61S?fGHUGtd;unV}w(yAJO={)9wyr7Fjo}4Pqh_vVQ_krJ zz>8Fq;5I6G_Gc0D^$MDj{V{l*>ykO-U~vIE_(2na?)D6}QYG{$n`QUShqqM^_v85qH)h&DpHE=T1s@*pqM74}7kmQU zz_e*Sy_pQwEPptk!GISOOiv-B(}TJfZgJTJ@b$8h;IZ zyOGTC3Z!uv6Z!%WbJ_KK&8Aqo)3mOSD!Qf4xMJ2U(_Fz59+R0|Ih9ElNM_0(4QuP&j`cBgA%(u744&gDrgnQ|U=CZd(w znVx?F$;LrM({>;ec&Nk4ZZ(jOtdQLhfv%O-MP=5T@M)FG`Bl;d)T*3|Jsf8?4jeGC zSGS=)hEGulzUYGEFM=(DzbaYsbu=#T8ARzeL$uQ)0^Q4qzjG*2ro#R6;d{Y;NdXQS z)ob2sqE()E#iaZ6n&o5@hhhU-T(?LGY}y3hsB=<&*9`Tu- zUNmHskU{8*&c8sK*}h89bB92kGufcldgg6VGKz68>Fe z#Pa5>79w*VO8O}Hl)*Ms>RL2~M29l9Q1@@dSZjjxk}497-N@h_3dKJhXVi+$tS|OH z1KXV7a)!^wdz%b?;`j@?sk{!g6xUd_I>Z}bM;+S+ehuu;z)$KNtn6yWdMFIXU$_!& zi(v@v$_=)QuFLP56=Ty+$6DKfK^MhZUxcg+E`yjQ(Wtd%3QwkE@6Mon+7t?vW=dH1 zI{tc@^vIe*4?@2h6JFPdA1-0@8+c84r&nEUPFInxWr#GV$CWgH1W}5eb@;PPp}{)h zMVu!lI-9sDnoVBAdvVT#rq0WfRCAyIw!y{m`Y*I zV7Mrk+LLa`WmlbfjcP8!=F#BETnSb~QI>#P;42~ABZ#KF&voN;Q)RgIMG1|yy9~@3 zS6FZa>}eD-eV7#cIZE^#NzvHk!C`N@-FiYXW>8Q3r|4GB!Wkp}kQ}uuqG8agjX_=yR;lRH%G-SZ0x5BZ!rD(fxCM{_Jc(}MMr2s-%9t?i zssL@5!ugd9d#oaUg}koc9D6u|*plketjsa0^?qLqZ|pkQP4FSZ1}l>Lo04&6LtoAq zeBFh5ZF0Do#L8V87r{l-1vZq)uzwuqbxog7ooQC)ado|N6?xtZC}IDkQ}zY>?0opo z!_z++?$=#3%wtuqktP3pJpZtiCa*QyS%cltidY+)wuCJAAIc}NHIrLhMolOmBG>4P z@EKI%;L8#sVYE%%Zr=yKNlX$p_@9A&F5uHGlX032;aUVfa;y&-j^{&gUypX;U3wmW zELuk2ja#mzBJbx8I{a(spdJk&f5jz8$yN7Xj~o7#IPhNNv28!nhwjQw1e3 z*N_YUFp{UdJMem(^AbhrH1D)*O4wk+k8fa8;EzgH{jRBBWHr2ovf(rFIXA!_K^MhX zrt7br<*%DTSSPo&6%Z4DKRS<2Oy%k~@xXNAfr0qE25#=lW*s*CvW2 z^4BP4L~hkt`Oy?c)D^;>FziTH#c%LZ25T~o-l>a=nhzBda6XfT0wno&ZjV&bq{bCo71Lx^t4 zcyiv0VsNRVvhx9#L0X7ff2+$obW{u9K#Dr+QowDJJ8q!5f0ikf>P(GArtVzN5hO(YQ9hQ4bDznZ> zcKsW!OX6NI-ZkWD*Q@`6P3XT*P&xL9>p~bnMzz!Ab$mx)Jf5Hc<1Nad*mWb>X_H{Q z4xX7PhwB~xwyX_nrV>~gtjDp=3_FJgJ#-K_eSQO;A7KhEyV`kkJb&I;0fCAGd(*LN zNU3*<6oDGVC(w@g1p2_AaO{e~c*>)z_N+}G*d24gJH+J5iY?{cjS^nAkRmapGXq;Xpi-1h_PNYqPv-5R^P=Wh1+Ze z!R4SU`E?s5Tp!Wl*$HHf-!~<3mQdFIIJ(u*_b}(8mtK!s{F=jPrpd_7hIJ-vOHyKR z$n?Im6l1%Vqc8oY&d`Sq-;#8$4l>{sjd1`6yG& zIf!nd`lL$JB48PmE6QE0J9g5s=5Tq}2)J>?z6toLh2mr)#<&H33;b@#K$M<+GAcx? zh;U^m(3}+$osW4jwyp&!av#`}aS;xJO$DTR8eK%wWwkdam-m;Knoj|*pi=JyRpZB% z_}sFo>~_FKlinOg;|bIvJzl|&WcWjfFXNKIFOqUv=h1}e-7XJmDvUXy#2(K+ru}9f z8HZz%5C02=IJV%*gEg4&JPXJh@YitfjCgnpe=wfjqs{OS#`8y;EXVocd;}+5w*$Yb@7uFi zj|}V>0>@BMQ&D{wj1|tA*C$Y?si@`s@4ustNh_hGDxi-EeKu-fBvu`tgMIS74@u ze{70*pNePRs%P*kkqlf!%~793f57fg!WkeX)y7+`nlSSQlbm!UHCL@g`vxssy zgNPtxHzJlfg~FLZF9>N-Ch>)ircqF6D6w%o7#qjjDitzj;)NIj> zGNOyFw%ZG)8~fMs{AI6B@BLgpfroW?_8)#TpMae*jpW)}!jAiI=QFrqa-lk1YXKeH zuK4cPlx3y+9>wmBwREWe+E3r(!nL9J_o-0wn^I^W`!yFbg$sEOtb0QOmze~i!8OZZ zG1f8zHV)p56lOdGVh_Wnqq5BM447-$R55E%6I3X9> z7ZAYZ*Y|&zf_3*1@UEmAZ{5|~K8uod4^_x+HDKNA%65;1;?E$%*%ong&L1Fv=EefD`lAvR*z;Yb3uIQEH@(GT&N5Q=_NSkM;U zn*oQS5>l%_Rt|$Pf~r}AvF;vM!ubaB)(%8yk%y2CabCj;d$=!zjPI&Nvog0t@;I4# zX6^}Ly-$fh`j98oWkm@4m}8g1FpQbxIe|ZK)ezbyTt;Qx;C7Py-Wx&>M+m(EiAEFB zuA2byIQCwq?C=<$oe#g+RF3<(;Tu-1`&xx!KKvczVxKS#$K3A%(~Kr~R0%ChD0X|q z@coLls*N;TP^R+@)5dM_Vn%!`SP)q-oWT|otai6633f=J6<^k^O_Kl}{t)=ATtk~e z;EyTOp`Q&wKZL@8U10>4k-OC%>w3yW200sU*sS4~3_oltZ9Nw^c1;+lf9~=)T9VqI z+f54Tu0PvkG^l`2f!CrI;aYUdwo=VHGY$NxqGacQ>1-T$GsACXfz=Nqa@>Win>N@} z!pAZh-5tnnpE39_Q_^y?7qji|-Ty%XKcVljbB`(DV}N2Wc14v(}5of z9jT`}#n^t7!FyrIJq+l7G%*HmbLF=Z>iWy#!fjR;pY@^2)hA#V4Exx`N3hp}*aYp< z3ze}nsgGX7Zf5L*cUnNrXahnw6a zE0-Nhq*~448x&UAzGHmf>Gt`mzLK!VDr#t%3?nlW zLKI~z+%PgF`3$x3{za^F6cK-13nA^*&#VUZp4Xagv8mWI2Rjo?wfB_K*g*kqI!U!7 zFYgKQdUXuiysO+c7~h}t?0&YEtUHnRu4AJWfxLDlc-IwH)P=x)&)^$gur1FZqKxy% z8_3I;565jgMwBsKAbW(cEqJICGUrl&d2JhmQl$l%BbTJP9#?u^|}i_{B2i1 zLRn>8Uq%>(UxB?CpL^DH`Q`b8hWL|*czGFl9_78t6f9D!D7kpquzndRpS7ZlJmIQB zU7;8>l9#ceN_B4UL>RYV_?KOm?wkukzpn4Gizo@W!?l)WV!o%T^t&lS_PmU~0_OiC zULE^gLM^CK_rDKMKNx~){N}*~dDqcsxS5L)|4o^MX}2pbT5vI*TyeQ%575Yfl^(2- z;=3VmU$l|q$2?FYiBD$_)X3rkJWwNz5&M%fBi%*oSw!;>%8175yce`%9Vm|e6ta~% zjdw4tVV8r~ZnMD&u&+kwGD0;DuTpR4`#=4FjZ7`}V2xDCAFPop&$>_X#Tv4@9Ow(zJhNcc_2?k<2Hu{qvze^@b>tR~AOK7`6!{4g+_<46KKnzJf>mb$ zyfITNz=$QbMXW;B-QlS zGoj@gLa1-Y8cX0M$GVbQXow|xWr8Iys!8XjXPgr75oH619+eizMOEIS-c*hVI0m^5YB z*HH4U)dTzCFzb?muN!Pm)mCPYyp8Q8lBX8aj!c6yA9v*zc4ta#PEfQ`SI}!s=(%p7 zMyuxx--HZFudBcQLc%*BwMQ#@N2YGs$6cS*ifG=x8GSQjE)trzb(34ID@>h3&tFRw zC}-=gXOF%JKkU$CBC8ptKyBvb?Gg$fKQ!z{7?eiWTtI-`R#X}~<4jAYfm89`Hl3Z-qhakT=2=(;!&~ei{4zHRRsA;ctTN0l%w@hf(l%LwWwM9u!sy z-iup!TY@cu(6YmHhLtdKqZPep-4)6`?&@o~;*#MRc>*j*?(7_@emL5Xxq#fBQtl#U z8Q$k49Dm#7p;k~1V2Yyj`4sAK>_Gw$+@2`!HWTAt5EHeuv%2< z*&Gc)wOY4*V&ay#ZF2En$pofbaGl#;0#+YJWveTst4HBgBjWm~*EyD%w*pT;Siv5x z2v0w1+K>i>J#Rq+CldGJ>1~et@%$a(@?LPf%d{DDNty21aEESMj3-8&ZdVYT@qO-x zGv<5(jy#f!VeNKk4R$l*GkgYyfH~(V;FRwoK7(1rB)cg*nxhKqEz_RuloVkioHaS3ax3)oXLp zup8s>fiNtbo&RIOhMtyh`Yi4BzxQ zc;Xr4>eulZJaKli{(d|&ioLnw1)<0zY$&E}F?51ixZJL{ zUDmw`k%rzux5PteBhP_vNivvcGlfNSp=3{(5_0*ojG-IyOUNk9qm1&534XoBRsWwx zd)*xFZv`nX;chMCtC4c~lF5S{Lk8$+U@GC8QQPp? zJ?GyPUO>LCo3XAvD34I%_n-ePDpA(O`xirIjF<@!&%Xw?7M{b3stUH~N{SDumEIpg z9;$)8jmmv5WX0Zpn4~}7@?z$|s>@K8kq1$B^~)TzDjeAEhAd6SIn5bm-naWGy{y&n zAy@DIGpI&?Td})cM9O*@tl8Bqb~D|NXD&yk@nP=4Gl%lGMAGSO4$N^0?SM9h68O2K z_>fFD#<1L0mZA-G3(#EA2(gaHO$<_S-eIcS)>BYAEumU`PU+Mhmi?~I%IdvJq+uUt zB63_pbW1t4_6kZoZS|sB;IW1~S+EJoYx1|ljW<&zWW@0c5-cl)$Fd2T1L0vSQw2Cv`L0VM>pU##3|Tn>Ju4@ z&!|CXF%f5Y3Mp5=MLE)|WmK#4`{a+wgl%kKiT{_exxb1Mcl$z7N0A4+Su)7D zTE)G=;D})pnL^P|!y|IU4G@(Ge;ic}9&>mnJoMF&kGrPIRGX^_?@O81^$ClWmKnab9f|ER{C@tSPA?@5?G=?1}^qS9>7rs|Cz9W?GgYM5M9{uFdpZm%)E`d zu`b8YyHNRv*!-;$W`9lA*9Q%MEd+dPyodOmuK0}0@tJSOYv-bDo z<-fBv^emo1zn;-gq#`^0f#ZJ-_LoFAn8`w~nT*Qw=+>J>p2boe_$G9-FSzzN4__Kx z38EF0tlN#0v&*qBJA5@fk`W*|Jh~8N;Tb6QKkICD(8F_{n?dBJg*q(-5vOQ%AWnJ=WeaIk=fn7jGHO}45 z@N1#`VF2>{jy(z4T2dcFmy?gEn3n?__0AWElo;Cu!DY6@Cq z$2K8ey$TZCyfLQ%vApa@H_Hq`OyT&>pmpvxs@+!&+I(vUUPoMi!ww*H-1`PEqX|VV zrUNet=U`7dej;JBSqz|v?|dlMa3lnC8VSRo1kA=XG4Ib$K*PCgGk%*?sfC9zb;nY6ace@4K3*TEpw;L%E?04ZU!DSxr(3ivcYNUrVd`?YG_OPqD zYAWH^&}jA_0(%_0qje-cHQoNZyyz~wh7utc4SV0P| zbojG+IF88*o0$yEcv4S5ElM=LX)2YS0j@`<*_vawB5`&}3QdhEBRYa^-&GS3=QIUN z&IGz;N?=kp&c$s>9mmQc*wk1R^Bsd1$P=q$lTSp!3pYp}}|c``Jc z4BnC}lfDzpDSS8#OH(N883MW;&-5As;H-l81z4;`0$$}FJPGVcQj{$oW7a~(u7;6X zb+vZ4BSW7_ZkR+lmJY{eGQrNF>K-u}B?micSgkHd%HYwMW2+(4ubcE^G4c%+mzQuS zyt57Dp|$GY_G43`yxFl?U26V_V>iOkowH)(`!d*6rkR$5C}duAo#Rc1$1;4EsVsWT zNd9C9RfcYeJ)scKy4<`5?#B}!2*IdG2COU7rYD1!BqWx}niqIx9g254zT|@cPM8jR zj~>_uO@DugVq|kKx@jsDymafKC_{$7oTLaxrAVv+QzjVghprH%jw(zvZ@u&;l`r#3 zhWAHBU|R2CBYvk&VUB(1f;&%{zT;2gJDbrOhD>X^ca4=;d!Eo-j%V8w&$Wdqf^0s7{21~^wxXCnZw%_77#p3C5N(RK-c7OgA0Q*ugoN$c_V$m|O5N#ErZk<|c2ky~ zd*m-~LfVCrfj7bvS&Y5k9BzFAe>;g4_mK@sf3ymhQWb`4?`L8+K5v?cV}}244ZmYD zf*0cN$K%%TL(`=$7YioubjHJo3vhco?M0wWh z%AzO3`%H4ZLy0__)(!8EYfaPuC*(b_Gf6(bZ@Mr)KwX%Fj_>ps{^8QKK4RRR!QVP| zAU~sITio@OA0iWp}6f9*tl1%qFwhQ%iR*c(?J#M z&5`(bttuKml<@W>Becoz&03onYh%qXxt?K<>6yl*#MT)C(FFdVO=Ye{cn==HhSx3>8EV<>4=L2>(fyw)Na;R}&>;E5= zXE>9|NOYh?)Zd~`yE@kmJ%OqSLrL;8Ski0#E~7DCQI4Z2zH3{ovDS6#oy{~kY5F(F zUrPx1Co;5lCR2&|plR^w6NaBJky@6q3CG_o$;G~o-2X-wyUzSQ^0yp&IIauBTLss( zDOY9crzVD~VaEnsmqeMuGrWilc>L$>$TMj{&$a;enu*)uF~?SAIBY`e;hd`)wH7z| zpCDI1xysXrT|;pDP&3fo6iH$2jrY2837JWrDnN5mOZD5Sn8nx(Jmun~SXV_O_mF7- zPAB{+r_9HwkN7HTHff26`nvGMwnya^&pYZi9DCicUeh4L)@bitr(jjRjC!#fQDeiV zOgEmHjLC=h;F+IAf5wnoeIa&sNfy-N!8M^bQzq5p!H2=Fxynr$!tnPaA=roV7AHfX z4pX(-zRgtW_)dJ+w-FogwNS+Ty(i-{TH-VNQJ2^$bYMG7@peV|FyR0)c}$yPFSB@t zMsx%3M)mP$wV$@#rAQcl8r^t14f}g8VarTEdjs9{d!icB8V5O#`t)1l{9dP+avLrv zTM76v!ePuA_J42zf-=`lzfqBLL^F?%xjORJfY~JX{#YdvlcpPW0Nv#6A=En)zA34c zHW%4vQ2qTiRMDuQ+|W)J71>y{uYN?eh1J`Ezc4r!v3X{CeGJ&?D$Ug*in;R$Kd=^+ zrTP&529%rFZ}LF?8ck_lHh2b+k=}5f-FB4}?XKYJHiOEiKTYy_x{y(6%&@rxA0bZ5 zJ<2z+YT&NhdMM89tFAeT=TktO<8z+$z%`gU6)zH$bkPL%H>RmnyL5g&=z1PPPTJ9T z+;Ay#UVhypBjYDZSldRG@1i3wO^V!W+LAF7NG#h2Am& zRz47(*!Ov`tsu(c8pK7ujQICz5uSOE5NO_L;;P?-2o*+9&H4ufx+^xhArxi6g?ayx zEB@W=a?5YIHY2AFpY);w>@;d5dIr^cC#bGNJ?iK-GY=*r)1RsMSx3BQEqcxdi^_C6)c^kwIyf z@njB7UT*S&hI$?WldhO<$2^{2MK|?6iaLHb1)gBWb<=x1(@hBrN73Mo5_0i3p_qOV z-Qs27k?_KXTunnSgSR_a)SP=l*>^j3)ur$WaS!CJva7l z)^3AcF*W1#QU$xw=Gc7Pz;5dIuO$Z907o-jN`LG4pCFH@Bldk18SC2cNEUQ?`F8ML z1fAa|9bwe4izb~L1OU6?%Aa+h3!wviGx(~j>ao8f@2LYkCvW*~Qcul0C~Vq~!mA-D zdyh8Jh*w9Yu%e=e-iJQlQ0?4MR{Ej%yj`8AaL@c670LU@+Qw8xrm#u}O^Dk&8yQgsAXG(vGKUfUL*J%^H9-L4UA zyOC>nG>cK>v93+wW;R>Z;`5;w_3Dc2{3;Z=kKtI$C-L2FA%r)8pCEUu%e;s%VB&BIAmB& z^a#{xkF3enuH58!s|kH~+?3yX%H`fKD51<1!w&=?EKgSFiR+_C;ksO2*(P*>G$K#7 zLk8GOriA1!{jM#zNJECC6W-+-yt?XeD?y8Ef=~rP;V+t~*$%~?Zb2Lrx4S2-ZR|jdg1%1XO97Sx1B)^GG<}i-W$66#UDvh7v_dU zg2!U5n~;}q0kzOh=$5iUn4-Co4}`4 zQuRTr&JFY)#3Z%NWw4tJo-w(lLkTWbqo z`_F$75p^7P{87}EdP}nG^(Niv0{f-Oli3NJFucnpcgu0HzL+V?e;p-yZvwAm_{Sxz zEz=s;QDVH+uo=g%Aa<3D2)Hfk^zn@SCP2-K4`$Jn{*y zFym9hZzuh1HJ+yhc}FukAHD+oSHOO-`N%qFuII=n)$DgELY^?QSU(iQU;A{+`$wn) za078Oe&X0e=#p5WIup_^fp;N@@;1Z_bSu6umClU-07^hfL_t)~V^3ZM{$cE0o*X_F z^0zzoq7KPYFY=l?GHgDRfj$NN6$+=O&_z&#T;PXI9@|kQ%X<-r#dz#(Z^%H&6tWr3kgBN@A8SAy(&UWOO!=7hfMTIf*W*^C7pl4I72B zeaF5So_JR#VJRW2c*kHeQB zx)DLvGk2-W6z<=PU>hjQTu0FWvI6#!Ll&+nz}KvpZ_pZ_y9<@4+T(Mt=y#=P6#V^L zV=XBJ@F8@ov?CAUBZnPH37?OsCI_oE{5n%(P#5w5hFm#=Gx5ETAcH&?F8MQ7Oi6yo zRM)RX<+qBfVJP>I8d16L0*b*whGB(piz&*vd8u|G6evR|&`S=_C7~K`>n5>2#IR$C z%yoOhuY2K9)k$vrE=33F$EI*&A@*r=e9s&b(#MEoSM2GI*z?_JG?{@lt8DD!XpH$3 zGNKj9Sary0^f}moMy4gnC6n=8 z%fLtp|Hm6@Xe%QlTe+_W_Wro#Pr z;*t))C(7F37DP?`hz`=~2t0GbkAgo3{&+0%ao|+aK};fnZKQ~aub8sRT>#WTE5C?{ z^LT_4^Rao2C{y1V0#Lq3kcN;8J{|(}y;%DlwBc7!mt9^)21~795=1K3q8vf)9*b&K_D>+Y`AXitFGTYM$D8gWU9O=xpkNEGehfE53p>C`=h1YhfHkU2hioxfQ&>fu-Pbk@8{r&a}L0M zS56?W7ne2(gRy(7LeZ{To>4EvnH zoNLX^`7^}reK-UsZ(wScAllO|lE}R7z3#dJU#4h^xl14(g(%9lcRE5KU2S!d(w;!wu@AXI&pe0J=$L=coQe+2TTEmJOG%@sqhymS z4YyoPFE=Af;w-onc7NYs;s_%E8jC)fE;P^ey*cbwsB5uB}rLY**`6U!;T&9>Ya3P+v zHTGvH_UJBfDh$Ix1QOZ~HsJc5BT@*zVFD;^#P34z>QOYfw3xiOdgQvUyDAMI0sWag zlM4u?H-})~oreDvYJ545E{n%ZZLgIO{L4UVNrWulbND;R>l`ul5&W9`*?;efVRxb) zjd54o?PgQeX~Y#y)uA!nl@e^JKvzY3a!s<}HAzNh-ergrqVk$|d`D6x>UZJkr?r1J z;l=r{03=b+FSsxv2Tb^u74Ux~59fE``EAVcp`>ovSpnE=)Zt3f;12T`nP$2uA3`N` z&|cOg8HhVsT(Ain3v!uTh!3J(m4y5F3@!uRQ1*tfe)Zw*&4M*%_-@7UnuL<6SH3NT zahKzr5`L?3yawpm5T)41C2~qJ%R)hBqolP{f^1D5lwuS!3C9sR#-=a;btZwm;OaA9 zL2b9Cc>mub4!u7y#i9EtXsvfjG5j@IzGMP=q;a&4zEJebVNH){gKbRKGz;0!P8oL9 zu`h=b&xEo(1e{T+%YNW;#~(#=1+F{35{Bi1NqD!o1gsPadn%ssCc2eU{Cm-rXq%6l z`x3>(-5DgDxe!IagrARGOKXHQBZ%K%Qz%}2{BC=!uaTH49LiqS-g3jDR__|SHIqR@ z38ps$xy>@=U+P@>pjOn1yv3jA9e6x8*j=QvO#p`d7l&_1 z{`g18K)#{a-wzvh2kau6IQurgHD!K5~ z&p6rf1k(v0&PeSUGzm~*yHKOdj0C}-j2`nt$b&hE6tEq!5uZx>?49u}y#k%sxGO82 zg)r8-;_%I`TYZ8+gqgC-wI)g0K!>(D_G(l=&e?9*6yLuK2~GnN?jed2s>k={orzs8 zrCmjpox{i=A9MK7;2+2Nlu-$^8~7DM_W`~Zo}#4)Asu$Qu=UNEI_6po?wGjzkGiti zdlOu#C{cGV!O-*wZ3K!>lGjqEx03DSOFhJ z^7Is+FMq2h-o%u!C!OrmM9T5>OTaG--)lnG)!lRcN8|k4P$l3ImzUe63)L49HsAs> zvSDc44Et9mBj~yetKr=a?V&9j?yk`JSQwZ_$%2TH+u8?INyaAyeH{vr4C6U%q!mAm1ILjuXzl0KeTPf(rx1xk!9dhRyOl$ctZk*as z_A@2|i;=kHhfo+WjfhJ65Xx@Ub=&6ooY7d%F7RI^Rc@|>|0Jobb=b8ZS?urgC}wY` zKn8v}(|0YzbF8A9b`q>6>6bGZeXDi+2G|jo5&NmZpBsMD)m7JQ@;+7(QAm4&Q?599 zI1J6j*vq|C$z*UeM6-jc{BfNsJ2MSd%<4-PLpj5HtyRU!2Tio>?ZBepZ-e(j+V9o# z_f-?u{#=6FEO_O2EFT+?9{VK3*{FHuv!vuxQx7=N>)- zNWSjc>>8@Id2cg(-V_tRVai-u7=%d)mYsI-r!|LFX_gRr8+ar5VMNUFyf)ZAQoLhx zPWGwE)heTM*Zb&!@;LrB)wWG$B@jMldVLi9$A(`qp$fAIL)s%&yBRmlo-h=HVEe(c ztZ;`X;`?$%$?Lu|=vK-yY=5k0JNm4nuFsxE)KoQkE?x3I{R@y66F9_%5R`pdGdOwweTR zkoO_O`!}vqS1%fQeNg+(5;9=lLluFwP<{`u;~x3r4wAodRKjjXp~+QKBi9;0Ns1Wq zmy@t$$CYcaU~sCQzw`Nc`T>`Rb<<%=a~o{kbLID>5K6R z{4xdmuVeL&Uq=`CJfF{J(1@tj?%^{?b})o9--u~7JTRe~nj;~IQ(z0GEOE0*K*|WU zw&M6e(kSQ}G)C%IE>Oa{>yRQj=W~hF;EJ;vLg@B{0Jjr8$|gbnehA!TeBbv>O-s|j z>q&0WOl;gu;6tJNY&FB4kA&mv2A{aH$IA#-xfVDV9#gz%yHN4 ze3R<;TBB<%`EB*RSnH%|?cWcj9I}E7t{l%?p=gC}MD_g(UNq$FLb;7OR~&l*?dK>u zz+Nj7p;zJ=FQX=tnJ`FO&`gF`DiZQ19FCxja1-)^YC>S=kzyV(s7bJpX-&sX8TbPx zC0jLU&(w}QU_!Pnqo$|*hJB3MS)0J>RqnDeSGjFj-XvX_@;W=Dl%TWrdDM!%HTLN= z@IKgGS1jHV^7l~4-$BzQv?bwtO|7~f^84%ZHy+;IbRxslmV-_u}~vQk?(q!1MbNWcVmoGwA42X_DZ-aq z$a-g5kBzwM!y8DL@~)|O^IC%syRzbqXpN(KE}t|# z!>dU*?bUe3#du~%$-&xC#H;Zc9Vjo8m&tZe}Fi$&}9i5tFH3gO#FM@u>Ao`ok2}UEyNUI zLepQzZ1C5G=_a12yA2r%b+FcP}>1Pao#oQn@KQS4hy}!<9 zU^0ZcF^&Jq^c()1s|+{^cHIQx7>-+Z)#Oq=8*Dd67!ojX5mFZ4UopENDREJb! zhvCnLGUS^$YS@c9B)jOUJUj*da}!dp7cmGg5dG_jHfxU;3_v5uC0qsu- zB`K*-8g?kWkX{r{)FUtKm&%#=TS@!Xi7frwXfOLw=id%gN}NYG>$>5;K$Kv8_qgQs zvEKFA_XX6nbpvcmoKFmHB9-i*5>achN$Pl0CXd^sDr?M<(J4%&AbJ8%Qf(%Ei2lB zI~@CK$N!tpk-z-r9J7EZ1LY{OwWU7{PychoPPI*j;)~+>ZJVq5w%|&>pD^j-*P<=| zH}MHvG$l`0z;M z#jwdtnfCb456H#fWz?^n;(gyS_?APhW7{PpJ`r)(UKb5lPG{8%yoTzi-4gU_E9mt& z)FzZzS~QVJ>~}$Zp9)2|DS`Ac!(Me|yLajqFdWW-b#KUZ%`6Bq!T?N}l7D>;Ya2SK zJ#mY)gI#hBL-|n{!#i<^YiJF-z~3|pe3L7|xj}*bpO0snR&2~`$mMH`J)cI<)t4OF z9s6^N-tpBEyn^ z)#yImUs0HqpMMM3cMN~gWpv#Igc^=BUGXZOpLL{godljgDMxS}e4Av=Znz-Q9Ue#hXL<6k#%b998PjD}uxIow5wa6<-svtIKJu=i2rrQTptC`32I*3cl7 z8MSbitwEb-$6Z`+D`000e?&^emU#WV35OhU9#gS_`;bz6N_FBWM;zaQXuv;+y8ffC ze(hDTZ7A`wh7|HFa)o!tCiW166DVlFFC$i(F*HTxyM}E6zXTjcZI7FkfTRYs;Qn*R zzp3P;?Z~tNEyxXZ3JCI<_;;T&$kyfsp8DTp@NE?Pb%#;Bjj9f3&_tN;0)LEd<6cvY zzFWf0GKE2Frx=297M0y@q2$_zs~S)fLN*`2zYV$N3Ef_whLE>VG=^MveRtksJ&D$t z-}>8-VmBd_;S1pJqW06x|7-I1Tzu!Qc&>zUTo;4R?GS%Bo_^SreZRpM!}Fgo{FO-FRjAVGbJu@6 zpFo~`Z8oeklP-?&oB0fmnaY<3gU?{Xu+3op|G=vQCp%GR(pAGdB1y88iUA3;D3kwp zLSd%Rw4O_GaE=b+x~XjQG^%q(Ux4?RxYVaJZCFW)%35rEGqTzv$n71A&De?JwGlLz zuwNT%H)GxZt;g)b5QNtFoGBf+x5w@Dt|-m zc^T^CNABXR%NSe@1y<8i*=8o#NOsuPYe3qPvbpfuFU_i zsjIUq_Pq%hO!$oJCZBgTJdGjG>7*+MvW`02x=b!^yGmB}95P6`{52wD)e&;^UaWZ< zc_N*mByFbsT#M)ab@^MAw`os??ENBj)Nhus0)o&+K>d8I8JMzl}JvR+NZ-2!$4FD2A;i zT8br4+@Wa1x>x>Yz<%ZOD#{^GqhMRm`QIylQzdL?goLZnh1Y2Xo_^E{nY#D<>!^as z*f4y=Roc91G2-3=&+nqjYj$-w4n=?eQp~r!X7~bn#%*5AE!>7KiZ1YNV9#c7&P2$& z&6UL6ikgOMERdzBgx_t#xjYWu;?mvecx@Va7Gne^W?6Qs*OfJfq*tikHzhZLH=e>YZ{sIweUPm{<2#Q6^aj;Jq zR_Ay_N%-rX8PsPI&zWndOA(jWAV!(C1n(!!S$s5Z&W&($SCMBkkCb>TO2SSu*dI_zd9rXXDP^Lo{Pj_3nKl9jy(2KZSDPx{GCC@p%xjLe#8s-|10iHf9$-k z`~Eq(KA`+o0p`r>=;eME`cIBjIWkVMYh`#itj+0XfY&j5<* zJ}iI31^khcl(LLM?h2lM3hayvmHD9iZ!l~r`(!---b@{Y599f}P&(Cu=29L9`#F-& zF1|3IfX#kXg*O&?-b~1$USyb2xZ{RhivD~-gffkU(>WlB%2fQ2)-3qjq@#zNAiz}4>s!pqw zLjb*;U}#O`kx^v9;(0P+63axxeJP%A$uxJLGJPND-)j(6^onCE@!wMsUT2{&S3*&@ z>)CzC@UdE<92;~ge!(bwYnAL&J=VUg%NjFz_TO+>_cH49&$);&O7UkGLhzHzs<$IU z+!(@MS;(>wXV-=bQY&%sb;#S6!U!C4{NEb(Ra5~!KsCzaVt9&nhn2Dn@x}1?t3Xdd z1+KL)h^3H`uK4!_R2#Sxq4Qnsxc5kJtiPaYe<_2l5%%t*O1NTAA%k*>ycoFyDd#Hr zuv49BiRdJGJ?QyR?ilX5PyXgrpRqw#1X7n^AePr;Qd*j#ur>@lR+7?}5uUysfzDb{ zd;2-vO*Pg1$o<=o3gX2$Tu>psr7W=9VH1v~#e{d5G2Q5w0WE4`C^BLTfk>C*&0W|^4Tk)Y=huq2_IKG&z4>ES4$|2-3#6e_HvQ}+%wGq>_wH( zn+j9CGhu^SzTmRW@z)E=zxG1fyA0!caw za%sylez73h>Lo;8303r;-%i4^*M%XN4X-*ALj6x&|GX7~Ux$i8>!=e_i&CIO&hk5; za9q=j`hELu{O)KdTwg?P11KylAi+6qdcJGGzD%LwtjUx01J~rus>GxHrnITnszj`w zx#mO`LP^?yElEaY%tW-Y7x4iuxLR;Mmr|DG%4tIDZW*@95b$}eW$^Q%W+&!_Ya+giW0{+ zycp@jWmo;;dD8@0AF3G~pxRnx2Qt=+REvMU9>~iKfn%mz3OZ{#j~5_YO88tYj6q@N zvI@sduJ+kk@NXxqJIf1un?t#m$fL%3s?&26Wqf=9)fk$=I$U$`ZrBF~J2P$SnQ&-J zcr)1TOexU>_^uG{i~1g$jL7Ja<6EM3)SIvmWOTegiLmrMKo+aiL*~1!x@5*aPz2^B zlVL5PG^@_4q%8Jhld(IR>7Ejr)9-csY2BUu4-+u$+2FI-kJgc&W>Vr3W)$4X!E2IKI!tClEY)G^0pn+O>(u3M$lG zaHSVxKyN0me;0X+_saQnVS~Z%6(Tn@4M&}gcb!Ae|BPOX`G^#13ek%qFQzSoviG}M zfpbLE;)0EG>pP5W)<|n$e`|0g!)Hy?nmgj$E5+G8nG~$sRAui+2w0aP_W>8CU~<*I7@ohyq#S0NCY%Ot7VvGK!6z_e z*yT!E5}!4Jrtn4`Ix~5vtu8~b#q=%(Q?c;2D^$H3Isa9lp)6xENWLQ>WqR)m2o!aI z$jOyLQAA$3FYf$Z;CaVym^SSklu__mQ_-@7j8(lU?HLUPo|Qt_D)3IGNzt_kxfAN~ z52HFjBJcL>c9=GOep^hx&AE!JBVY#uUb}1xhj)c>DImJ*dI>+%Xe4$yK7WFsB0~{i z@_ZiSib03t1;e@}pAY1dcr~0vBk(w6%Zc>0fWoh99XE}kFMpKqf93l8C7{j);@Ki& zW_^+^)^rATB8=IWtbgYJ0pAdwdWDVQxwof>!;`<2sgSnEH-=|#4cBKp9G?FU@{&73 zs7KIf?ma%8Phc5Uny0-=R_fg*p-!fE8gcc}#}T398rstPglQIFfS68;XKzKhZ1jWG zO>uorhr!DZzh4OEAbA;YLeqMVyvit2svRM${oub$GAMUlchqV4L@nGkQvIq7Z+k>C z7vc=}1{XvLQOPxt?1A1AZ03nU{bS$9Kka7EqCTLI%V-GlkYC4K^FrnrVx0 zomYp{yc8))2@U)#$JAgJkwuFPh(`<0J6%R`)+7TXzA-+74eDRoD4u%5cS{v&dknqrZs4fP;;)jEjLf_01IeLWR_m`hDS|17@mNO%yYm(c zN|AA^b>TCbTxnRnY2D-=Hq2+R zQT&;77?@~1N?Uk~bgPV(t^_GaK2`xu^mqj-K#rc2&R&L>cVyxdz7fKTHS zpwr-xDXnOXGwD?1VDD7UJyVS9p zRh!vGb&s7QGjgKSr(E+2&!M94Jz?MNlAgg95y8w>7gm0joay)on%F!kJMF*aF#@cR z*XEH?{^O)x{hVuAi7B0hq*ousHG38_H^^R|GL7+>B z1He7!vp4|$h-(wjxT)4qV#9m}8`ZzGQ9SjA@!SuKC$H2DW>9W4%BSPm8-c09$MNhX zHiqZ_BtC%*<>$9hHU5-6m`~uEYxro+)IRD_$Y^UJ%vqAa9gOe0=Q3{JH+3`?!az-! zHUn4CUkk(pU_sCQJE-Gu*~Loxs-D|+IQFRHYZ64;745WngS9|4_96zM(}+2D$jMIC zYaNz5G`gawg5i5ihS0(|Z9<;#7K-AwQ(cVW*G<**D2y>`GF&wX1HYosnRg^V_Omd` zUsIvZK9GC!7g5V=4Pp5AxeU@JR}_`N>s(7fTfuICok52CEO6b0@vq@?@k#iY$(Yq3 zSzMF;*>Yh1N5kkfAx;3-eb`7iiyFis@G5-S`jvk=Nag zLZWFNh-c?#<@@pM8^QB0TGjhLkWb){%X9A~zAr9i3^<)64CgZy-sU1QSP6w_LI!EP ztZ=^H)xj7j==TQ`Y>N4cUFh#Fnb?xoT=%x(a4wUl|F3AL!(*l}w}(@Qa}=Nk8K~Cg}Ggj*S@hl4;djT@(x- z$%N^jv0%Nj&*qbOL)-y0C&~0U!uD^`kPembeG<5rv?#R?wFD1)Y>{$JTz6~4ZCEu` z?k|EJ)mhjY^4?d_yElVf5K$&SNSd&mK^=_O9qS6kS~o=%kGi6}TPSV2VKARGtn)*M zzcK7hmr-4ik+f~D{`@5w43^P~>|1e{G^^M`l*HHp^6ye#AqcP!8!;X=!({=>Baqh>nukgk2{Oc~ux*KdU%MB2G zI-dZBpGQo>jS?!`oJoQA8C(YIihJ1Y*mczNA5lc%Z3d=EOM4Nuwgz1_kv?KCoTYY`3AR#ymWC|uu#X6L8E_*LG&7o}k(mk`EaPc`+~L3k{% zSv`ZT0k^UMwwREUyOLO&iL>l-6(L8d?mJ-BMZNxKuBhd32EPi0sYMw2M?;1h4DUxQ zxZ4cewUA@hl-s|JhKzdSv+sssT8gvji9f&N@Fw^H!~W9nA9~Iw@fPq*Ssk2Jf)1Z5 z1lT7GyC?Xq4b@q3oedmZwOCqt$Z##HwVx( z)`gGYx%b(I@Z|KkLfrScAJ4uwLdzeaLQ7+$4?BV5p5xii+ZV(08wxW=k%gTHKb5e9 z5_n%id;+f(q{tOMflaPmZ-eCf3@4G18FhvATTTCdTng($rs=$rDU=LgkGGk44Q{(4 zfo2nU$wGjRyPml}ex{k&WP@rCkC}M+*OeNv>U!^AxD;kEyzMoYk*&P{({YzYRHQmq zR@dZG!bUUvNW$)9I;VEj;b|lvn3;BYpLG`t?l{_jRBHh)LT%oPQE*foy%%z^%_TQm zQ9JHslV`k(`uW?z-Zdzgh-z-R_y&$D=k{b8M=rZMOj8M8aCi(E+;4l8_kuyN6OQ)< zpTyQM)`vpwCx9UtLSGA+xRbDkOzhZQQ41JU(a{#70Jw&xCEcXBg})p9`y@UE^V9f- z@YJ{XY&`co@IBPCUgUl}w{H+nUQwt^em|bQC%$XU)W#Y$g_tRX`L+&#)Aq&i{2#Y8f0u$!plsqoDEs|<0&V25+uO(z?=HaYOugz~n4qtRfE%W@PvdCO#GWWZ zZ8oeULd4`!kY&^Rg9@YXIUF@r`!AxLe~af(VRP7%G={thjoJQtmjG@?X~ilsg54op zUqPXz$DJd=^9xDitYc*rFAtJq8am^=TjJkOqOt5bl*1lI#%YTpCOfV>;ajfznfDyJ zd(mXD_Nm9u>#peKOcKe)Q9ZA{Z}RA6G)0(PQ-aUN-(L?|xe;>^kA!pi2%m&!igLW& zRHIo3o0Z)AY{DKd!^=rBcp_xzu?${K^7bKTHfc&-uAr{TbFRBTC};8iUH_)}L_US$ z1M&Pbe11H2S3Gz(pN{8Va#^-M?!$At%hG=;p1j8N`5(oT&!Bv2r>hlGQLJ(tz<)tY zFAtjXv{sWxyh;_%PPczCJpU3>qGeQ>{Xx>1v?K4o({nz7M$h>K?jZv)hYDf^Yq0565s*ky?gbJK5037?r^;O8xlwk=$}@|@O>eCm*V%A<9qj@DCZ=a#%zlB|6Y98 z+4%cTup6c@{8-HW-_X6#j6&PaP}DV4RbRCnz}5?PE#7$t0<(FX{kxJMn^x%WbxO_H z4|eK9_i~jS``;BZw8>R-Xff4aN-i(F+hD4I_hs0U!S)!|nFLHlNB@TF5N41Qx@Rz$ z387jtJ>cJ!{(SVi>zAowXx{v15jHWcV$G z($?p?{JXC6eI}_Ww>zo&KNV+UQXbk-jy$P*;>oy+#`u{G74i#pePd7vG%AqXJ zqjNn2)~(-hlL53nt~=gEUI6VUr!$+2&nTlM8)a1dEFyU8Yc9}NZ+u2V(Ai0_cffx` zvSe=?e8=+<;Ck0IWKxmWAB%UYj~dP{bhz`5H>3yiNwk2yqDah8N?L^to8t``cA+S8 z*aozrr`2_yM_hwG>xkXwW`aV37aT8}#(;~+DQ-mnUM25bRrGI|FT|&is(AjtCr@0# zQ!~hi@YD*8t(4&n;2jb2E+Z>77lN^l6u2S&Jt4)L@xZy0{3B=QFstVUyjwgQ>DO|n7SUJbD*C7ua?H-yUJdSr`4uzEqz)qpse65QLz>*8pzZ;qhBt?> zO*no5d6jY~$!U~AsNsRNBZJZhw%ze@$Ik~ir_JFz$OAORd+)F0_a;O0WZY?o$?Mi2 z&(;{ilOaVujn3vwe9o^C`;x_d-;U2HC;WD?I{j!*W;$!YZn&1Z9w*;PupN2vx6l;j zaTK*Bz>*;7y>Wl9Ct=`+4L@OU%J9ad=&N$pm%(0l8R19bUh9c>j4=O>!%tBma)x~O z!UYSigQ&Aq_#_fito^91`<#hWub|eZ7ft6`M#iA4q~3p>3*$eJa_+Mx4ge4*z+pvm z-k9*L25%`!o_A^kgtl)a*VH;_CIpgPxw^>4~Q&ZiLiS9JdZczc<$!-xfl2to}1GZA>bo;a+DXeyTaF@bU&UvbD^jTNHC6v0GvS+ zW$Ph)mm=J2bA`MONH8jR_Hn)#oNiam zxz1rNiEw1pHONzMVsY&$%Ok#N!bLR2<#w6QcT%~iFM`iSzkCn5(JLaxBabL!yK4dx zlh^q=8d9p@(Qn5Y4xuwDqZ)+88MYyuMP<%>8!+d3|Bg`P!T9IJ5a{oP0MDU9>=W_d z+sMQ0W(0{PQ!f1kYPD{2Y#g<$nxpEA=&8|is`?HShd?3#UIj5uSE8KVu6(@&ZV78F z!9;>dBMp`*?{9>zGB%TmQ(_~01{c{7pMsVCV}sKR*1AS&%rrAU9SZXV+U#4|G_q#e zi8mj@))WG>PCm^w5D!pBQNohG$R`r^^GsFVXTTQ&fwi>&uSYwsh(fo{c;FFWOQu8p z)9~WI8=rl{;b2mFa2>UWwxMu#hZK<>gTHkdry-LtzT)u1qyt?5nlnLKM@>UH9j>W7 zcMZAJL`pFrW#)VccvNYbGSMs-Bjj&4ycKcy&m;1b1@w2%q7Zh(#RN2n^3G;cdh|Oc zZ2VkVVd{EZ>UC35ug>tjzH!&RyQ|NyV$iRk@!o%JT01{& zD)z3S3_AgSFks3%(8~JDrqKJk=Xm~2rgLlOGx7Y^=bFu5xBK`67?jvq zC)$IsD229jsyBFVlCxURA_YY4?AnmsRjSb~i{zM%Rj@Vn?seiEn+Lug_ z^D*S;z8-qF9tHxccnAt8D!3;3@YaOA@^Squ(w4ANN!(_=jt`oaU}RE2TXeNxM&gn> zxPK$ABg=UXS<>cE!o$eR7EqP?k+`rrhpPyqyftC(mDQrFcSRMM!{sE;bHPQ0)NAl~ zS-I$0Qw}qY^4-3IEJCL%G<^nP{8vrA@SGp|x&CE06L!tu#Y_>~tD)SRbWT;O`3YpiK8VlhH@(|E*K9}o$MrAKp0wV(5~gp9 zB2FjD(U(x6X^X3}Xat-zjKCW5gqz5*-d~S@dd%3bfW4E60AX4BN;mSl`%G}gqoJ^U z=)1-;6=lx5sHjKL)Zm1ki2@3JrXoVvn$%W2;Zn?QSApi+Xv!>w$674Q>oytmCAIw) z(4VzS3GC@i#?B*u>;>}-`V;H9d>h>zw%k3iWCw#4I`dk%=QA zA;Y}Y^WmsA$7c+mPO1egqlwHS_(*(aJ+XWwgS#cTP!^_O7;H3yS;xNN`u#1g*@dqs zc*5`=fn0bUapX6eT9;=~o*YKdZxzBd`v zCo#)hP3j}RjY9Ah*Tms#T@SP2d^jq(G~y_4BU5eiK%{ zBhIBEfE|y6?~Z(b6&bOYLqV^Z&T7GxvW$cG0?Ur|o8}%Sz&5!?k9$ysx)!X#u%@K8 zRKF>_TMUKWRgV1$E>_#U$SC#2`_<@r{DQ&z@(9dJK-^4GU&#d6S#b$zLYh`aHH6Dv z#m-~Ei-@Og4eUw=CC6^We0v+}qyJ_oSsRKtCV>VtBy|hy7l!`^_%SrYKdA`I0oIZz zyW7+O@IK%oqM*M9_AA3X5`M$f;n=UJ(ytr7*+`GY>a5+FTA#`B-6jU(ONRZ_us=18 zJeOV3$gBEnZ!;C=noU%4$+Y<6wv^8L94myQTsLgOM4R7;KtYYJxrp1S!_k4dITig| z27AM$J3CBK?>1mNipU3|h+NUXy@pOfMtLGAjNFVY)CzjYNi<kn_=Y)dn;3@TW8pSS68GnfsE|}g7|Ju;y4&b z3fiJe_C;5ean?j3buA3iTo{s@4kt_EHmEnf&tITCav9;}_a#mK-9v&_4gnaFk+gQl zI-KlO7@{)5o@Z!4hJv1D9@QcW5iN#5`@W<*97S03#fV12v$KXO|35{AttDij4uH4% zXXEKxJ(!NU4^L0o<#A6M?8#Kk|7xb9+$zFgY~_>j{1;3HZ;6~wV6)EufqVi{1ov{J z1Cy@MdNDl|p8>}cTu)T>uPw>hR`jpQ<&e7L+-^TW|GMK`wm!W6CHqQ=!nao8OreVR zwzo5lvtHDs6b}9eCfs;G;>sH_IORIP#`y4i$g&NgV#F=eLoAx|$juSfB!nTK3!yuU z@~Edw3bD&H&t5>7_!X4n7g1#JB*M^lhT!)_Y-peSjUd@DwA9rEo*N~8Gw(6n> ze=!N`KjYE2jYBSnp!SAQSVk$)-pEZ$@w0W{{ZZeT*1J(c#-vWwdb_Mz0}V(xzl+|X zl6F0v1wcsN*2WaBTYb``+Ja-p!S`9dRcOt{rLfn;ZLk{3`AjJ2DN|QsArpM~h{>qV zhXB-g6+D$;Fr9=oA19~VUUvbTCQ!BdDHmpaYtnZdFx|<)@Qf{nO*wYY6=|JCf4>d* zmtjOI#jraF%ihChfeR*wb zjOfn9P52EglID{9*gq8LMYcY zVxDk-gS9i8qpTiC1f}nT={al3EMtzDqKBR5DnPB16m3)0!#6H z`&^j$Hj@`!K!BdBA((xp0gfaC;g=-nHk(OEC&*WrUjn{|_~EX)a^AZc=1BN2A{gd5 z*Q|P-&W=HgR-NmtRz2tHZ)L= ztmkXL2@m5lPgO^BJ_0 z^BD}AK5MH|6+fa#)KaF}LXUsC{wi#mA86IA&_IZA$9vk0Gpk zoeQSA-h_o;aaqMR7gqj~={t6XLeC)( z&t}uKmsPB~!#5op$mC^jBCmJ{@x|BZxoq6^XEznbV)5R;i@x^*RLNhB|JQ>T!3PuG zE*4n-Lz4lRaT%Xp!xqJbz_^PN`bbd*q#Z3@8OX#zKa!~;Jy(XGmBo2r$ap55J=17x zcQ1L?YRk2^}|OYO~FUay7`~asnB!-w(yR zhw3svL#aSgm~8(W8KQ9>9#8*Wgu6JK9v;tM`QIuEp-Xzk`}hQQI(E~rzcz9DO^F27 zTmAF%8N3|P+j_{yW`*XTsehR(a{46wYeq!0V-Kf)$uAOXi8E}eq{DAUx#&3rYFTsm zNm!F*gQs;k+E(M5SbH6XL@gpO@E;`n3L-MhP&NB+5DfHUc<&llLGMl`P|6+0NgC?8 zff$1UUoveAstMtG*W{UA3}v0rbI^sl0=L26SJc27Fq?#t?+7I@Q=Zg-+A3v*fK~!q z$*`MXbLs$iCZVeIdU-Mq`B)f_E5J9=V#b=doWpTe@1rTT_7JYXHrQ*9{Y|Ecxpvp@ ztawaqnK~E^aGgBL_C*I>S*lCLaB!hE?7cIy0FNRTWM|l1- z1w}?}z*X1GLkx_~hIJ9NP|?E1Vx*YL}W;O!3PcyC;A8Q2pOQoCK= zBPQ|K7imDPseSllQWW4)QagmcbF0ZBj;r#^c9UX#C4O%^^0K(9q!-cZu)7XFkEmix zgo_R2905IOw)&pwvMnNw>*x~uP)Iz1`nFG_k=nB%Gz%g41r@27Ga0N?8Qd;FPtvBP z8V?qoOjz_K!=FwHW8ZP?l&d0r0ENKE$N?nHiY)vZK{^u8b2OfJ9nCSk0R9O0Unl(4 zRHX`|*7Lc5ACgl|y$Jk$)OH(3!t_fQ6nMoH^}HWH_b64Qo85)fq|nwn(44>!+Eg=P z*ew~u3ZC9Bo5Jd%!du_xc&{QLF+sahj?E~4b{C$1$>7IHmHW1cWUc}G%CODxRToom zho0Z&P3cz&yjjl0-ax(gyTApL!P7rMF7fhkI0q>#KRBa{?xE=zyj4a^_ z!hFx@aC}R`Udl8gIgqK(KWMtN840e{qKoT7E5znqQ9+HX&@~p`y@dX`P?m=~8J2bh z<)`BWfrtwy(2IW8QQENJc{^_~E_Y1AN*Q_kl~BL{h;Wj8GVTfR7c{A5FS$I+tB91b zh=w(uh|e<=S{_9q@yM{@Vd%~f z$f7BQ`h|;w{#k_m-ycTzeVr{WE`!wsHUxgp#9q7t95=iaEvRkreb{VhR2J!}vx&;5L1zFS%*M*P8;ch`+-WD%DhKgESOray8B-gVXM=%fvJ{=defP{W6 z1f{ZJwG$25?2ex|w1s7f9G3ZS5Q=XG5jDPsTAQztbL+LBaBfML<;Rg%m^Gc-y33H< zF?cPLXBsde5DTF!&i#W^6?EN{!)5j0*=h1jT@Hmz2BwHSQcVa|UkJx-7hTm=mytW- z3Z+ZnKQ~QR&XHpct{~|13n)$5YnqZg@7i_X`k5+|P+y$gUGf2&IpDgAe|9<|wIMVc zQ2^iN_=saaHCWInu>Dy?hc{i2-$vvO|Do%5x4Go)pySD~7DbMJAiVjax(7~*xp~(; zOvhd9a7`?pGHl%NO@_~cH-rN9Me4K^caOt-20e~HZE)4#%>)f5*;xx&T0l|W`!ZrS z8#RP4S^tWBfI_xg$odQ;;pjkPvR$6jG_~sQZQOG#`C(MGe}}xqa}rstJ*XmHM~*Sy z1I%XFr3~Hz-|pBQu9__=Lp;_S~|Rr%j^RqmUj+Pz0P zuWd)3?*>xzN8+;QqztwR&ET&%cG9GX6DW#l0=o^q8GIdVU(#su68N%X2a>}1mm>NZ zG#L;#6{Y?s@XzDB=8+ekjr$of_0wCBv8|9;jFOX~ln^;+rIvA#oV?;P(dP4!IczQ1fQR+3*EXiGyY;-FHpb4x2b$GVB19ob-4o#zmCVtRXMmh$^tR z;zFAw_-v0$?FC*(bJrG%(Bx`2l~G^#oX3wZLv8Q%(Y^T zCkgP5Yo@#{F69nNMShAbaR(pY&t62v=m=6$;xlVa-ggkSG;6_90ly<_x&VJI4?jssWw)HlHP7~bMSQ!bh0=Uu}Rcq`Zxg1$C7zL@aY zf)w#|872zCEv&j)#~CUr?*}iN&hQpk(ZvST8a?wRr-J9#T6ON{6DWaQcTF_DrXnfJ zv{QDH}S7_qxAH+*vjTdMm$BxhIXRB=_~U4x=voxK=BVyx=LU*2dcwn{BqbP+OY}_9 zLoyWuZ|VDdv*&|C8Sp__A@GRnvlj_2KhxOho_OaPS87uq0#$*G4(ZQq5v2obaXv%9 z?o1wW4dsu2tUTR!n3kKmYZ%Gn?+>Chs(_4>A!9QcpF4w$Tq&Mmf5=izf=A0Lu3bcm z(LwA`H0(lI-JA#E>F3uZgRMyU4kA4Nb+q`n&*hDqQKWD&!Q-Ce`8T5-5DPpMpMZDs s`S=VLOgj$`yHbI>rYL3n%hkXC3+SMw?@WjO5&!@I07*qoM6N<$f>CSrjsO4v diff --git a/Resources/Textures/Effects/fire.rsi/meta.json b/Resources/Textures/Effects/fire.rsi/meta.json index 383478c76d..3d99ae3043 100644 --- a/Resources/Textures/Effects/fire.rsi/meta.json +++ b/Resources/Textures/Effects/fire.rsi/meta.json @@ -1 +1,99 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "Taken from https://github.com/tgstation/tgstation at 04e43d8c1d5097fdb697addd4395fb849dd341bd", "states": [{"name": "1", "directions": 4, "delays": [[0.1, 0.2, 0.1, 0.1, 0.1, 0.1], [0.1, 0.2, 0.1, 0.1, 0.1, 0.1], [0.1, 0.2, 0.1, 0.1, 0.1, 0.1], [0.1, 0.2, 0.1, 0.1, 0.1, 0.1]]}, {"name": "2", "directions": 4, "delays": [[0.1, 0.2, 0.1, 0.2, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1], [0.1, 0.2, 0.1, 0.2, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1], [0.1, 0.2, 0.1, 0.2, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1], [0.1, 0.2, 0.1, 0.2, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1]]}, {"name": "3", "directions": 4, "delays": [[0.1, 0.2, 0.1, 0.2, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1], [0.1, 0.2, 0.1, 0.2, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1], [0.1, 0.2, 0.1, 0.2, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1], [0.1, 0.2, 0.1, 0.2, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1]]}, {"name": "fire", "delays": [[0.1, 0.1, 0.1]]}, {"name": "overcharged", "delays": [[0.1, 0.1, 5.0, 0.1, 0.1, 0.1, 2.0, 0.1, 4.0]]}]} \ No newline at end of file +{ + "version": 1, + "size": + { + "x": 32, + "y": 32 + }, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from https://github.com/tgstation/tgstation at 04e43d8c1d5097fdb697addd4395fb849dd341bd", + "states": + [ + { + "name": "1", + "delays": + [ + [ + 0.1, + 0.2, + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "2", + "delays": + [ + [ + 0.1, + 0.2, + 0.1, + 0.2, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "3", + "delays": + [ + [ + 0.1, + 0.2, + 0.1, + 0.2, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "fire", + "delays": + [ + [ + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "overcharged", + "delays": + [ + [ + 0.1, + 0.1, + 5.0, + 0.1, + 0.1, + 0.1, + 2.0, + 0.1, + 4.0 + ] + ] + } + ] +} diff --git a/Resources/Textures/Effects/fire_greyscale.rsi/1.png b/Resources/Textures/Effects/fire_greyscale.rsi/1.png index b3ceb657dee9e8ee55f5828607a2bf25eb190fa7..97d3e5496ca26fa6321513ebe273c9dd9dfdecca 100644 GIT binary patch literal 19182 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

I4%(m#aDOHB( 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 diff --git a/Resources/Textures/Effects/fire_greyscale.rsi/3.png b/Resources/Textures/Effects/fire_greyscale.rsi/3.png index 6958343726ac1f962a5052cf50a7ab6262071aae..9d002853f6bdf063e5d3ef8c1891dba5bb1210de 100644 GIT binary patch literal 18004 zcmXtg2Q*yY7w%}IjV_EnO7z}|E<_80h~6TI7DV*kd-p^1h#*>YqIZH2qW9i=@9*UQ z-dk(Jnk;kgJ?HHG?Y+PK?Fm;`eSw2Tjs<~0a1<4uYk=Q=|Ndb>!Ou7&LA z8A#c0%54Y)0a1J|t>u=npQ%{RFzI-&rfq?vdwM57nuy_M(}~?KD2J6`m6(J+P2pJ( zyS%P{Eqlf0ZrWxPPLgBc+L~)Lbei<~+}Qb{n5j$jH|^Vi#+h+hCNj@h3_~BD-r?u`-f)ZDcGsT*pe8yIgHCbuq@KTgI zc4pt@--GVEUm0XEA3p)u@z)f6wOrq zJiMt_KKWg{7+eWl=GW#acndBAURa&#rf_TCH1O&7b+bj&wljxWs!Z!nBJX&~#3dyD zEiUFQc>7fG%ehCXQ$xwvws~vg>^^aCMThTQuWu7u%0R>y1@I`l=X%BCN}-+7uZX8D zO10UZM9P6{Br82dlg@Ezv`Z)It?+2h0$Wf!Tl#tE+s^sVkj~tQ?l0Cgp92shZerS$ zy+50pw2HJwZ3U~kf2}*Ql0+taWl(e$&D1K@wyTKg%>%DyjL7SiZfr%33Z1{lZhygU z+1F|2{TUe=iWW?dp4hDcN8Phpk-+e(LPtw5eSF)wa#)fQS1F+@%BO0&P`enc@_p;# z?4>EY*r7+WHax@vUon9>dpJElN}e8^B3R25-UsSLmb?94!VS)JwHB;UVA0tz9bfm^Fyy zz~3k(JRjTE3YKXXtky0r(kPnhe<$lMsCaRm(F074L2lMJbPXIdjHZB7>WUB0WcJBDKCi+ zyKuSq`%9VJoO_@0ZZp&LAM^IWK!Nq1-`$mXNt7$)e?egUwXOk90oDs_TZ@@^P3%2l9?4kW5c;cbWkNUk}VZiHb1&ghkjf%Bci`1D@ zchB*nls~I5*7C4hQ1;eJ0bi}qVUD01vf#^9WqP(<-vmB%?qP@b-;l+V-U@Jlzt$_o zo$*mgu%;YH{4{^doB+4saA8d3;qpgs?{jU;B%3*Qt8RT!*a-*NrC0hNhe3nE1o*G3 zLDwf(XnYz?m?2dLoE**vF3-S&eH?eI28U@;RRs1>9w5pP_vLLfFv%~>qZU;>8Lx}9 zY(HEvWe*ptGh0>YSP7;B6WekSp0YT-YcNoa?3OwAFiZm<2S*RU4ICLT69~3Y-L$Rk zF#s~g#Bl!xvkI%@81#nvdUeX)U*^03oII{i^1qE0*_lgZzp2rCEs;HGUGvYJla+uY zwygkwTV2fqt0jpH23G($0M-J$R`+4q0bB$4L~Lv><*X-H|#ZMO7f5eFpp2(-lgg36xi=g;p7%=3PS18%UoiMz?eBxsw{y6 zfrq*FG6Eh{qn8<6bri|fQa^im36%jrcK-n%)gmA4QK_~v_!%wVsmhDZz72zz!FpF; z4Xlr{|JU7vV`ONU=2$wp%jded?QCm$&u1!i?lG@QUZ1N`1T4jd8@`pOCh^CLzp@+n zdR<)|KxLAj)|DDw+wyaNG$*aCeE2M{9AWj9b^RKM~7R{TGPr>&TBcvP_l1LZU4sHM(yqzF~ zfpF1mqy~0q$U+lrZDRlP-qk;_ltWK9H*Q-;Pfr_)UlyBABEWiUX6?EiLBs(r_|Aw9 z0~vTPAGJ?`Q8~o{LKA@^LLDngi3`m@5A+9CLgQ!kQN=kwZ9G#PslYIyxMv03a-TM|NR2J;1p^?#N9tgXG zfLpjmk$HnFJ}O9mz>3IY0Yt%}JzYiMxINByl0`FrPp?qpqCd0iHv7}E`KI+IIUj(l zE(rCGlSaT`ZqI6FF;`T;lAV+^o7tMCP8Es_0iA8S!IK$c<=wEQmzTL6b1 zEl*GX;WE0fX)C`KV`x9oSewAY>(T07X+hL^Fxy z;sX%eNBo(pcBcxDAfnz=Gf|<&UM?*H=mg0NNE-=0xGme)0Wh*LKz(01yqU*53St;u zr|C0F+#a00OHbg0>12*zpG7=*$D=szP;qy#?aZ5! zI=snY_l^KBG>}YeE9)(OmafK>?@7aCr&gBu|P!JM95C9Q? z8f@?P*?nNA)23~CQj`R%$Lx1xb1&f`wHt1wAkcwWMD`1SU-_iw)%9lfV!O!4&%)9O zHHkURo_cvz^&&0aBXDm4IBXDpMA>cjYTsp6(6ZTx;+JK`y{l3sd>1nZSpQ;VK|sQJ z8*y9cpAv1hPE1?Mh9(AaNl6N;j-d~A`s=6Hd=VgmlfM*)!`S)Su-$5LJBoo@OVLx> z2~w=$s}>{z}$1{#4A zY*Pg%|FQZCPK4zph_wCS(Lk^jqfTe*)%P29w279N&DT&&ACey)9(EDcQ4xc1Qp?-6 zE`mS}tPUixWHpo_xw+d23}6%0v-?q|<^-TJsGAkwM!#Zs@EGpwapy!K#J0|ea{$@= zH2}QM5Srz`jsa}R5q1k+5<(WlT)>uL6i4D!(}TiZGPou5Ap@rLl(!zi<=#n3Pl4Hc zx;Vsr6|%WmPcdE)NPh{81SBIUnDtmwyk;=GpVPKc6&>&?<~AY<>6+MIxb6?FLKq@6Bu^RJ^nL3#YH&FpioEF58d7pq3UDyF%Xwb+N`1? z#uPpRYzBcfSRmF05)#D78um5b?YRP7Jv>#(Ornc0)W1_nIBNAO%JZm%NuKOsjY+a0 zu-XkcJ%CbL7e8gnUP~>eiej+mH=(3{{j1s5HP&4EMOu67(^DXp9J|?SlZWK`x5(t0 z3?ng`AYFgNyUEJV=3t0Bc;!Te8>(F&u{sqY0pJ$^Mq+=L*f_}5&3P--A&f_JUb*T& z>Z4uTm6r^s*gHtwMT;!*HC}-vxplGbYVcHsQy_h)sx_M-T>M#905|ZGe{sl)AGW3; zQ(&g(#?yAyN%L@o%LYQB_KQmax4E~(a?m|!pntw@hKE5*xrcP9(&*S&A^-;fq3)=H z&Y)C_c`JMQ!z3te$l@&-D)XC!OzMu*0-Iw!hc)1$_dbg-kO1lIkjll654lrgP-jJ| z^ioLDemCF*Ihzjr`7Pv8N;tPEIy8v?lwV{i-T_%e2oBrJ6bbq(qOhu8`d?O77C$8} zPRbG$Q(`|Eb_2*y9=eV1x~b4m+q%3YB$e5~d8{9RsMmVc%{55h=4;7I#z#r>OxF!A z9l_^@s!EwI-$c*;V_JtB5=pr4)KJ~Jiiyx*m!g_ROMd}h4uV8oeULCPDS;Ed=g{JI zOujt2mh2iZ;pUF&I3<(-DZ|F;wJyAEqzx_0lGfQ_3#3<6Dorc1W`q|cww-z*lDE^t z2MDNC(GS~k>v2Dv3WEetEpT8!FfKtNxHs^HxssT$6!QM*Hbo)Hr935i*b0F#ZPzna zy9|#bq-0?;3E1ae3hMl~Yi?-6`I3^7`qF6JJ!%OI|AGY-adweZ27qc$OI+09jq69@ zn3r(bq6`NRXl<*+vWHzcNw9C9r4RK?X?8qCHxs7(m%?cCW)ClhskA)aA1=ldou>S- zzp|MV+4}EqSW?{7%fa9g#3wq}ce$7xk=-54micm-42pmEU0#m#!Lr(ce>@1-%JsWCMXz~f$dTN7Qym6 zhApaIH5=6tsq%!&20^7&p9VAatvh|gSz0=d(t2iDm8N*wH+Xdk(vL8M8URkMh9IU; z$L?$Sf9B%i0v4*pnhc16ar-)fOx2;673v5hGq#Y5Xd0s;GQRQ|A2egFbK zfBF#EpQy%OGmtzpY+qdb3j-_64H8U#t-XhVh1cF;=#|K8%9*OY50pa?l~tFeKJ^G3L|F4~A@l4Dt{>S$ppydnk(Xu8cMvZhY!wU<35G#kY8A-AG~b~l$s!`0oV zX<2xIZ#%E3WnfKWP$Us~D?j&)Aq$Wi0fhRjTF`^GWO~F-IROd?5P(8)D{wVEHN@6Y}dBMWbv$5hh``85&CUI+EC82$3VbQAquX@U!Tg{9nuMu_`Xd`rfTR zD>v#!rqzWw<`|d6%isp#FvXv+kt0i_40UpY5-rmTmC>(Nuhc^C`H9^Mb248G-n(O4 zK|VP=`A@=>fUbC5JRT*QuN3mE>lx%Crgt^1Eom<_QQ`f6&hcJUNURjN3XBHv<84Iv z6H{6axa>@(q<-iV$lRVkya3z5n#`aGVn}7sw)1!UI-8q5?c#T>FX}NK*VG=?V&L-L znZenr1s8H)CD0_`_3Jsr-oj|?D$Pbh+Bk9qoYZ(opC8w`e2c(`vqChA)R;bkB*q)g zt2*V;TuVv0{i(sAw!TG&z2p&c^a9!*e)i7z2s=ZZiBKJD%7&jD9Gv!8sMYcsXNvO2 zM>wjC-uGCA-X_a*)q?+a-+t917ExHDh6vYV;eo1U5OUx0LmRGmwOx?C(5}BqVx`fB zg81Avf7Hlqh7}wD%n?RQgok7G6%V&GVhJT^_q7Cw2%(+r-(%~IRjEl}1AUf(1oC-* zbQhjc$40lwv);rm7p~0H#fro`DHqrCCU-6P8rwb$uo8XVmS{VAHhzU=SUP7 zBLRK^-!oMhe>ODmBv>>Ukdq)qchXD!bYSjd$gyhfdI0yD-T$0RP|G|q!rv*1WUbg) z^tnT+lH~6tX2aK#mNNeb|Ah#UH-2cj-cSi40Tf#H?BSQPeTSxAEl%4{S11EKn(gnpKwgT9H-(B&;(deDv*d>;N=z(u{8iMKQ1;t` z51Z7P7Szm%ah6rOfbAovmOA;zL_ADq-%rnj6jf2cOr5xOq*WnPY$bmU>rKq9%<-yn zNf3rjO;v5KS|e_|*-L(%Pt3s-lc}u}l`WTY^F*Cq|@$tlIHL z++E(8Y+(H)nibxFZw#?h=0g=J#e0(2zow!Cspx#q@Q9vd%79PC{LU0^dVw#@plDX2 z2XYH9S7FMXm6eXZc-4Zp1w>74;RrOqssScOJ{$S3j)}2MPhYbK#>l3ADJZKzp_QD` zPOKFC)J+l>?HC>nkw^LgEkT}Az~re0pw-jMm}k~Qw07za$OVf3P`DsY+obHoST~ox zkC#I5rK(|x#=N{xQh)y3y8-z@3qDU1QRTw(Tep|)AiC{7JS>#FF2X=c3I9d9?+p$U zWI+*B=iwvgtyH7-`UYavObqyaS0^VLj+DFW11bNx5UOE5?b7+Wm#ie0_oq*3SfK`F zF~O`&FG1#)_lMgx5)nLXUO`*Az)5m^XoAd(C-|{({`=zLtn@#Q*S_w*4jCP3%S4go zmw;c5w_74U(g2B74NUTOuj-lFQ~6isZJ3c~QRAShq_vnMFu^cG{#K^W46Il09rp7W z30#?=L-ck!#5(OOXyQ$dnn|v8&CIk}B86uKCN@O-SRs864T>`i{UL*gVL~6hdRPe! zV&-~;?yb}aZ(n;Y$Sf4UDUZ_rZO%&$gMRC78;g&3ziV$y6p@Ai_Oa6x@E;JaQ6Fm< zAeWXU?>Z&tj&ngQf{UN1sXsLk#8b*r-9xW&BBV7VoHQKR-oL!HxKB#I7K2MEHB^g% zoO$&S>1{?9DVGs&ZvEx&I_%_60aXsFlHaOZ9?cVgOl~j`gyL2xRZa8DL{%rIN`N{; ztHYbpa6ps^FLx81fEj5a&C-jvd$xj_peC=Hu1=bnRQo>uos8LVKz%wTCB+hsCgdxc z`FHnxP_tH#1N$xa_cw3ed=ML6yc=4aLxLl0o77SK0(Fqpq`V?WW2j0J<)js{uaT#u zXJ7Oj4H!R+u4v@_0d!Vv*w+tVdAl^r{R^Ivwot18etRhA%14Yu48p!~yR%*B=Ji3+ znsRF7P-FP=9;;PV4Z_{j+A72qCS9S{#Fq<=Q@pvC5SRUbId6!ZjPgdYKY%*}$us6B zQp1g_$QArbO<8BOK8e`(Wj`-gLUb1|=QVi`&NzptZxS~g zY3)h&@JBx79F3w3{{e2;`0hFTW!bp3r5HxCENtS<49HKxjz8&Se&so|`aAmbF(fX6 zmg2Ykq_qGj7Sq!=Ib zFSHGZnW*~ZTp$ig>e7=f&pM~QpT4kO%z#X?-UP-py9?d)DH#qi?<7xgPysTK_0!Ho`JV7Jwn3JgW3HE z0`W~v2}mGe47vu#Oj%qg?zOXa`us-t+J8c^%$_mzCW;ZuJIq^Mq;f!>VJy+%oEOr> zMZ_SffzHk+U*8YMUc!{D5p?r&b2`GSt*g3_jw8^0fX4yK2Y9ZBo7;#}1Air^8b#Ci zFrWxv%tQ%ON47Kh&tF2!eqkFa>WicrF)KYK-l)(hDjc^4G@u@t3XgRQ1M$u%G=RWS zZ1?6NrtC?^h|Cn7N>g!`>N-wO+=YYFo<-Gl=FT-`iR(5dWWtNumJXd@T8y|#WBiBE z)#Wx>NA|;6fi{fJ?i2?O5t(~Ri^SIXv??bF{xBNBE>Ouu^!(_3&houFHH7blm|AG zK}LEygwt;rf%9B*`9<%@@;N7Pgn!J0=hkMh0I)` zMo&OK`o}RiWquZpVP|AGE7>IBOX-?GCFaJK>W~V+HXx!QM zTiM;U(Gq3SS{m?^Aqp=h88uayp`?1NdIp*h9y$tg zlEu80ptBD|R!3$|q9gWld`$5Wl!->IKBa(z2f3(G^ygFKdOYDOxc2fPDUcp+ zeY|b`P?ngAS|2cJT&itdH%nq8rp}Os?4a=Iv+3&7+eKzXCr=`MpB@$TO@1YJPWYK1 z-fFN7(>U$EG(Amk1t5u*ku*fqo@ov+CDRQcK#Pg!Q=_4$k4!F?H6V~r36*wlb9Xb3 z*x8=r9zx37vac`S?PKcxD|{Z!DumM`pg!$+A9vIW5>3AyoeoR3CQ__n1Y{0xYAecK zwPW8BG8EAj@Hzyh3x~J7b!jm8Tx^zuyx=#~^-+uU$;U~2susnk=`N`5LZQX0r_3r( z?LRXwo%(91U6xUCdwl$Oy7*P!=sC!3eq$LQ7H^KlN*CJI&2EhM@fV86br4G6yK$$3 z;&TT5y|~dtq~#SZHj>H>;K%Xs@GNqx8Q!oyp@<6_ppNZ@?p$R8YWMr-8p|HF5CI#FJKvTY9X(EUoUkQ?SK=@*)DV=+e?!W*E^j}W zFHbvL3q@wR21b>amq&|t=67-<1u)##xqFFWfFkF4=M2wq>>2hlG7n9P{LPDSk{Mx# zdw)1%k6aOX4tZ~dfReiXIw~Y*;k8iNT=^p{=XLB&G4a1 zBQOK#$&u*8rDA-YJ!R?W4b<78brJND#{X4V7tW&N9?c}DH0q}NqyFSIdi$+nZGiN> zZtYSvdiclZd!=WPVZSrL#GAFR+y8p&4vFK+Akkp%BYHfP$oIDmFh;;$aWCs)Dxc9f zonTUg=>zt5eLeqtWbFR5%tO>S#PWEEQ)!njuzjfnL-unx=b`ucoy?3l&cVq&EQoZr zg!nOzmyaJM!%3KOkGt(irmX^(cxtcV;coa5u(R8WAWg8eGlEI2oyEURe*8`3+!&L6x5ID-10zaF^j5NA!17(AtymvjjN!pOSX*>rOg$(PeDXh=GDrGM@ha zmwfr+uu^0{qRwySG;L_ijH-!F#|LrxaQHpCpPU6-8?lUWo*}~>ZKZhqv74KDR9tnU z3eGC%v&oNlIyy|b{dY9L)!LL-->yt_c$Xr@uoUCg0QyPe5=Wr9(P#Ei*9}5M(q9xn zxWRDE!6^x z{D;|&c5X6^S?=2tfIa|wSd<0%??D{m^Ovj7ft&Y2t&E=<6gjOAyR9wH8U{$)kk%Ib zZMMI_gCZG2u3^Zv;Rc?7kX}5bSYoYjN0WHN#7Q_=^y~VBU5hKhJ}dBUGL%de>no1l z^A5}oOo`RA824LPc#mfsZAE0=Stt4BhMW%^rgGK-`HLGqVTT++3owh zs0A+fpgc_+8^8qk8%rkvAJBxnxqnE@hz@2{S+?%H9GorKL>gCL+Q4=Sxc188Ng240 z-MsI70r@R;YAc8$bo!o6czEwwoO@_nP3wonp9M&t$z@SwgC(!p@eXv<=g^OB#i)08 zc7CZ!vKked?3~ylMCvmtKk<{NDWfjMnMuz`xv#8T&jZJtEH|b|4UnI2WHEAjYSub+ z*C|FRDL@fI^f`Gkn4?SfY8e(!LEdi)y0(If-Ip9U?vGxap#iCLpemQGF#6iqWvxcL zIjXt`iZJDdhDOZG150Gu@B*cnX$qgwoi!1MCgvn$K?TW*QqN7dgk zw~{~m7yP7K5=Z1~rD_9O5GtF%oxC>3$CHDVcc`px@Z){%j(a_hSAqd6AaS!r-|Tfg z3ZY997eM0DyS`eDE%hW*q`5=qBknA3x!H*kj?!n?Ak@FG7xM%yXTI zKz%j7?-G)Yheq!ha{v{9VX1|q zH@CLFA(s33^CzzW&;DCS%GP#Bf{LgL#@4w<2(NU09JM(#1Aog<5L2rANKxa78L>I^ zJxQs4)(j|FloHl#L)4c%&=sP+@|duUj1enjdCZl=GN*ohW{+9!w?h_VesprY3yTy_ z$~=TAXPSI*Wv;T^9~a)5HJ!b67$YYmqrl1b+kDyt+IGb*3Dlm{5S16PGQ@HpLgWH3 z!dt7o+tII7{3LtxUosMbUem2cs&E@N69FZ6_OJkXbkx(XS^V22sF=y~zhu1?GyApM zdvJBdIcOl|{G8ZA_$&TU=MwVf&<2Bp=F2*Ni@3w#omiezB+wf zIDTfG?JS-`4Np)G&OI!c`!;xhhQlU6of{9@x4bMBYV3VJPE}?jOsV&MLmG3N)}Bmh zO6_vZC##tP+Wz>$q1_6;v$M8ri~1f>KzIkCMrt1W)U^WIdZ7QYI*3$Y^Z>Y2P-g9U z61hqu0=Xf9g*Gk+Uzk4Y)!NeuN&O-XE@V!SIT(v!K8w*6nh{WH{BdIMgqbG4#jtRO zbmTg_f05RP8ryd3R4BL|LiSg+L&di*(@q?TT@QTMtAWU4D?j`mDuG@_9V z`|-rB#P+TV9mc%d8%vkDddFzX?Rha?{N~%=ZI{OXz7YEkjla_svZuNX?hsHd*U2}N z+skvt3=eYi@2A9|;l|xL{pzex1TpEl>(F2Qps@U}!NRCf_u@^g^7?hZ@D)r(7evO! zdBJL2yIEVoQoo?kgmjvyxbDs4k*U82MP3O?bOGyhtQrciv>Vi-9Y(5y_QU^_o<_^( zRf(XO!XGAoSUvC_V6*i)>98wh9$jRhCbb_SrByHD8hYewRP0WSVEAG{vNs}XFq|s6EtCrd8-`WMxSBpWF(`NtIlnrr1IhyPRBRGsonDu zSc_+GlQ*$ymK8Gp+rJPtSc)QZ)7Ul$4Fr=13yzC^G*RK`L2;+ziRS8*K}z{%ET5Lh z<&t(tgwOsj<7($sRn@7UqVK zj|{_<1rO+y*K9MmA!OCnqa@pAqBNIloQ7Zh`P_z^yptLgMI+I_zB~?D*7`6h+lO!q zxd%Wq_IL!gqH??M%@OkL54BsGb{0wP~gqMe;k3o_?jgrcP zBo<>)ZK{jn<4uv0*`Ax=L*@f^sv?$Q^|!?Pp#Sxa9Iy+<`Z+__wCv_;EDYSb7;bT5y66#KjW-t%~4WS+Rh|o`On@_LrN?dWZqa0AAyFuqY_@4--avLym8ch7o zFom$ysg0vNQvjnbKS$OB3#Z|}GKwGh$`nyVQ*VN^)4Mz%gASKLP*o;fe52SQ^tz0> zrgv?PTm!4|M}xPWdTF3oYHE=EX+XaBy;5<8f(ajz!d3nEc~eP0WPV) zzJQbC;v9`2?(-T(_QGC!5=wfH+~cjXNknimv3pJ--gfY8@Rq5C*mnTIy0X5!-FY0RKlBFl;^{@Lz|zuAnDh>upDrC9!{NV^!+cpIfh zsw3a6(5lL8+$FLpL^st@4=R7P)l|JI3~=ZOQ^0=DYZ^E48z($y|7?%02j#&m1Zi0} zp@Zgr>xFB(Yw9H)kK+}`A%$P(1;th}uQ}nJAq)-G`{T#A&%;J(wLa|LCH*Jmj;ET3 zuH~eu3YZr8ym%zOzKo_u4~xX#D7H0v7E1%`8lckn7D6}M9{7h+wl?6;)eWl6b_HoG z%J4F}`}Kx;p}8>m%u;hk6nE5du(8i|K2Erqsg8+HnD2u3$vb>zcH;3$&lZgK|D_3(J2Lyqjw^kI0F`KPkmYCmUavDRxqQ%z zQ&DL@X44@1Z+Yon8>_-SNNxZb#FP{Jot5$v$jT&{{gy!!gqcd)e{-s__G4Cd_1{o2 zUeXq#Z+v$<#pMTI4!I9o4LElj=Y-ncujDteKXa&aj92y7Y{TuE%xpZx!_9u>5-0i) zblkkqCd}dPnmh~Is@RoF%77V7*80P;^asCS84I z093skwecD(>n*v7MWeY+NN!Yyw?gt!x4o}7MrUj4RXQe5#G$62;nYa%JbL=3qZ$?rO0!0U(b(EZN=NPe(~ zO?!vBKmO2c|KPp|X-1PMXFP}}1XA5y{%>d4my3s&9F#w%ttgnE5s`;=hBsaa!ejxf zrjG-8yLQ_q|0B3wmxP=L3%$3XxDpX!^@yFWXK+ralD6mXfz=*#|t>_LE{#p2GM#M_3s z+8Lc?@DZ9#E3^a6vuNib6#P#v=f5@uLA{}i13izdbUoBu)ITgk^hpsSc3p1OD4-td zVvZ^ZKCn2AkN#uh$5V+1v3bt61eYOQN^rd&FZam@-9R}uKWo8ed8U98jJbEpcPMU4 zor)YW_NWGRvo&MCw)3!4HBnrplH-o^M=D_UA-+c`(gdP8$z*eWYqtO!=OojxIPoWN zKb-)6nniypC?!%ON981;!sIqSTQ-EEoKUV=?DV6RHaE9c%J6HaoBJ#cT2s5l{>zhU7Tp6H9{5 z+#o!M!Ml!N^r?Xe6ITC!Z=T#baYuH4xt*hlY8N(e80zc{{5gN1+wi2VH~f;tuxI;7 zdf5Rrch>`Cf-Y(ZY+O%;jgHMY4Lm4H@$pCCD78Svl+VBn}xPBxwLQAK#{upF_3WsGtw`BS>qfV{=2;WxN98*luEFN z=q18Tkl-nPFo77-G^{@KH$?}Oeo@dKqqaQt*O08+{Y?#y?a~_5o{=XYE}=1%yc_>2 zG&<;`pYX4riu)PX6RC;6P0v_3mgX<@n}(h(4RvPUtueVSdv4q(QadFeeG22>O1?a! zqX=@1OPAT{X2`ke!ZGY|NMPXcTF#$YinR40a9%Ks>MC0E#<%jYPIhJZi?7FwVXA}X z`u;zzW;*}K`8fHJ8`0+VpcuL+zRk~e%_ILMN`i7}k1biD1BxDu#SxO`D$CfAI3m+0>tLcX2 zBx(Gui;IaUWWP=ek6es`1i9X+zSBU&$Uq7gkg(d(p<{;}5x3_T#Ea;{nGTh=PTq4+ zkI@hhf1x8Q&Yx)vo`iA14R3 zO3sfUg42np8t7Q;KYVyOB9f-E7r9*K_|Z1%#Y&QWQ61K^S5F9sk;)*s3wR^O)Mj)sWSvgGU=G`6dv}B%_?D6DTxFR|-P?SyF5Y zMddgEbkeQ2CCVl1-G#SSu(p%=e!Q=jv^eKWz@^U^-qc_{Sv&Q%BwRpQit?8P0}l%5 z);EzE1aC(Px@M%l0Hz-Pex1V73k$OtoeK7;S+CR?C{%??5rw8y>IyWYHY-Pe-Rl3x zvIN%dpL=X{05xKRvYBQoZYV;3DQMZE!pMm54b&sW#zU%3zD(6IxR$36mz<`*Jo)4T zA5race2FP(%OH-#ZSC$VNg#&SmsuSHLmyh4J>g@v7e;~MB9xN(oy7gGoo~pVC!|=mZ`n%cc zM9AIn%jBYTAir`OMyFn>M%M4CX3vN}BdPYOQkP8VQ^w#5m~jxM%sPi4T$uuqJWcLZ z?jUKgy>Efe9UP2qE;`8{qL*T%t)0=<@cQzf1fQAj;;7=~+z+w(gV`*9>Fpg*<={#k zsLcwW+#i)H=C!pd$k*uKAW^^X zw4-yBXlO)I*v~OznNk7jTBE=CBg?WOa|;Wf-H6!v(uZszsG`1-lKyf1&=qTx0xd?4 zpyH)CDuXKQt58{uBCWsM&VzwK51_n#lp&3;qun<5=p`D8ad94pd(d`Dw>eyZQgFS< z?8IkfT3+AI>L_F(#fIF4Tb736DmRJ0K3bBF@NrK30sp@A>8@V)%6SK8iLjg|M?*ds zrV;u#l0SJThf7!X?h13U>k85QI`9E03KSfQsKYUv<`_YXh>1|8xmjA0iHgbHqCZws zrL4~UAdvwQNzcP=XKSYPsNfTB0fG+4ygxtU>pr|K%}f6U)RGHd{l~Wd&U~(C!yqXK zVr~GG%w~PjpFB2c4&qZOz9OrQupFd(mcWz2lJ}-MpdjNzBqjQX_~|GrUEJN-Hi#5p z5%zq%#FywjWGBcpVyuhD}>1BV%pL*Ogc@(6KI_I>G9+h z*M_eKf;#F4yM92_t48$C9pV$c632jC^!5~zKX=+?2;zF$Xg?6 z=URy67bAjM237lGV`IK-Zzr$@`NjZK&ps{)oHt$o0p=6XtGI-EA{N1q0X;1!{6=x zN8@S}X>l*Cz8X0I>O28k!?=&d0SJ|S648EC=)iF(K{Y}mE4A{s-?0iGYpyC?(Gy#` zR_nyf)sZNH57x?<$tj{z`YbLiKN*oO^2YRy_vRD<78d9@?rs6w0jX zSihz4NOdeNLvo3e;v(9gYK_@UFEMFvcPG0ssUKH(^59Ub{MZ#)IwFlggzQ2Nef9-KEQrMVb zw21Xo`Ln#j5mAYEQ&*Umbcn&6>lm_(q9g9X0a6#GNkVV$3m^msJt-7d6~53x!1ITM zns9jM_Ps$>+&?lP4n=ky8tQ+^xqdpLJ<5X<=;ox^!t&>E&O21g<``A|+RsrKx8?Ep z_>Tfl6ZDW}`=t%MZ;F(n{xZZXZIPB8|1@o{{dsI&<-C zE%SiQ!^>NsubKdz18-bx848jGWTOBv@-*@yE+}+p?{&M^Z&0l@Q8hE5&>pL1-L}cT zo99+CmY1jNX{W_*=j$XKZ9sMCxy|*H$N05OjvM-|5u^2=k`zphfU0zyet4VyX@}W% z>?ygI5rcy(8hRO0;Lpa<^dCRwK>OP|H_ygT?B^|N5eq)oF)yc2>e3QmAh`++%!si5vfM9Y# zKPX{PMpPdC;8HI4PX@&(?E0pr>ZC~Mle6g6W1Yt{wZ}8#mvJ;pYF*6d$8IG+Yc(y! z(!B8mHgb45eDZ3Jzo%o$&0Gr%a|teOUHTkes$g%HW~o5Fp!AdJhH03D9q-QzRAj8E zh%N^bh0~BR4E*xQJI-ufzILSoI-$)ZQSH$T0z4} zaT5B>JN!~wbZ>;s;0+iR2vuTHH<(y<_%S0?ko7&i)sd26D2cCwB)52tGcV32>n_fh z_s8=tRz@p-2cYg1;AJ1vFX%kuoF6eH#VzbnCK@;Uh&KkLfAvTCWJ= zkQGkpUMLVVztO1XhMm9gJ$v!(1Stxs0}>3H?&Vxaeh)6rI3%aq~D}l7p;Gf{_2Af+-}H*Bx!?AI9R#9G0|dn2S5!eGsG=J5T(U>lJL7BNkPS85lk<-l9U! zk*wsByACwdpqO3w362|h*bcog8e=4Vho3aVlUqrYINltqJ~GLqa3a+vyg3DTIICXD zKc15QO_SNv)o-yp(rZihB<;+pygO(N0LKA^u4G9H#8pI!BV1CdbM|$~FVW>XQQ~OE z)WZ`5hZ&GzPUS!TbIKiZ)&Yt@<;+6f_ ztO9=7k&)80LVXC>Oq9~?Zs^uoSp3mZg6#@p)fRV1RO44SAacf#wtMbs3)E!+geZjY zVe5S>+J8&=~R3Vxl;JRfR-NSwd`a6m4qmX zYT137r{gvtlG}T7h36ZJjaYJ5FcFbU_a6^V7?U~_N^b8TeAz?+<^e(6)@rPzAml{> zY}*thOAnI9xj?8`yR6hqNZuHg&UKah@cf1ABo`fiL$O(v{m#<}9Z5|gC(ZU(zn!d? z7q~b%f2-1^SIq9)ekK_gYd9dkLT2=^ABzN|xs@RIKEKh->?8t1#L7&HcCQ3qeYnh< zm0ZgXBSNu^(O)C}Fem(Rl;yJ!T*1$ja!y!iPE@j>+IUgu3sgD>{3JnzH+3xofuLRd`(A(&jOoBX@vji6%*0sW#2<}y zP99r*c*7{@T;JfFy!Fde!*SgI`pHkOjV3_(IlU4ZY;Y#IF#-n~NA4k*NgrfSRUH!- zAP8jR=tSvpNa~m0l-z_V*)weG^goGG0Ucr^?l7Jf00p|QYJb-VBt|mAc+`_+DZ-R6 zc!Dz~r+#988OiOueM@W<(QT3Ex%v|xA#aYXkU`-6g~<)fw+4rU$pEAB0^yiXpFZVt z!=i1DG+WykXl~R(-oq6=;%P;z1JVO<%42MIc6O9NGvRNeNocoOE(j?Qf_(N$whzQi zu1LJRJR6&QDoRBGVF%BXAWcG%X5CEm-V}$5hZ+=UoJ;ZDmkhL zFUDVqR=(r(E*o6|$M38hG_z9UIxvO(0`MKFFFlJ?*r&$z$jD_zN+ul-pwAby3FWteeZo%at&ob6I zo85~bh47gW&)ZLuiz`skrY}Kb4j!J(i405CgYkAjJU@HA zn;jr7;>ceJT*mxbphcJ_en$KFT%jzy!WMc=j2s44Q@@aCM({WZy{+=cfcFnKxQ(jy z&gGNBkMD^=a}o6XOGpV;JD9D6^R1_C1z$FU*>?d-+?QutFB;oj-M-%fY>xAZx4xD} z6LI|md8Uunhd3s-sMB%+KdIQU?C*l#a@a;pvkO@z*NvgTq7cJre&$S7v{|KR-pPJm`40gNLv97Zn2=z#vfm9v>fcc7c>Iz@S?Z?L}9#(ij&<6gB6=?JIf66dQ3UcFfne0o*%B49%qcGPwt3*GL zL4QthRw=u|oe|(nH1E}8SPSC`ssrP~Af*R-;C~NkZ}6N&9$& zH2!dFHrfS|4X`Z}F{qnrd8lUGg62;EN;#yZ_K; z8Yz~yY~Hd62>ox&j!oGUi47xr`Ii;Z(*1VvTlUYF?EEcWTap9?C~+^;#N1n2J+(((USju)A(^yzQ&3*Ys1O4~%<-Z^{hEMq%!7W;80F90Q_;W6Z+;$Zq^X zX(zJhsJuO0hZjQch}tXT-;TZbjq}w| zPAw?|9i%$Q(8S#`X8_}tRYoBI9*NR!j?0My)Y)JCegLSnHltLo8!D2=gYpSyId|Ne zY*Tftu+=3Rmo8Px`WB9{O@Gr8EBP=bh#|{h+#3cT`@)}znhJtxdMarC?;S3M-|^#$ zVTfO4^?=KL`6nhh>DkY#M(Xa|<1tS)!;hkrO+pc3N?AnWHsk-A+4mW$ZmZw#|1U59|Nc+JNKs0*lyk>VknV1zI|QUd5Rg(NrE?fMlFyXnQo6glks6xE@4fZb z`f9EF$9K=(`<`>|JttD*!#iwD3QPb1fUT?~uLS@gy?g@JFwkC}M>35XFE5ajlAbF7 zfJN}%jWn_B_W%IU0hHxsK7L*3UVc|$4|c!$7aZ$4GEZjOf=oS_8_2x_Y)`Z3K+&sS zK7Ut4VvGxl3I(_!@k@A0f&@+B~fIZ*BHW7YL)5ed}|KR^Sb{#Br6Fk~}Ar8No z_kZZ~e|ukkdRK0}df&F{{qTGNdw!^)y$PiKdcC~*xZHR6e9rTHeq;c@GJyFGHuwxW z|Mb6a@b|uktX@M#{f_$lj^_QJcKvB85S|r?+m*#<_^x;R?z~9*znINu-{;epe>$J~ zIdVQ8-#xAf-5IVv-^4zDeRwYPzbk}2j^RFzIj>4RZAwX&BN(O58T)RY4&hISH!ZM} zW%qkSm@N&3T!rUj`QqciCQ;s1Pe-+p@k<1oFZ9Xk7TqW`!|c7Nde ze5wBIHq`SnjG(RXY+G4KA+*jRu`Z38+xCu{jaV2Mtdipy|T)u zn=d6#k15&;5%nIvSDqIut8FK3F-?dosl(al7XQ`ZU?JPq$5Yy;b=n`hN4~=b6<4Ja z)}!OTN8u}r7Y`Rw&lk?4PphLVi`LElhgTy07b1PGZn&`GI$otQhm5+#K6&tfXT71M;5h;JvaFWJc~>$y z*r7z(r13+KF_r6rz-3JpVr2w8d$1&wwF`ft-t|BZyS?*r;{|Fs4es1C)y&hZh427& zHRaP@?9<+@)AibNt%4)naxJvZ#<%>>jP=vW>C?$qN5V;WFTC*l@RK&*t25!iKNGx}Jx^AHibLQXnz$eAi~}x!fylvXDLeLJPR;_;dSt^5%0};nl%& zjOXq^Gl9#CnkZ7g?LmWVo`q7{m*HT1c?lI`qY`W3&uz1#?f0s#mEhSx$f`$K?@VJ0 z3(};wxB98$m+x&AUrzn6-#wq6_U=E%z<{-+gzwu5S6kFaAwS=`O0^X_3&D*lf>*s; zURy5DixUlkE808`dTV1*>vO!v{0bDj`?;6o6YugoU>DErTy9df9$Ij)pa#Ko;7J=x zgN(sfbAdpbjFba?L8{K_XZ!Evi=!;!1Mjp6*n4L$+$(z5);y^*Vy*1#Yb_F&=Dc(k zsu6EKl1x6^_U{bSAL&DK{hkNm4}+UEF**MV<1@lnQj%&3^PmI}vL(z=b5Eb*o!kA?rckG~|nE74S$erTZd+6HU%R+4z|2-UgRfSI3 zVtvx|^s<~T(*&Y&!8K;33ZwI@Gr`GYscrKQSJR^>qe0Hu`lFJQLibWR>PQ~Tey86k zJU5TBh|ngaXPSvDw$AUZ)9c*eYr_Fd5{W&vNFeN#Pp%8k_o`MLF;>p$hak}CxOzeH;jLAZVDC=X+v{}U(5f=J zY}1VUlTDNHkHXHgM|FPsq~K0VdMYm*9p%$Q>se9NF_Bv0?X_=SZHOvW0-MKSLu(-? za;nB&`P$^2`@+%JL(MwgeWu4=%OZ!#?mY^JdIU2#cHoqJl|P=#PqTFxvfQvX zMY4NU1mhbhV#U1NJ2rSlZ=bv=j|gk{!`PL+t6e!ogM?er_bmANUyectE4hRW$qw|> z9D6VLq|4)xubPgC()rj2iP}FsZylsp2A@52XHYzGcUWB~$!rPQwNCS$soqNxx<;dI z912|MVzGpo9O&JjP&|yE$Xtk33eLXQmyNPA{~34Y%NM;EA?O1a`EYu=ctZg;hI9!l zoI0<08N(a}%4Uo%(rp*X78_?wmtV~&oE}ODv#9)8cMNui35(0L=~sTU3<^H-n?oWN-z`^%r^DeCY= zrU!j}G~IV5A|vIyq9){7{>!AU>S^<(%MGL6EWkfVM>T?6CRKI&>E6O!znf4$O#Jro zaiA~FnKcn#f$Pt#peZ4ma2zlGLU@fsfTg)rLfl z=tACQjq)#43cR9503CcKMC2RGpDv+2*j*7!jB!zr)DHnuaWXb^SYB_nnr^hanV4=yTsyr3!Vl3P?2SXTdoH%IXBUU*lr$47>!a* z;0$AB$J`Fj9wAOv1rYNq&-d`>duylod$Xq@e}uV<%WGXOVVc=k;`-I0zO0=4+Vw`~ zm>#S8cs(gYDD?t zsh-Q_z3RWO;JquZ%wy|Z$Em&JURUJcIbU%e!?+$IjJFpK!x$00eH3PTOuq#4DwD2FI*uD$q_=k>=(xZM9>8Md9n=-* zF_)eR0VJgBt&q`ogoGmm(Mvhwf%q6RBx{15(>EB3exiv>nSj@nuccsC2z_H=M!Lx4 z-MEP^93Y3IjGR7S;HwUZT<2Sg3gjOBU#1xx`iTH$PF*yBm_vq;jlYm5N`$qwRzub` zXXal?B_}snFQei6h=oO?aL@{cz;RQZ1oGP)>sJ`+jg=0%uEVLmkQk79N|!!1FJVyU zx5IQmh=%t??Jf|&`u*^s+D#$h?!=ygbSxoGtn||OHrZGdX*C;a{Cqb%N-s(G39Hli zv;|9`&HhsLpgehh*byuzpukB0VZ~Xvw+SLi7R8A-x?GUwbyOZ<%Fu}7O_E!=YT;hP zFxd*wW!^4g~|fB~S1#U~ZviHC`q-ByvPK_jvqG+=5_ec~h+oXLY%4 zu%{9xejPbfZjGj_%2WYnNpJzO)dvs5w>GYBdrgrEkG@>AmU7zon{PT^`|-J(+q6gZ zMigI)VO1br$LX<4PF_)#)NM37eZDgWuF@Yi8wG!wNn0#zTN&+Xzu8zWsdCkBu?~lS zGo`=$a^g7a>;YITdpEm|aE&}R?QnE*OC&07q9mtS;W^^Y_5t+UeZlhfun8q}~{4njEu+~9O@OwZwUGNnk z6aefWLsR{hor(T$G8o1-u>Q-7PPU7Rj6@S7|VVO*v**FjiL(Sh>~+_ORbBvlY1&m zI0zEOs#HJ{bVyS|980Lg9X$0;x$A1G0KgwY{qB2-CojKPyX zM}4xW*N~|JKhyZ@72P~g;|O|50b(w7&VL4|gk38j36qPEHFP~oziorxyX1fp%4c`A zdksf=Q7HH8u=NP*qh;3B-#!mnOS+l`Az6#fsrp!H;P&AL6Cl3qnI%TuYzB-w;EkY# z)tV=YkJTc-uOt&O(fIxTYbioh)oe-C{xn~W%1Qq(J;A=sxlNy6t}EvJ?NOK|)ssSc z&Xr)Q+Q`Ra#E^oiX0|32GQc>jhGj#De494R$b&-w4rFGYPGcXT5g~IU7uJQVTg6}l>fX9Jrf_=+X_kMTZHbAHHPVfsfG>UgelUK zy;Eu4T+ykxIINb_CJ+{%(xx#^1oP5gGKpYcYa@_$BOY(^;X50;^s<(q%K9a;8&n30 zrH(XSic~!Gv)b53&XK-#kJjhMQ>jSo#B#yk&;>&kai=lNC z+1nNLtDe3uz&PETuw@Mw(lnGCda82Lc%T&2M*(dzNH_zzSX(5@Z%Rgbh`p_n##uF+Mrr$15;e`;>w zO;q>f=D(6j)9NGv{Gzm+^%6r7Y60STRoj{NNgZfmP6DnV_Sra>MML7d>$2s90gde+w(!G=l-hz?dkCq;17b$3$p#!8X@b%m&w5t+hLt>yM{kmm;5wH<}dFqWVZLp%?R4~KKWO6Zg{WS9pH^PGe5!nvLPHaT{K2VO@D6HuIK)Ycs; zLv|NsR`tBE1K}6@AF77`+(#=TuFf%UjMWnOY5F3{CQq^z=!elYL>amc1rZ-5PfNpOLh4fWI$Pc@LR^TQSb(aKg-+wN}dess@Pkq`a#_?PC07m?n(egtUciqwB-a7Z2Kd7rIGrL&X!Mq(AGDZgj) zkb=iWGr9pr8k{O{d{ z>czO4Mhjg0vH%y!V`gG!_=DXEod28F2DCfk8bGb%^?12q8;DA%>jldlb$KIzeBW&!*B^5^QX- zelI@KawyedOb*$}#+T*Usx6;fRfhl{)9#n(n5^=cFXtNv#ZzLL0GCOo04j=j+Fm<+ z+LLGgyzD)n55I+#Uo|cBrYQAcN?F;$4!xG>D2bl~#Od48Lqi0&=?J0-JVHLSSh=30 zQ&TmQ0my> zYra_=)6~#If!0bpm7X50nW8MvaRMo3bC$a?Sg2ieVWCw17?c9flnK5xR;6%*ve++0q(XuI7?s43sBfy#lg7I{<20{fX5sBUhA(|NhU zeLEw=vi(8mWR!8k>mFx~4$x`qiuBnm)8))wxjC}fCad^7`yocG9w8Ept*5mUcxe_; zOJmfQ*5yKf_RH(;M!{8k3G{Vcppm?a7IkO(G{Y)#W#ee)cA_glqoJZ~wLp=U+iXBO z4_LHs`pHoyYz=*zM+`4dh%LCGO^Z6%P5>h`GJ8RoQi=v|fMKrm_tmpK-c0~@*Y4|K zQb*mSm0ojV&eSgilVv`3LFf9C2$I}2|4F=P^(Cl!dtM6Zb`438Zx~9kVf`qIc?n@poP*j zXupJ<>V;@o^(7!|uvIc0D#UIBP^V;?jQKc(kmLwV%*imKQu6-gBdSBx6#*2LXUkUP zO7x}ID7B(^!ao4fOL8LD!#!~clJ}WB9*1|d1)vq%t`#bA^=oivspf0O+bxYP@a<8| zJ6mD8WVlgu06t5P?&6!e{y~D;kohwvs;{jcN_A%>($japBwaPTPesTh^CR^~a!n#H zeV{RWB?uK2<1n_EJv_WGvj=QWiMo1&w9Yz)t7P~0FNa_Nao`A&54A^#*nl$>={=tp z+Gtc^&AJglNJdVXnhc;Fsm?9+Gcw{T6{e*B>l5&6$QIy32h9#1Nd68o@-_%PvLYoN z)rN7>&=Auksj=SMu^?G_#R7M~vy`HJ?0n9)%aH}8JoF7I#pYf}e|6g0f>6~YW z;9;vK1rwAflta7;v9(78q~?56wm2WBr;`v6Kc^N7e4_nBZWn86HX(Zp^m zOnP3GHz8$9vFfr}nW`I6J?13FW;wM%wA zxnNL@JxQ)OBJ-|ju#=*ka= zd}1!@P&Lu>rO^mwHo=8THh@OjWq)>wN7iq$q5*TVS{J1FX1dM`bLdE=W?4*yX#@DJ zO(;q9Ye^O|CeL6x!HJ$iFG1HaI*Bt}+inTVdvM7^XZ3ETA*<|-Lx@F1`6S|E^(JQZ z4W!37`+Ls@IEUP9mRnP6PZP~uLkh(p0!TFAh)Ylb-t+Ku> z=Dz$|P5!2|!wI|nx3$cGkDlb!&KjH*2E~i(Knh&e*ng2G%21t;M@IIc=_huN_Zr?F zqy4)(1`c<1F=g@;4S^-K{nt(BN0j9ha2Q9>dVP=eaUzOLRMD)nz)~>r07L(I001ghj?0Ycc*g}Hlid|#wwGOPX5D3a3t1H_${Ea4?4b#5CZV zKt&_KD1S#kuVS;cL=0Z}j7T|VecSvNU@g@7*WK@_+_UYF$&D#dHkx-?@_kJ=TdnDL03CRZK4dg#ZH=l&>Z+hbH*UWU za=-tFr1RCg4Iw<@_gMr#ZpJHQ0(ELT=PTuybhuox;9XO?O!UJR~WC0%o0(;FBZV(wV*L?+t@eU*7GpeqNRrNme?zzBF=()wAJu- zl8@vlI+-R|mFUW`8Esr4FVO&m$Mn`l3Y#LSRp+)h%|-&&&V#q|}7Xi_VRrykh9ai$Q@Eg($a;`UbQ+XHDQ#^mQGy8OtJcH!KI_2ktaun(09dIg+DX z$Q!|iO7heuOsVdFQaDS&S40afAZ^*7SEw3a%5Z)sp)Sgxwk{X%I+bLh1kQuWY8NAI zO5SSrFK$O$N|R|Y3{U55`JW>EPHWvyKJ~AEcHDTClf8jCMb6IY8aYs%9Gcz*9Wr5{ zG=XZbgV5#Qd>4{sR4$+YxMoSm{?YD&x2`8if&Rv(qjR`ywidYY-Kb$$t&tX*!dV^* z%ckHB2#+I-GA$P86mCj8PvP>`l)N20pHH7pUI{{%ex~-=OjU=g4m~-vB^L&9jEN1I zjrJ}e>C(e~*JS_2kH)L{VIa%;o1E?e6ucm8SIe05%I4!JEm|jkZcnK3r*uC(2~^C8 z?4%YL`Rbt_31$aDfFUj5rp^mz=AXU;pjpgRHo&u=ji}3A?mC?KUlyWu zcdEcPn3pXt6=>DHef7AR%J*2=m{!65WFN(q8aNusGVt-!-+{1=Ur4EAo(+G$TM(U~ z!F|DtB{VHu?HNfA?X}?+d0bzrQD`<-wbXHPG5~{B1{cmq_ z-j*jVc*_o_x*e9?$+22sM{%FM9EkD)YY$)8ZH%f#RKIS@z_}ZJTpIl;a2BFXdgH4p zfsT2pFA;fN?iH0($oHn^n%fxGGkqxSsqB8eMxIp4Ug@GKOt$upEMlOp9H?CDhpARi z>=)o-K^QSlW!nzOu{`U?x2B;J!fqMVfJ;AClG!)*sAx! z8*?;(TzOj+CT%KAEq*Pfm5rAwR|MopyG#ZNL*v#4&j%U`x}wkLLA_ka)7J2_P#!8- zlbQt#t+^V0dKUah2I973FFDe0k2-nAY_=RUUB*V;=B)jfY+`rqg<|i(N~WzQL4!Yuc;-l$ zMNz!=C*H=go7`u}?Y28-R`YW#c+s^4a)OS)Vc?&&)4mN1x! zIutSM0f#%6uI|D`O6lO4*pVTe0B<&KARLLsRVD>wQ+b@kz&(X(IdcqHL!;@D-CrGaLG$$>|&=ig5I>VI#}u@A=XuR6r90kPHj)dpd|7 zpbd@B`iEBpgc7@GSb=xkfF)9@K^YIv-Vdr)%n>_A3hOUW`F&(ch_hhEhy&1ek2io4 z2mi1%ug1&>^{;L)3vHZzB%%9 z0EvKAk&!d_01e@Jt+6jDetkem-DYr&y*FA2Yo5S8fbc?J0v)B{#ZY;hB=S`PQ>Y%s z8EQRuOTv}HEq-r!sG+6?f$TO>4#qmVmI_TH8a?}|3o(VwX=m2LNy~X3WUB0Edw2A( z6o7%x+-ZZaxW1SxF%>s?Yz@n-!r9tJ6FSpn&UNtj{am&aKQ@St+(Y=Gpal5ImVf-m z72kB@sQ$bxN6Q@l-+Dj#kLfVDAJ?jfK^kTBhx(17_Xbx!2W%035i4i^(rI>Y^&!?d>a z$a^W%E7%ovBD2bdoE5+i*RyC6Z0wz^lwj4MEoQ)AOj;`X7V zlB*Tu`;OSs<$SY}Idp}J6X;6$_S`*rBZaO;=&)x|Bz<7r&7tFr0!7agR-;SA5?5I!AN6?_-?u;gixbwK9T$15V5Hn^5q#^xNnk*Exm!Z`@& zla)!}GFJx>a)y9r6|BwQ-`>8Kx*eEgynQGQ_dW!1D!9qLWg+1~68l;I@tzYed?z>G zW}2CEybJ2CU|!l?TZI(#b^5P|`zi__fMr1mjl=P`*Y5R-wJD>K702wQ>I6UC#Z6zy6MfNb> z3#~Mxu(go$B?lBM=T#!VNV2HF?3*+l)Arj0?tg<^u1Zmtp?iLmA;a2i&C z(jt%+hJ!TK(j3)oIHi^i9XOm%tI|n+FYm-X*zZVX{7XsP2zM|gJ_HTQkgq(UM@1i` zS|>t3zlrn>(J7G=u*d|<#jVLN8H{EhN?J;UzB{e(5!DG4;zmXsK4YI$rK!lTQ7iQKNFf2dP#3Hk zI(c0|gPZQHML_esy#?~$<^YQKw&gux19ZzVp=PjgH4dJlAEKF1^ma@r?(UG<+PAagHM9xK4&MT#P!CjMZ0-GOs6 zYcNS$g8Msks)}O9_jAWs3P)f|1@QOA_A=!r&ey-WRRI|vZ9Yy=ZD(A1>tHD#`$lk+ z;9Y&pC)@MaOqPYZP&T3(@=C(19DKzQ`Wqx-D}lBL|u6ToymK?@G~s9lcD+z-rB3!+^?Cax|1_ZC~;Yg zlohS#fA`0Io?fPnffeuJt6;Uh$iP-6)vUm5!`-o1@6Xarl2eFp@TNyrIMtgkA`AcP z{JjYXl2(S^hq>SWP>!-AT%n4rDD%?nfiq`p3W@0f4aBZl!8 z<;R89bBWZNJt&=EjsFet)ci^SR{Mq(6>%WVz%D6fQ$rR&tYU-U5W&yo%?i~#C?r@` zHe2{>n!3n+oCNN`U9GqB{qWUx(7J^dmU8;H)qN~20;RC&lDs{aA<+)azKI{ecAOF2 zVOZ~EKlkr22nn+-WgsjiqM-dzHLQT7 z`*3`6p(KGEwOe$+_SVZk#iYw}z6yoC_)hCDr8x<6Ygm38RlrK>;PAHBln7B18^5ZPi=L~3G+-#2 zu(nGhfQl0|!v-lt*^ahLU5aVu!$rd(yrC%F#S`XySmB`!zF1Y`!k3oqUMV|0t?%cJ zur^k_(A16o7k*qoa!|@8>Klt;q`nwbokW7oFg&J_K1=ney1zeivm4HDsjp)kFJgL* z)Bmu9<^jdBtN0t}iVV5|9Z1viY^a&|l0$otku{2;B`&RM{qSBiAFfox8-zY$89 zs;xc$$qiZ2!!T6Dr=9u5+g`IlGwOf!+5hT=30hDO@Zy&5h+Bo2kB3P?Y2SjtXohf1 z(H0Cxj;%NOh5f5Bhly%f#E3Ei?LikVh*z$_IIRpONX$OSfMA}4^0EXt2^?l9DJa$c zAkf|gU#0JGxF*ESe^)7>iB@RUW%b}_#7ioN_za7hs$wvvHD--bw+9XP6YGlcYbQ7= z-{2{Mm#a9t>%6hYm=YM|w7N~TduWTS0lMDBUYM~f{&KD;1(mfE9!r?dg#2hT<=*dP z-r!RDZB1~sT=%1X)suWK&~;GBM_m#Asl`bY(3=$Y#R?K3bx~Nq_VTfdTLVqZ4}{LhZrYiZ|iWrY60QY@*Gn-}2AhG-D;U zLapU>Wkw%!S|yo{8%b0@rZiU7`!8rUt%$SbtJiboLNh4K-$2@>eE4+UU8IQ%?)6T^ z&x<^moo}^9O*l9u6#nz^xPA0^f_cs?@}~7QaT-hj=d#s7H+R{N+c~?T@O&+qID^}V z+UdI(rl>ejYM{K4YaN24l=Z2RUUVlGIhIpyk5!}V!Swn~nu_4UfiPI{>XoeN`Q)sK z*(WDT`#Uw4h3}#XjeMwn>k*7J<4l7+E4{xq8V&rQ*&DFu(i#oO_Wxh#;aAHkRy(?C zQowMh?e|p^_3~oON1i4%SAbS-&$T@q9}bxD*EkmIYqp6FxUN?b@?SAsoJ*2KlQ3}r z&S<`JOMb>W7KJajh8%}Cjq_aoO!+CwzvOOtbH4nksKqIjoklz1!Cjpmr6Z`*f)&)j zX3}h1yI5PvfcF;k-nIfI@ehYZze_;i+I}>zQ~FTO?!pEMbgK4yA9Md#VG6&NeLS?C z*z4Te+PGb7EYQouO;9(rr?kIbJ{5DgbAiRW%@z+0bM_#>Fs_!N>PNzk=U5#R2LAS^wZ$Mw0(X;MyAf@E$2k1Z_=el^_ zQLWHc81Y z&^;}lfSrGGB~<^64Gh_v?W)Gmh8~)3cD~m2I@w-(qwx~JY<$%9{_~*X$QeZrY_6sf zB+FsN_#2H>y*)8`k4;}VKfnX6UOdoCgfpEM?`>yuun1;VLrMv5HjTHH-lCwT#5gWaU0HI+*Vg^=p z|58vTJ8_*+5N{8asxqTkAFEC=D{2hePa@?3BrEa`oRsJaPET00{*tx81tC-Jn;W3Z z14wFW|D=xC0}u%nfVUm%g3PuAGfEXg$ia|ukP8L2hYZHtn3487>h}uog|PR}G<8bZ zMM1UAmE=frGWHS?btzc~PZ82d->cr_5tIo3;*t3PF#X##kjcDDmYimA`p|*%!-B4M zSs2e49z2eHGqSjfmKVtLEcypuHjVP)X}b}!VnqX>7YY=JWDuBkofJfEKI*m z0xcLZB*W`$zBeOWa++y2 zX00fIdF%29*uN2nqrX4UtOL>YxgT`K$A|aXPAeL5=qp;&zAG;W>*9Dr2EMY>{7Ib} zIC=&}Z+Bpf*3&W^QOC&Co3gAl#9)loq~W}Vdv})R=Q;e-D3Ag*(931KON)>zy@odeWn}_NnJLIq5x>(^J0LGx>%b&ZYJ3Hx z+Vlp&k{==y@*)+6bJ&L;7WcBk1JIVbR1|ism>-fS%=gU7yC`ykI96lz zyB-1QkLd3bk=N0!nO*CVy1lK%to-G?mw-u_eXGIVpnrTFmm2dr-fXjVFLf|Yi);#M z;Xni>$a>e9Z#19FT$X>C;{LkcTGB45N}u?)NbF+BM+etcB6Uw z*}4t=)UeyZ82gn#fAw$v<8)JZevTFP#AfB&?0Be3^|Q1+EQMhKiY7sUn$6(~8p^y+ zS-7S`RcKVL`2^*+%}mreT$E-)SX`l3@`>KQ>AnEv?6hIFo{5}g6f6bODW}C(@)0K= zC`_k;3>-OsyGTOzyS0}I)6k^WUhC7%em*DXN-ZGu3-SM*P^uhOC4wmbI2{#vk}CU$V###7+g>PX>(Hc=h(Fr9jjnwFVk-ms$tg!%|!fiJVZ#np^6hR zo|rIdtpzDQMyvOHakOz&c7TVvuRn2pve)9y+Ys@DjNrixV$?Z?HUw<})`_yB zh5=mxL$j!WhJ*+_l>LUb0h?h6Q&qa=q6wjig45Vb9UaHyVolJKuvayaH-}s5I+uYW zukJ`1Xo1_h)-?dWl_WnWu*w3o4Y<5rY<% zJ@cPc?lw{l(7R&Kn}{B={Mkynp_PP#3QOnp&s*ss=PnEfhp*C;csP z<;b+2F+(_~tbf`)`C^G&U@3NqgU>`{onCL+EJr!(8G;PB)Cfy2S%fWzV01z(4Y-4D zwwc>J*=ojy)b_Utj_A98Gl;gR!w#>~jC*mb90hh?i`no3aJ1xIk#)F$$lBW3 z3JpFI^IGIIq`lrBDKp`do(Qa!7M&rHhnZM;@mr^g)}vIa85~O*83PFk$()*%d1gXB z1<+a6K+K6;m1KC;Z|4OMQzF9y=d>x0*K@~;W18G;x#b$yb!*wbgH^^qH*T|?IvQ z-}ZeW+00s3->4I}BhywbpSgDBLakcSI`}WXMvnr=?#RuS--Je+%3yq18aNK&=t{~C zlZddxYi?Wdt5z4WE!dqby<|IGrBGxF64%uENk7gpoh67qjo7F*Re4_~@mnX%aXcF` zm0Prb@!8n-YKxBF(*jzwS)b{Kil5W`Xe`E6H1f*R=0*mT=3w_r9I!Z>Su!rq&a#kK zE0Y6Ln@iauC_zuE;)gc|-16@yAZrgx?&Oqnb4!xQ+OWcwXp0+V#UdjufQHs!7r-%`6T= zhnZL}!#d9ld#)ag-ip+P$OpB3@O+X?*a&!gCirwg}I+|*4N32?C9^+H1! zrmPHuNVNN7;tY~Jm9@H{I4K(B*p2x!lrmMBusipiwd$m~ouay2K425z! zsezx!pGJH9LSp){AyPFxele=l_2XyeD|TwTmwvapQ7&Y{Cs{oFx$6_?Uql}=-VYQ0 z2^Vm^hnzC2u+*0Td%>rCH>D-pvPhyNyaIvo-wAPk&#&c^IHat3+e~S|V!*b70ZyVp zMTri{$#q9Vt^_A*b1e}(9?D@7u(Rz?C_ctR)xTRO1LsutE?gEAH}MU)_+^J;0U|*% zEsqn)HcPldBkms2Djch}CJOovnb{X=^=%A^2(DZgrp!Tt3b?A>y#5_%;Z0_udImsP zgxVJgrX^ZXcC(bTZ2zgVg)n!_8K0O^1By7a3!CBY3+^-O1d1lUF_A*t?^Cl)+M+K? z9BQ#O^rA-=bCST=in-((xW7GDg=zOBmVlB{k`LF9n~sTb%X9ZsamSAJpTM`v0dKAJ zXZxuBC}iK-uawQ0welm~iz_#|84{|0joV`4AG9nZeT%%Vh-Efe19Vd$AYgV6bW~OK zYtR)BY+>%Ix9t&**FB#KLjmQLy*D=`D5;+t#QfaNK^y_X1%K#o`<=B?P`tsT#LiE1 z`dSroW*M%<6mnE=WKe?Mgt|80X&wo2e%0Ra*oDbQ`x5!Ads}sDVtDQU3d^jl?0xr8 zpAp51(YT;`{FvG2<#$zL{0MhYBt|99Wtgw*tUL^%CZY-X63twE6jlCSOSyC(sRc)j zQyU}UlbGV;R91IjiA-%jaBe6`4qV)XpLfi=_z7B07sPEtbsEvtB)s%Bz^3|+=Z~P?5fMY zMT!UEYA?SI>WnnlWa}mvMOb=ajR`+?@C&FwzNEzpB6uTPBlBE zrEXpy1B=l@krxu7HDu6KIykY@&u73I;y+?&@1Xn65D3ZAr^S!lcKstt)elkO#tjUW zl{>qqoScO}UDfn%WZ<1~iVqksKF%n9yo>1-7y0RfY@f#@Y^w4T^_ERT0q zj_$}cd-XsI#3h!-t`k2Z`{es+Jxe}w45)YGZ z;f8EfhrlR#rXv!{PNJ<3Z<4U|&ru;hPy8whC_w4Pp@ID5zfh;I@`^SPitt1F7N^Ci zaZCd_C%wSM0PT5)CkxoGf400IHA%3wV%>FmRVvWktgHM_0EBh-@MDOhI4utS^06hn zR2>)=X3heh%$l|+ub&pGOg>bsWbSStLytz8?Y9_-CMscXud+gXxIG(s- zmt@mwAR^1UH;+cz%|{b&(kG;aDX`vzOY}2q{DFy2-c!sHG`U?USg}705Y^G1(P9wf zbPe0CBHXZ(!NLuU5JqxPMF@wyX60IA@X|ZKMwJ!4x;SaD>x>Yp9Jh555`tNoCin38mY5KxE;>PYp7<2RI*PfvJghE` zxOutOL_BHi0{5lu@bxF_y3&dDaI4h`4VI7;;zc*s^q&SHCQt?GYBfWv*ojYq9Po+m z@jHo+r7UZhwtpK=1d6M8=X*4g&CybrAl`~7-;a}D!!u@TvjcK>BCYHvjrjXR&?E*~ z5~Z&jKIBwDyzC?e)8kIzLN__*A^3Ss*oZ zM|Xg(cplO>1aCye6Gwk^VWwy9CnRK>}7Y@4ncTN zJGyBGAPIbc4y$QXJne=2jWcoMAH&av$U>sH+n4`!(bR(I0=l@A}MnLMQD{a|JptjLvlWJ5NSlS*vjcqK|_19A8&64x3B#( zs^zdr#|BN*z$VeiJzR8SOP;=d(T&6O-fC(=3O)_D?@y20d%ux;Fq#;k6Nh>8xc#*1 zX_HQv=+Tq!k#XZq>e?tC*qzfT6rz9NJE)iJCa`-Od`LjVF5RFQ@|H6)CHNga|AB7# zbYuRCu#7$BHz#L3bwg-j@oN+RTFKv?H^`NuEG>LdR_kkcUPQnpU!fX3g|6?wy_Am+$uqB4%#++&UIz?nZ{VArW7d7FM zllsT8Nohfb9PSnp%R(b3#;A9CqNAML6&IC&3t_GYJ;|2+h{ca}&qdAv0o(SQwMFDO z+h(@x0HN?cut8t^bH!21E+IDGj@soytsXZXLPdxf1Fmz}%#wrdSr(!VUj(Pd$lfgE zQkD)K=l!w`dq_NXw;5UXoJ~5bZg8{qD)s{6YzPM`^bj@64M zqv76*p{UTU6-a0F3sV|rsEnc3x)+R7WirPcDQ^8*Lnk9zktUHv0Kd}5yBSfI4#btp zFbsa_UUU78+@czn>A7V6aRd9)Isu0I`oymZ58BH!8b|L()W_cj?^O;BLA-m4%|1A& zF5EZ?+{|};A(;$Qq$Kqc&W`;b0OCL$zpsi+#sb}{NtlDnB*krT7?|sux4*;~V_DYX zQ`Hkt41};pz7vT;QZs)0hegNq7u^AT%f&GFo1n%DI)r4|fCk9Shj=PkMKWRH*}&?_ z0g~{HZQwRnpYMIxZw;zL)dQ^A)9Vma)(Ca9?q!wun9e4}xw5KD7uC(Wd@$(9TvB&z0Ha~#OYCr0IEz7oD$GK?_T zLZd6;Rg_iPx%aHLV^-Q&t%Jye`_QI9GVTuGS4QVjTH{?HrPzc}eHoIs?gp?~NT!z>+s_Yh%)2q8-2qNmwiiS#__^>9_axYu#87nf>kZ*PWj%pj6R~09rv#Yu z&Xy2fU^5}b`ZI21pS8fYYP0i%(1|;(c%MJ(#WHKQ( z@3}F-8xsl)kqgbFGck~9{x`gWDdyp|_<~}~h3+}{R!yMJzZhv6Gc1W>2~TL3gb3f- zVHPV!<78QQb^?W&4D=K(bg=aaAdHykeMwO!{aI}e;U!=zvFnRp{Nj18n7`eV+q4~p zxdO(~|6>cnGdv6H1#?tV6HAQiC6UH~cP|=vo3BV*LaMEc}%y_#n4x{}*^Ry7vvbpir$?p8g4t@lrGb^X@bI>TisW|0Nt zHv4b;U~-Ek2iYsIhBLnR+rRzWC%%&}67y0!AOMlJE&j%Eku`uv+ounJ*o1C3A#Iiv z?%cFr(Ft+$jioCy#w2D6dw6;HECVDFrX~%@H#RY9>z}Kp4rqtw%shrx)7Bf}?C|tj z*K+U)pmRB<0k!zvo|onl(^rvax#X-D^W#g*nL8tOIt|SCWi0?q(O6w;s|^{8^}yRW zD$2a^4D#O{5PmFVdixe$wk1>Hi1oLn)B9h~|IT;5^SEC^0`Q1}uE{6U-aWN4+mdJt z8aiHk^%>6s67A)Y?O5!nY9# zsl3vefA4T?-$SwKEydh@vAYsJ5-cFiyQy#>HcYwUMg||}M1>;lSt>cd$yv~GYu@kbETZ7D7`H=~ zIo;Y14!5Q*x9SO4OYWTFpekcgY7VtAEeVNB%_@g!u$Z;KTQC>n^7(K6=5L-L=}eJr z2Eq)6q>Gu-oLG9Okrr+dOX;XgJx+E0yL(((3VJOR=*gS&G)WT(e{zAvM1=OaB0^YVJArsZ+)whr^M>k%f z$U5ou#->ENxmry`;27`rnn&y1urfjp7z%*f?$9r)C*XN$?CrzA z#U?ZB>B^Xy8%;ZS06?oPgg~-M&rNe%Fs2sLh>f>cf;cqu$!0OB zv>(8TbQe`%qVc_$|JyI!!*90PmId2(-%PzNiosvn=9n_zwx#k`Z`o=%G^Kt7#zWHc zC;8f&JxSp3n+d7SA@6?T=|W2oXs=`XAwiiq` zmbPEcJ-6wyo&mRs@YqbvYxM+red{_BgbMW7i!i7yvoC@sWJ_Qtuz-y2OL)LN@MMnW zpjbt;>uMQ<2Aa{Lkg_D>_6Gn0@_#Y|X(1_+*jRitnj505wwmg%+cie~e2Z_u4m>N6jF42sg)4K(Q$V=|`r+^=3>TwWOsKW4n5gkPyfmdX z<|Y~c;v)o`=f%Dg?SYd}66SL0<2V8fT*9nqXk+KH5OSJz@WZ#622mTVIu zyj4#?|369-6})|;sm`_u7l9EaAn1+BdK0o+V3ze^4UV%E5opr|#oB4591?JmTS*dlq+FPXXtE7SL$|gP&w_9Z0cgl5~AnF;T>uMU`nkU3zU2(G65u<}HnF zQ!v*zRahj0q~(@y4O&2-TQl4u(Wa!b&Eq+R$ZT+ckmp_=!={lk^|q=JslVYpmLJz` z1<^MDloSIqS%8r5Z!=;oikNJF2L7)!WBdpf9RHs7O5CIPcH4rj^>ToK$Sm4da{+)7e0}~cR-hytK0M@m%SSs@%x>&Hf<(AOrWYwi+ipyH z&6)0_*Ifr+cu6>tAZVk-w=b5CfZ>pl`fUtsu|Av7>ofdgylgaIKCeWVHWxM>3uNo` z^VxuL1np+?G1vX?GD&D#v3W1;$iy}trY6vhn+5c8Ey5U2qt7OMmu_pL(%yV!mf@B= zlfbgwlH_)5r&}A|8WHrx_X$PFwrg}ve1`=hfry?r;Ugi6V6d;GXcJ8OBDP0hDHIMs z&~=66JfnG}y}47pmr&WpDc9-=Y$FwJ>vrQ_Fy5H)|5@1L`u6W;h8jC;2YCqB;t&8x z7vj%SJQb3lb%lJO)0f#uff`DPZRc4Q19Q!L`kM*W;4-HzAkYu{0xwlzJSj@q#0k@_f>j>y&1G%niAv7`Hgz5Oc zK*H_g$bVlz>9RTGwl`}N$i&2x=rz%SUgM77mWyH_^}sw(V_AWOgf-kvh}!G@Tu4nW zJ*Q|5Fc@nOuCtx2SZnaAEjr3&Aix*k+xF*pFZ&#uyTW>KjjivnCU|?XxoKV08Q7}Q zl9_~HSwH4=lcvlwYPx;5(Kgr#kXW}WR;xB_ENpv*@I3?opBXv|$=r&f*Yc@J@N4

O1IRYC4Rg@=xhLDRq33IUr82LkZY?}3Bzx1bmmq`syaG$=adU(Qd#j!U z@K)yBww5QDSIBVX);+-#?0zg6+7v#+idlqxD^01c%sTWO6c{aUf3xzoQj{@UGrcIc z0F1dNJSjgQ9Y&$dO3H)#%z^|Mu5j485(L+}REyaOU7rQOR@5a4znOe$g5g>|_m;e( zNtP61v)-Fe{%AfsmtxaxX+kyEH|^AzJPRo<-B|B{{M9Wz=8*2;1_Igud{eH5IQM0H z^#yn~Zf*05u&~VJMmR8Vg`fZVpFe9xVOmxJEk|IgcPLy-6RwL#i;CWeli#Z6u$%M} zKn0combXF`T%<8^p$Jij&0OEAXW;o;JFakmo|O(%nV=Z=;n4W zfCrdl!2syQ{iSXb7_tTVmFwntmaYCPG^?Tvf|KGBtI4=mw9>754hiWMoc4=#V-SUaYj}QzkE^HoWI@zGoP)Z0MeMfuzY z#a&=wthx6{KDlBJ_vW)J$6hXS#ex7Zrb|r3-a2(h(=sobH-xXJR0{DnaDCZ7x?|`XFq$|7EOz`k|wwE zskdD8i}JZGI8CtyBsQjfZ$7#D>i6ceb8Tp!r7!p1HoeK@?_;|$YaI|(SD1TRe(z@0 zm6-2{Fy))i4;O*Y(3+dAwg3^Uht`L?Fu6B_vG1;}oV8v8a0|5?L|2N(%S!CJHZl?x z;nVvNTnI$M?pi$uv3CMt0XE@8)t*=$a_8|XxC}^E09FU;MfEK7d~gq`-7H)=6ch+f z#dZ+dkgs`@xw+Pi1KRyyPU<02M&@M8dQl$Mi5pqY-pQ-{g zFE0^krq!){YCQC7`P}_q+i~dXRvX3|yf>d*Vat2-*-fls4?;IuU6&Wm|7&c7$Ht-M zos-&ZR;%*2=uiF z93bO?`(XC5)M8E&An2;NBrJt%^&AL`elP8qmBJci_UmzPv)c#CpCiQ3jtIs=hN9)zTDFfsW^B;9$HA7XkW(M=ky$schT`PHQNnu|0lPPQZ? zu~ud=(;PWyIrRuDQgV9@sb^VsCSm*6VLNgoL>VewzCJkynXuEQDMO(NAxScddv5Oo z_gRXjMjnKgIJIm!n-FNp`cmfGBExeC!mYu_1z2qYiP!%@`YGOou>*Rc+O!`b+;y5q z*>^9i=fH1=n{0(Bf@1sVZB-@!8B^a}tWtVeJqto#;tt_uzq2GSDdi3#OJFN8Q2?7o z$<-8Q-_&7%D$HbsuxlU^2`h6M5-^mC@dKhaVxm->Ow88#Q1qYq%x6xU|L>45YmbS$ zAPK;2DV`4C@&<$}l5W5&)q11|qXTcz4Cdp0ZHwh?K~3vJo;RP}vso;OAxzk<;lH7x zE#;-R9$yjR#38r@Xv_i50?7^B+iou{XqyE+ljS31q(LaR3+EmQi^Sg)Yi`Z@$33q; zjf76Vpn|FQ)>G)PKT^-ZL2GU^?fK~{BRS|?8uQ{glzm%`zX0uaK7LU>3+@0Vwt|MR zWR2J>8=2BXgr(ukG$wsC7dNo?HJ@2}wf*$=x4-=el_~{u8~?^Q?BzEuirNo4v; zY~+d+dw}R+08rYE?;0#KOXnFOER<1Zh)@=Db29*e5Rgvyl0CMC9`W)4BeJ5gGdG2J-j0M;pbV99>KKw?5mR{?eDe^ronp^A_HJ7LtSPN&<0Q1C_0bn#P4aBEpCR)^O z6~0YGnPkj;u0Vroq8v7h8zD!BT4tu0HmhK*lI`BBy6TcYn9=}9t->54pr>d8ViT?4 zS_nn%qv?h)AJB|sW}&E~cEH`u zrF$_A#^>bYN@7u7OU;69+0-VKJHelJkeRMK#^oPKH*PKfp0pcYf~dd>65&+Vnhk87 z2x>0erWXSXt@pk46j%ZG)^l*kD4yn*D<@Ws2F_}PrpxXmWY<+CfOKiPR?lKne9dj^ zK)4tKOp1bV0C7{6Lqfm;P6-eU&%R}f!nTBpt5lS-+k3FKlmeIR*1dEWc9yc1SO&tT z_TsVy?XBmpzWVBEn_2SRNzWxEbn#8{Ac2;g(c+OlXp2lq2XhOF^f1~aZ|Q1TcDvww zQX8A*cUbs7J06;v##0=0X_6a_*iecLE8x*KHRYEXFQ7E6W8>9)Hx-DP)WV6E_1nd} zk#OJ^+f!ahjeC>U+ybMGTV%t%nSwS7+{9tIx1NGJdH2?HFfV*z`(%A@<>CpAO$MW( z6$-Iunb(BxwR#qS$&K{ri6PpxzWjzAm2$K1dcDKTQWC{jAeX!Qg)e;J5CYB+0o&(r zGAKV?gIV1>hszr5ecV-wXEQ(T)x|On7r-QA)9e2h1ZTv;IH&e`eg`Kvw z6z#nWNSH2>XbXC9y$?ycv* zTqn3;9(X7$78%pXogsu2 z!WHpy<`gH{1|qG2x#AuYg3J9UuvEns-9o!oPhgwD9udCZ{oUU^8G!oYBn{w-nPb5` zOg;^hlbJ%h?ZWd}F6+|Kc73k;>dPeS5Q|qY?_6kUufG(~78)^y|F@l2jfaoUpWlkL z;=DpIz(D5I#{V4(|3f6cRgG~OoFnUxpoO2(wVQ9&@b)+m!B8ZH_P6g9kKG=H+-U3A`}I4}GvfJs z-t(T*`XDr#1J@?;ItkzZH3bDa^s|X%deCfJs6y^N)16O=@X%(msl{*kz75>Nim7jl zaN5OzV~Rp$*RKWGNmpe;D-eka+c=tVedukrq%!czVd6Imqpq8TsDZNV{eZsy$IL_d zb`vnE>$vU`L|%bRFzlyaAx?AV>k*Kspvw1P@_|8Bw_q(^Af#NOq)>FXer%fA= zqAZ(z$5&^XiuH@vv&INGSWWCcE#MSf<%ABedG;Z!Ov# zST5YA_NtGdsS8WMJcxG5TVU02GjIsF0W1b&8%b>nnA*?Vi;{pqkdjSEzyq`4V*7cl zKo%Bve3i`By|7OXm#B1Lro(Dh+*qBhYMX$@CYBVvYiffru0ct4K8`^GjH4mtAH#!IdSXs0y=K zSgk{(#Q1VLHlfO1fSPwLY2UOeS7J+%162umc?-;YE#q4g*vw{363}S6LaZtjZO=fV zN0BDcF37)V24PB>GzTn2N@sf#Y;8rM#qG-FS$c+qOK$h`4}9PQCljF>%r+_zZlG;c zW@Ra06p6DsxF(qS$(NA=Cy*n~`0xf%o*Gk2?3vtBkkQ%0kG)OfN^m!y?tLhDM{T1(RX zwsq|7=6oe|ql;B2+@^{se32GVf&-2<0uD)}_`qd0nworkscj^&WR3OVFUvRq`Gopx z(o5Pc(@VH!fw9Yy<=aKaq%b8H(caz&*mziDOktXz5VJu@XrLN^NPfKgs#tq(Jp<2w zZ#@M9T5kbmuwfPwqg=Cbx9M4JZ8*p?ca4j)X{bP1Ype2*jSp*qt4JlbCbIwFQ|6Lu z<#23`Kx?e!n1ixijZkCpLs(Ybqj}mGyK6w}g=Dw#6(I~PpAA@_qjCThdnq&*1+KR4ND z8=oQo?RsqTPiugKAfm9m4|CD}CAc>Pha*5p8J|5bFTgr>_%|m(ES~}q9pENzN;bA= zbKF_5Up8fX!9-CC4Qf$>g?MEwim>2*EJ#j>;1o!2wx*f;wKKO*WZ51dAR1yCM8EnZ zyI%E7vR!=APZksHs3GOnE$5@;$8?V+?ktMU)T4#HzNQPVxQ&LpZG$>AeXfON`tYxi zQZ|Pi`_Ccck8Mr)O)_B$F2$JN%JOJ|)<49N5Z7P2?j!XK@X+tAr?92Yw^65Sbx8YG zd%?lvnh-MWnJsBX;5o!wX==Og=vBx~;C3>RFRL<{d)UF2`0{@tSygeF_CkxIKEl(j znNo0lwz-osPRWUY;ad>0eQt}J5(F$x92MZN{fRWUAZYLBQi+@>!PeiZb^|KmKK3rY zOwZJTCmgxb&L?c;I5*V;U=H-q4m#vj(MlVfbha>Z+SRh}vvR+gVN5R+V#Om=UX|R_ zf!(GP{761-6P93d&2?F9G}&|97ze~y_W4*iTNs4T-uRoa#stOJ31&Ainy>?la6{8~ z9nB#Dh}@tJN8MY`fZKC#Jq22YMYabM&w-gq)AV^sS9lOM@mB9~XkZcBMHjft+|R9m zLv;PNyt0*xI^ zE}(fO2nnjbF*j*(hjsA>ZV4B0b6pnC*(^#H&bI0UPO{LCs=!)YUxGvsLkG;}!Q~fc zUx@}hBsIH+<{uq+02^(_ER;&h7v=LfpiQ)m%go(U)llBTKfoW-cL77@?=~w@0?MI) z`sznOcreq1)=Z*>Q3c4{B`lD87K>oQZkg$O>lp|$-dj(>0a#56v3E#&Zu>wAFyDDY z!Pt!bWLE3=tBwG`6+qk1B02g7aw)eRxr|Zk%KwLeizabh@Hmif(sU^$K(YLQ?Lmm( zWL;UN{AH0ZF0C|bZV#Y#xf=v&a|1H~1d5bwsyE<{d&3eCrP=P#J}V^6rJ%6omk|E# zTN#FMrDHBX^{G#tXhKu2I#u#<|$?(T!Ra~F@J#4xso9bgY7`veOPX^_U0Dw@0WYR zs<0oCn`m*_mV~@eBrA&MW<8#H{BN*#Ssojj<&tap$HE7wo@xKN0K183cP@aqDvh-b z7nqzRF@R30=w;5j#ViJiy=B8NErF2C&ny$xfjD~qqrqDc_hmgmbQhr6Hcmp9{*O4L zkOR=txE*f3#npwLtu6bmB)a&J8Y0`1;<3g!avx*QNylf|?7yZqBj z-|WGf&b!P@$5XDKcm?1!n(a$J(#fT{w{9wCEwH*pRTZ7-nyp*!XEkv#w-_v;DAEIOTM9G0qWk2U zz<*Nehhlr*``&lrM|iPAxap*A;^jNjK1_2$LD*+mWULB{!0d&V+qCP;^LzPoD33H% zo2bPOTbkUwK=y2D+)j=t@fe~gmf$hTB-x>ftlzK>#eWP z@AMhgK!ZuMEa1Vk;->&hmV&xD*GyGfz*v}fBs)Q5?3=3VnUv;gV{hqg?uzQQCfwMV zZ01TNgypmcjTOV9Qpn=odImP&z4a6v#!cKY_d-wTtTynLaocWEmw+Acl15zOGGb~Vp!v#2A<*p&XAw@qg^TLE`5lxWuo4bJ(Q$Fly(sDnKr3tSrHG(~A{l`q ziw|t2Wc+zLmi zyEfJ`=@doX0xDbU9*a;C6S9hs?`07Y+I5?Z@a31qNARQh5)|B3+I@>;I9z%tZvMb3 z7#+1QyB2NdYvJ%c%$u^UyRRICEx>}Dhk&=W2)D>7SB2XRA7br@#^|#I5ggos1)@}RVfD~bkJK{&>fBpT0bqxf zrb!3|z_RLnZKlQ+p=60$4u``C*VrDCeRiuG$#kQoHkBM;i;2esW~C7BfHeETeF=Vr zKQ{$hDlm78AacMcw|?R_a1kg86^JM`%8&40OUI#eZU}n{i**B7=Y9}w+$;0DjZ)wx z&JuumOWF~NJqwEVn_94G4JHwS>Hozqe(_DHwr~j3s12o=g)qqWm-B$Mw(x`U+v23O z@>Y#;P-%1$Zp&;jY4S_OZE42k-K&JVY(*1?qN;++w!pUWg*un^%T3`A!U9AywjB1B zxYjXU%r8~X6vTF2|<;=i@NIoS~GjW z0Yr?!W7yJMtTDxAWL7R=P3)gpZtrbVP8P>nBuxC)fdK0|+z(cgHRsY@c3g73%}bG` zhk~vxn02Q4+Y<`S3Vp7nv}`|a5|;*m$OUED$)r?9jFoU?173Eh#1SQw0y1T0ZQErH9hu|Y16q1J z>9QOEahP384HXjPm-}|$b_3fCOipP0=3*%5fD9uFL#qkBGEW^$s4_FwftGOPe#(hE z1P+pV1{iZfzVb8Hw`4JTK6M;u^aWsBZHc4ioLbXO-XdmLlD}Wga=ZIh23^&0J5#2z*O9@9%}*E$Q*Cp z^+()lKu9TaHt;QSr=oY$?#q+7R?h*$PN;VabL1ZO8aJ(b69Te5S%IyoFc?az>PW34 zmxI5*)q{a@E8Mo$p4#`cpfYBgiP#vMKV{vv{-Ze{FaUGgXK@>D0(I@B4TY`%km9@* zg($IoUqZ=#5q91XI2VkyVT~yeLK6^)LjjAT;5UcjTo>UJpZLV-k$i5v`Fr!p37Q3P zT)TUcZc0xv#hLad01Cfly!eF)6~e}S9q7VimzIZiQ)}V^?tD(zYP;f++Wg;sCSY1% zL=RPe(u_S5kWe@glMiWSyZf>L_>~r3ES(ks0ODPUU?5#(9kF_pe7{!D!8OF{-NXJ6 z!GXEZ<_=QNVNVbW7>9&8ADnn zd^EUwZcPc+-@3#JZ)Ugfq$t7CwplVFA+W6WR6hZ%TW|8RE~R83jY2MQtDRF>fiMmc zq{FiKt>5~s(o0~jU+nFMt3x6p^4gG?PPD>eMrjB0}eIhlToNYloI z8>ww$sM$}l10e~T4TTXJKJO3`3P8TiZd0Jcp$4RKcW8f6l1;Iep~gZ|SQIg7YX`t7 znD@1{PW2lJU1~cs?qMwvgebIQRdaog1-j*x(}T#}ka(-)~*8J;2;FG-!!V z<(zCxjp1rNXCmf=X$iW11#L<@9m(3{;LD7u;qeh zc;|pCx$-&%bG6(X8OfNHJToWTaFR)Tt)2tmljY_h*=*de#?Lb1p7lJvuB)(vx!riS z&HP4W;4{nBz%LL&BS5yKI8&O&lN!E7ULoKPw6PeEb>6gLkpT4It+MOfAb*MWti{5* z+t4{Kg*0I1IyY_0ewlA!?4{E$Ebuqul?HTk$mm|xJUBInf(rj z_gMs*1D|_MK^0*TbGDq9F>P1XHiFG9L}mkuX-g7uP@&Tnmv&`};T>!k)Pa}XXCo>< zEt!T8AfWV=XX()Hv@_g9$!ql-0J$_001u6Js}(n{ zHX4B>0R>}G^Z;gL-UwLiJ1!;bZj+|q0Qd-7c~>hi@qT#|tTvpK?d?E76OhZCqo63F z%gV_cGNgPYpK%Yi)VOwL@EvaJb~Pr{B@=NQwjG_hP!-5Ct@Y{JTtBrbgyFf?&p-CD zkDVUL=SD@mH=lf&Qx2RI$qtHoZf)2O2e-qb^DkK!d|MNQ$+fAFv=sK4GH1&S0}$GD z{BO@i3UALt=J_JJJu_3kv2Xcj2rwqSi;uf zCFE5@+H&Qzv{Y@J4%f%a-~CC*Da=Ayu$ov}loZQw!A0(jC_X=0lk zrKVJPWk#d^l8}u7Fo(~u<+!2en}WM!C&0|s9&k@+FMm(`Uqx7lkYL$_6$ms`nXgZK zbSSaD_@FQhV^O2Q{qg=c1^Pwx92|D*MtgO@9o+T7(Ptf!gdWSvoY1h_CD|8Jt`c`4y}zkrBdivkW)ftjH+0fGNMe_~yH00b2`L3*kh8!n{^_Yy#RA zD3u)4JT!MjFP6AttonC|y7hjXoJ}j%%FbRSY|bIcih=?;NR8eY1vXOYoIZlf4Uk#KblYYl`nuaVsKKHu5O8>ms=&ZE6yV-38ESn=%(KRm zK*+!2x@}=d_3vn2F2&30Iq=)LWn03X8$uAHd`lPtm~z(;&$v-5T)B?4opDeQ!n*QR zSXNu;m8A)+Yd&NuLbaJOY!ElLucbP=H5rDn+L@?Y-DC3p-7mM`h>-5UWe=6dJgTK zN9sw?+#Ac5Ft+8~wx5JK#Z27Z1PPpemc3Y^5y-x}_<&D1m!23REq%UgCN!K07Ny^N z?UIZn(y(KnrTvn4qy$iDWL%lR;XGYqBvN0^Z20IFs3bqHY%q+FA&95hDV zGW7V1OexR2gdRd~``fdMS`^YB;R$k15b|TWC<;~3yfA`A-)Rz(oABADsy6S|`e&8! z&pTwSk{v%H4Xi>qjeFpE@2%&s1y%24FV|pQ zFG2*M#q1YbiDW zAL5kg!?JWYguOW{6!3<&t2!2>xEQ~-SdEASU?aiE z7~Gan048LRC2**n=zyviBWHo;6SgG0upzx?NjBDX8Fnz0N9#E}Qcq&d(ap8kehmQP zt@^xSIfn_iUieFDw7ugXu_(EbtQBLiugo*>cyWN9rR#fsbnUG}uz4{X6(by-sgwy` zfB$bUcWq~5%gPCFazg;}a24*=_B2>ZsHo>~G*Uf>< z!!6M1y(|ZN6KH5$T7W8awus`^ zi%Y^QABC+2mE=G6o=oVdxBUC{ON8&1{9!XF*_?j{coLcvVidVx`jOh(K+)G084(V$ zae;pfo0SFNyZp_tujj_!pGint<>j?$x=P?HhusG3YC> z$^nw!ToF3m@AcPTKjtt+B;jW*6qXsmw~R%W0pYmWdG^v0m1tRhJVKX4te6Xe6ygrf zL)TMFdnBi1i=CR!%W~w$x_tW6pFWAVYa6u(VY%1EJY^{{$!Xi=0`Qx# z{uE}gY48fRvW-nAD~q%Y+yh>iAiV|oISwc@ORhrq7Nr12IoN~)OM@RJVML@rv5mLB z^{wajU(JQhE(r>9N z$6k5mm6Q1HCf}^-ZxJ?>1U-hP1DKdk>r-$0tOZAuev(3}K;qVeQ)I&R+-Iw>Fn@$| z_@>6+AzAGrrP=!dkG-!AX$-gpGWcK${ZFrTxew+KuxZk9{kQpNKNaZ|e_u?*{MeK> zIN)!~p7mb+2jsPHiD;3O=2^y>!%oluvtSo%YA>NijstR*keiJ~IP^DE9-C3dAfec2 zxBC+-#IsBKvKJjDt`^tPT0_GDtoC8^Y_G6pnZ#-l5bWA%v0ygiQuJw)t%TGF_paF< zzC7p%V+&AQzb#-QRJwc?VL$>-hT!rXSh1{;EQ-wupW)n4~gUSD`j$AxZ)n zV9O%0r$x}rnQ*%h<5JYmxd7Wwp7a8uC{ty_@&~0pD(0z%+R|!CCty?V0R(w#xsztvFv;bsZ(@TdmmX4Q3YFV6|LRJpe_|gPcTzXlERMhR}@sj21!g) zt(00;T;{J7+z!wdI)n|-R;&aj4HL}OSf%qi38a) zclgay`v#g$2yrci#~knkIfVysMRroJk6_?>u*!U^yGL=svbd@1|8qMwROjq0AkQKq z1i7R@NBiA3tKPGRgpGn;6C24@G8e3hiuZ;BKiDMR-HI9uDipl-T)HKwS4|9D%v5#s^c2Srt^80WY^z*f&i2(0 zie|oB`}M&^E7ZKOUMp;T3#Z#-lou=r6L))btZ+uaL#Wz4e7J`71)%X|iZN4|7bGe` zF6oHv#_XYGQB}8c3c;bPDyhaiH+bPOnu28I>)1dR0`e@fU{aPFjq7idZ88qmlfuOi~p%(VO-;Ei~#+d%sQL09=wKCI8(b6e+N8fUV+-EJBsoh7^po8|Ze0~~t^Z7R{XzmH<<{6DwdaVNq z2NI53P;HC5TB9^}f6MF?mPLid7~~#ppFaEmmJb{Ow*t_{vT#(Xe$qFfJ}KNvxJI5Y6cIuqCuFWNH|;gfeFU+BFR+Q-Aq6%E}VLsPbdvbaXZ>> ze)_F^YM{}!Cli9fc--_$Va@!_u1oV>%jZT2x|UDA(Goa7&skK21;JFlBwww+xZ2)Y zZohzQ`TQ(0NVa`}UAMUrEVG_%K}r!NmYIsZlnZM_DL6na%?GGs4YaX0M`4>_Y|OU!kL%KIBbV@u#H`R6i8jAd2b3f2ru$ZMFI+su;f*g1iUM|}oi!*Z_nC(JK$R5TCNF?EzZG?(Ryp>PQXWh8^Qc)eerK8H$+U~yB z^10j0n~cIAhnd(o+sG0c&G!@P={dU|K(;Zlq~Ie8xL9*0{k44l1PS2>TiJ#kOmDpv zH=UQ(6pqC=0o>8VxE9t4j>g1p~|NEBix&80=?zW%PFf zf%|b#w?F#PkDiz+q`neLCSsctuCKh@_U*d5`Q;0`5C+>Q5*R3qg$&Z5TO5rVpx>l1 z%s{sp=I!#Fw`prr=09={BU9Y+H*(&}pq1SDAQ9gfjlC?qL2)i=f2~v9i7PHz5z-5hXWEKOV zxX&RpD@B|I$c$yeI_yh;GIoLqAZ=f8RS8{64E?qPFNDXh78P*~ruX*nvjNCXU%Fo___AcPnK2*@BZ zL?DzImvZhBDRBhcNwl{39X;M}`yh1>8p$%YyHD@^|EOBEYE>0Y$Ud92n3}c5cx%Tg z9BVrRfVh%#2k#XV*i1TPsxkuyd2eOKJjN_cnQU2wre44-e^%IosRw^6N@7hLqdAZY zW+)oP*zIOayuqW~s;9QtHEc}*Dx4xh5^^Azeyg6_Xse2&cv(j7op;_j*3$my5l8@p zXyY*zP>n=$DcdMyU$1vU8?)Y5&(HXRvJ{klPJ0}*Fr|`Smk|`k;gs})tg8JG7V?&g zhrCP6*NJ!VAq*0Pv42x`+fb}t9Z@FjsudjsMug+?S5PIKMJVFNOj*M3K$7l^5OW4w zRtZO-7J!aJ`!XGl88+*oJXix#&a9dV>&z(Mef;sqR}KKF#vAJRf}K`VEiCZC%`1vG zvD4ymBuL9G#lqyW&2fXe3SugUY-ytdLrCHRF$N5e!>t~g7XuMrS5Mt3LmdRl>!~?V zVo8I(wFH@O)pIYT5%)Q?4vLMoCwu0t$2Qks5keYdo3(BATFYa3DczXt{jGX_nU?lU zKuS`!@xsmsL#xEwp*#1O5JviY@@u^xgbLQ7CEGYBml<2H`wqiO_Pezp%S8t7>*iSr zmKZ1R0HHeb&H<9L(}wHa-315-Qe>#iN5I<4C2H z0k^o&gE-zHcnhm1001BWNklFVCPYlq*)V) zYInqX_Gef81o>4Zsg+t)nfh~f=nMqsQt#(<1|{*G0XMoJU8?~X0?bk%(rB1nMAo+R z*DE=cmzBa%!z|xVFte{|SK%taz$}oG_ahjRF0&X?C+hqwwh&4fv)%4E;--#gYPsxv z_0$9(yz{l4axSzuPS|A5f{nRV&+U1)W*{EoXC8isU>Bc(WDt1`8_dIP-M7I2i$HY0 z>e+oC)YBRXhWJ)JKP9FEW4<4Q4t6)3>zFnd6Vd8S;DubOjsVvlOG=AzauIzdu?@uF z99Cc7-iQ#2tdsDF5qEL6hMm=iKSFXdY{We6833XBT0=Z5^buZFFsEi^>m;LPU-s`5 zm`Hlvpcx;}3N!}cJu@AfZ$5IybxKmU`5H|4&IbT4hd+C_%Teh9emEy zcv>hzBhZbJ@&JK(CCI{sA_o-{2?;=(Gg}9AA*wWM+mS&!el|iLCq^^DfRGe3*m`j?fPRh|kvfEf1K5kb_10Ujq$+5u zsrXo7aG2VR$7tQQ9)Uy{O>eX-Yl}T>z&6WeX9ReB7Y0e?iLCu(y%;^J>}`jFMy}*fXv|T>nTpHp;WFll)f#G13?O>^cX-sGTJTubyju7sqoCY zw*wKwyEBXYG+&|>vo0S!3rN0a-1_m*9jnGD5_gej+iRRnTd^q?6N*AE(%H)CvHo+$ zyT?KUqt)q4gvX4{fi_>fcyZYW$YHj1F{XP^qy6)iYj&U!3%*zFK8TLdlqa?+QYwwF zYc+)%YW3Tw6j8_{)~i$%#$&X-GcUyRwyjjB`?^Sw2Hip9HVsPD{&yU6FDPxf?=h@l z8!Ox>%;Xif4_a!w93VWVyd82~N(86OhK@@Z{;kROMcn{xfY@3HHZhERGp}O+2?OT9 zN-v3jY3k*naZGv$?B`ksXn;4zYBRu)AeNpqxWzQ8--KHXDj^opm|75>oz3Oz#2#uw zDZF;)ffgAj;W4AP^%}XicefvmstVQiGuX53eoas$Z6_ruB$xNcAIQS(9+D_Scv8w8 zb*6qqh{uQ?XyfzGKfkavy2k9!2!nm_HcgBxEm-D~SJ;73w~Vh|L2Qsq>_qVeWwg(oScfN8AfZ{PxScn^86fhIj5eC5Ky-N*EIjYL^%%*-LyN^( zafgxzw7K%Rp3B!08&y}X!fT&9LxHz&8LXYU0!3rr1<-96`$6=g=HONDy3Zc{Z+THrl9+v zZ8Vs$|91%s&oS_wid!*>7+PI{_z>LDskUsqloPcRi`UC*LuCxafGuqWuXr!S9L9Ff zrBNp4wgnfMS>=?Vt)`8PUyFAf7U2(LpbXe$GDvglqEn7hUkF%`l|V?WKI0~yYt@_h zT4;csZg(eTx)ryKP}IwDo=0~a@uJ*0-3Nn9wb$7PV(GSnuO^?jwhpT27#@dO2vhNn zabcdLCEpD1vLp6HY-}&o0^n+#&o*vR=*Af}!_htx?dU8{Z}(!~qeB!P465as8!~dV z44O7{?n+zKw+RZzqan-E!H^y2LD4A8*}LsdS3Gtt2VOOx11V;%#&YR~rPp|u(i7q>bH-0C;)B1PL-hKO0Hr~M`zY=tYv&_OuOM6~j-Jqam0AufiI z#~cc+7M^jz8!;@MUD1->%8h-t-T+NC3nk?9rIodEHzBFTJPeNff79z6fwSCc+Q>!W zXVbbIh4%VF3P$IsZTR-vZ!eu+FZS6Fd+)vXUTJ1ovWx)`&#TqmhYB5d5;=PoNn?h- zAS;R}L|B0`z3gq6f#9G&aB;NAHXoiBR80ptsKR3`KyEB^N05PY+LO6-op;wB^9)U! zcG%cvRJ;>05o3j*Y(o)zh5@5eipp=BFE^)9$R^Hj>!?9Uu`T%6d2-b?bPj|r$@m#a zheC}JEJLmL;EZ0oF}H%R;Tv%p!$L{vpo^o$yh5vrwK`8>KmXaYXU8*Z7rzS(Itx+v zUM>m9Pf&x9vC=8~njxV<^Zoxe1yLu|ao{^A&;?h9?42|i5sOn< zGAI;g(sE6)7FH5|XjLvWQL|BYTuO#o2AI%jO42d)di~ZP_I5M)fsb!1>r5s)WN8QK@f&_!li7V zO~vkrct$}Ae4oXra|ZiNqC29pHvDAN+9%RpLJf@2{!@wCv28*epXXl6HeFkS@fIq^ zwBB-PTA>BSmAuzEBIJTP^l zq8v=~z7H7#^3F?j{1gF(v`p*VTT9*;eD6jWr2c*z*a@=;vJO>kD{q&yN=s{{SVfwQ zCz)mdu_^8=AJcKwI>+i_)Nx(Vh&`&1g^^jv)V}}Lq-EhdY`shlB2u@Ve~^|HS`pVU zPBK9*qYR4+YLaxvx7EnCk3T|kNC2|L18JTD88U7S*`N*%s%^wLOsJ0*WkyRQo%U`Z z#qX3SB&0QOfspv#dI}3V2z5?Ncyb<8a!j0l{`~n-3^Zokrd7kuD!OcR>oy6i+xUY7 z(}4m(S_&yYJx?g_>!m>{edGO|&!Bdya*hR6EF)aup}{xaoqCQ}bAW6L%PK{u-yhKv z1ffw%8GWLQPE5v~2oo4OFx~~C-a=x@!P9f|xXtJCB<+@55tCjFjHc{KbNW8Ft;Trq z8UirVGmDpnSUT{k7hsG*Zo(~ylV?M`+E-}Eq#VXWX|B{7*o;YUa}nw2_UgltXru|w z^SqE#8+ceR|KCC-A)M@(Vm4E-#q)dr8D?FE%nN9ny%O5$1pI7ShdKz~i)+E|)0c2q z(4W+wkY;!M&;e+1#S*v4XNO31f)6x64Tt=z-~=n9XzScVrx^xl67rRogIM zOV@3Ie4m4CNTdr|*{RJUcV)2=QgY&|5jBAr<1GK(0itc@!NOW69ti)@5m*%>AwY>l z~t4+1I&}1G4zL$=uYQN8j(r_5lWx7q9b5@|`9fb)lmCMCs*i6N-uIqiKxa~IKp=2;w6>7}*}uVt4?bQwAeju8|R zk*d;Bh#wJ`lzhAbV`Qw`{vP2bb=Tpcj3!oHlT;yAtM=OJ%R%!lj29z;V-S|@a~67f zE};jn$w48Ct0VCJE*U7TKcY)47tiBb^VX>#Or0?ugTVEsIfYxaFSG^p3pMC%rh>29 zy6@|EG552~+EgW5!JLjstx3_Ov~w02J;+5^U~i%J>u^v|3^5}egUJ>%AvC~cmJFk7 z0l|9Ypv!0Bc`%pFxMfyZzO?yQsl%$P#I?Lwzh3UO9b{Y-WSNSxwyZ)_wLyyZW-hsR zRMSnkA|bC{FHu~m@ZT>Ji2_|)9L7=N3-jg?}v)}2|qq2(zgAAO@F@u|znNNiPIyOL6FTzaxGT?3$2n?^Qcaacf!1j5$UdX{qoB5^Ebb28x0aN@?oQ-_r~*ENUDO zshWXW|4Nc|mln=2k`-U+8HrfcavUMo;-3z!+2_x2`!|;nB7sJY5fkd-dY~hjopL>$ z+tAPg8MidDEKD1=NIgU1&}+wnaUR5K)vs{0o^AUlTp*xx)~={=qruKI;%hCyRD_Ze z$qo?lP+q8g=G(TrPz_Q*wsjP^i|c^zdqCFCx97EH89~qv8v(nqzT!d8q(l|O+`<`1 z(z0Kd5HW*wrM%l(5YyQ7_KK@!zTJSpV92SW4s+?C6HIY)@rYRlknuW)RBct=zKIJ_ z+E-s}ZXaA|98NhR?~iyY%U*=GbpdmEEQKiy3PVB6#Z$X%$jTYNc0bzl?_3akA#!Kb zE6pa)W#H)!I^(YrXU!mwh#lfq|_SLN*3+a7GR#Aj>axBxbDCRig<^B&!TUwz-5&Yl|n{c}W`S0{;E) ze_vA)C2GWtQj6_q!vF;8l586q`9j3z2$wG8mF%HFl4s1INYkt`gY7F4kn<&O%aRI7$!~YPD@TB@d zC=?<>QJ5tC)$-(h#tiKG=|dqh0cs^?EVkEM3;i8DE2Fs2GB0n>w)bouzeX(WL*QHs z)2z2M$_aF=+zbf=-p_Mxgp|B2VVOI!cY$PS7&;G;^D?cvl4_g-TT8T-C9z+_>GZCvvGze|ZPkS-LzN(&+Isvt!C*=Uy41#ysg{(WXO;$mx(*s2Z1 zt&B)#5K37(2!u_*A z*nd`zg(4E6oazvdec!CN0R-YH))eDkZ`w*a-bfRY&Xc#%`y3<+ODcXF^`@TW7LAX7~7F0EuOE(fpuXn5~2Hs~=igntpacVm}i!m7rhLs#uOib&rLq}{x zMCAg4obvn~$K~G@R$1SDu74LQK^ukf)maE99I94%;$F&j`=0GTBO%Rby03K~RNvQ) z2voC*0F)7N>GVdZPN6;TIgOH0_El`#vTkW%v9SwK@eIP&-a=GTZ}bMz zWi%M=&fGR(vP*hf?0a@57J}eSoI~6SV{bk2K1e)B3AxL7xtz#j=*0fw6YwttW_m_Y zrurJl0d!Y|%E_r>Y;OjRL(!Yh;dInHKto4(`Th6bU(Wr|+9`#Hmx9pf09;}Xn^J1- z@!Tt(6$T+^eHo2&5sJ&wh6VLGKvz9A@Ny6H4ZY*f$+s^ zKwL5%jB|~;e)gDW={_vH^+DJ%07j7`(%N8#oJ=jiI?YQ4qgn-* z|F~o82T;KYPfmmbj_m-o`sm!ip%4{$Cj~@P?}yt+3*C;rAR34QnTU-$<4*i8Uq9=v zz=y{WhP0m^#=ngbSml>HuiZNKFAJrs2NArs0YAu zQ|9e(FN|R<8>ceLon-6JkVy+w91b24i(kF@-rFAW#KIXym0$?;zV@Dr*i1Hraqq}E zaMi(XFMdYB`GXW)DxsxtOWL!kua=2Jpq{gPqg)pwzn?QAcJGMjW#ABsvR9Cxeb@2I z1R&vi55!Od7%9}>nv8nDIiCrEtJp7!!s`O?a+#iTYq<#pCzt1sl^_&`@B^9!1Hv3 zHLCc)Y`SszS&&#^(l(tIzlVf@-TS}&_S>((KXBO3rUBsDc$@v~!NI!lZJxNO(0}&@7hAH&K$rAl<;=(p+VoTVGdNvs6f9RXzNZ@rRv=gb&OsIoRA!Q zF2h1(VyarSuhf$ahB^?v0*_*#s=8Wc$pW#Qple$%wQLoV@Br;+WEKWwv3Qap~RS8g=D}DhdPoAd#}}UD-?NM=%OMh>@-y1 z5Mi4^M*Rp}P~H*yyXWfUp{9E(MV+B+L6Nobyhy0ZXn71}x@R#L&kG$GfrUUkE9xM` z_L0z-v_0)*h3q+o-{F-~Bl6ih%?R$#I{5B$Xa#)U%Dc4*hd?@YTH4K7X=kDei10I7 zg1d~!K=%XcXa^(jg;#UNiV!*+L?IUbttd?jv;wJiaMFkt;^+__=kw5~ObYCx*7~r} zN6m2BP=jY3PfRC(h2(kY%Ej(-qWjgxBYMBp1B!!6c3GItt!q=weGR10_;sJp0N?{u z-c@nOVv`hu%Hm<;mOH?bXYH^F=t&Nmx8S{LBDTK12BCwv>g3$Exwff$engOzkTLC^ z<9EON-78H>FzJ;-E2Lvk)LiVG6V%7vGc_ z5fmh)@QG7EUdots=&Ako89UP*N5`P;ogs#OKK`Wj9Q%GbdFO3LcAv@k;E9lbMQ^PD zMFP6mbr`q@;ohEe&!c7pVr^ZCfu`<ZXX=_vyl-ONs;9mgXQYOH2am zdyL%1oR$$s3Q;;D5nYUZU)xYKkOVyYj1`Df6-W&yJ?UU~A`qjs&v$rS3N6r}0LB@- z*WqY}!27C8=LMItW2EpfkN}U4xTQ_-T+R0*53O4foX`OYs1gx+U>KyW_W9L>Y;E@b zyfd|)aas*kb*ZAhYo5G{QK3RR>ME#_=l2{P1J-WY`?@^`;atb0aS9sE?(=tVI8v?H zoo_@SR8n0Ej>!d=`mRWhic}9zic(sYqaVN@|MT(yusdwYKgup3H4%)v*b3Ad68U>%CccFcKxkJ( z(CNyuFG4T-X&wQ`O#Rx{^?E=;7stMDGSL2Ef&^&tZT_7i@9k5Ckigah6q;S6H4gH{=RYDNT?c)!zc@k2tR zwp-`fIiHTI$9q7p-Wls(RU+=7Biht1jC;Ue2o3B9;hlX}Yr$dd3?sg+CA7kcAy^q- zXi|$l=bqzoR-uHuFTecqA{Lf!b-B;&hQ;Wt6J?$pKEeV!41OY$X4R2UdtjayJQG)X z$ab~?Us}8)6mem7{Xxj^0&UghvTc)gITnZS-;7&se?yHLyifbXcgiuw-eF-BT$ZjG zxY{W+AS5&}^rfo}xvmSWUI7Xa`hcgDb=;GD9Gt|h~wD<*VcX$~moDe0Vs!<^n!wc%R zn8%npjz9+}Aq=F+;4lh0?lkY;z81|saANH+%;$fajfmqfLLoWu2@Rr31kROa;wrnA}?+NjRUKv zpqy=6O|=f6wSxkvxKwbtFswCejtr!56Tg9gU}L+?p4DLuUCM?xhUGOhbCjiM_auu7 zsX#%BaX@UWbGz%RmILMW%>(_k_5f&*+L{fr(WaiE@Y zZI|WpVRa3W0N)$yW5O*oIKT8&yU=XYmkPv_&{?#vf^;8bhC^wZ3SuLaY3+qIhEAX} ztTpsj-lCP54z(G8;tMRH$M{+ zB5#J=a0tRJ?7R!AK#Kt;TyjS`v<07|&f`^8VhlvmO{G z4n#Oe{kE@@x@-K6j3c|1A|77^61Pp4es^>gtz$qg^K_8r-h2N>K`9LK-~OHvlIDgG zjH0ih>s*5&PK8Sv0E_B`=)c;Rhit za3#wQI_qb|wOIvh_A0J0#0V`HPX1P`$P!mERy{i+t z+rE2g(9Zu;4CPrNDxv1i#(tI_fi7MvFx7GFqMMB4BDQQ@O11-HTvQ~p^R0T(-JmF( z;X=kaE7X68RNRE>M`yUX`)W&+^|pyD=gn|Avz#aL5uu8Fm8rS=`s=SR=ahu}Inu|6 zNl94r9q_ievN;YhYlIobKC(p8D~cQ(Hl0mbxx#lZrBe;!j>4_+DF`p7l&^&#AQURY z{VcE%Su$g{MHANS*F3W|nQ@_76Mu>w%bvFk)W~w49+dVOoydffVfpb4!VbuVrSCj@ z7Y;lXziXU%?%*Vx;UP>B!UaH94u5Mz`d{0*A(0WW!l|N4uve23DgsBIz%R#?xzwuYLe-(i`^LX6X{FybIyY|o_U+zuAYPW!F3me$_etPYisK4gu- zZvvQo_Nw~)%yJ`;MN^!eFV7=DE2OLT0#a&j9DK%4w82RGDq3S%0=$5Wcn;n4_ut>q zPgM523sX+01TF~9C|E~?CRwr8W(ea}gCg%BAhPaya43~%3y**SFWIL6hNK;;^K%$T zMyJHKpP^+Nd2Z8w&a!L`qwCUJZ|6aXx47Tg;wWUYAOROuwy9;)ZOP|(HR0hTTCwZC zLF@Rj<1Bpm;fEIw?-C*?kRffQ41$6}t=Fb_;!&2$vKTH)hkR&>)wWQ}5P*v$!A;Td zkng_x?kh9VTJOJ&Hr`1}&|}Ttv|XL?q)OmM__O>?RiZ9}f&iyB~+v9A8#zv}2vmZjGRRgwQh2=!3 z?eMe04xZwSEs*pMi&!<241khXi|O(c@|b2~!yOdrCT+d9X#1TA2Km!=%?)Qro29TA z39!GUVq;|LGtE6p&_NF!*S+W21qaPqUk*a6^s=c!m{z#SzhC3C7{PX7LY{R3lRe-a z2zux;_6uZoDa5mRk(!!nIEJJ~eb@;5gsX4+QMxBCBiq&2ji!^WUH6HC;Z)tojz`0~snNr&iP!46oKoK*nxgKcn24 z8;oij;XoIr2>YE86QYz~5{h?-4D@iEv9G@R>e2`9cqtda4~75=g;xEC$3y=8>gyTnbQ6OLoI}XnjkhWS0o(QZJ{xm5Q@$K0XA0V^2GMsMVEHVQLnt6==ye!Be@MDhsV`+kT%Ff1a`G zHV3mtma%6Tpfm!P5{u<#cs=CwU^oK@g~}{3V7^{R3Pnt-0fi{9hHB3oSbGz2qC3~? z&(K+aii4~RXC(G74~7?m4%%_Mgl;9&?M=yGb!^#zvepw&I)v8%FASGxR~9X*3a4EX zR=ljXgS+3yNV06aNK+Rcyy+J&QBP41Vo-vHA9B?d==dz2uC2V!A|rWzo*&%TbW}GQ z1s6P<*tsLgJE*ixMO#PS64VZ3E&DGl(7GMWCzozaT;|yYbtv{c$XJJ`_4#3 z8X80{Whlew{b|t|RhJstpz|2yRr8^##x938?7}88<~9NKnH+>mft2iXtMT7@7@~nQ zp-u3`En<8>=ev2rGsF925|Tx3EAeuMh{U93ja5j^t5l!XnTW4DvXrHdZ?-hQQ_OhPz}v zcqP1=X=q>n%1=A(h_FQ*Teg&;a)7{BaGP-|{I;>6nF1o7$na0OX$Oo!_4kN6y$-FH zECVjXL54D{vyJaOK1{ka7|vuDf%a*x90Y8+PAOF%64Fp#@i;CFi^i+$>p(*D z?u03jLmOp+c|B164ED8Ck&doPo9)IzvS^!NA#MjFy$ z0JX5E9%_W9)g7Z!Eg!JSH zRP@zQw&w*0ND$>-biTpDM_&&Gxa{T9APL4|&%E^}uh+AYUd=3s;!%Dtd)yOkhEVa@D}DMVgje-)4||Q%I)}WBrDI;rW<9rTX)afgZFqAWUcj* z7Bo+8I(KM7kqNzrNlJS*JrqjTO0f|Yf!eY;)P1V{yk|$rshe+KJ1JQee1pNrX$sN3 zTUDA0uXct=(;3};_Rau9?ksRt`<{KRQfVH##cmXcl!0n3_TEA*wG508WPmV*USuE` zQG&2tOtmo1FLX-w4B6TzD9st+NSs^YiHz3vMrxc2@;Fz|pFh9s3*=K(u7Th-P0pD$ zL4+uZ>BS<4T#lbL#ZV$J&ao?qg|(igHd)pMY12fp^A5z)kzg1|Pkq;({SGp+iUH^l z2$mXIMvu;eLoNHdK}}N7YW~6M9bl=NZJu{?ImO^DGy!GBk3uNIB~@J`gderB@>a9N)=qqSCIdkD3p@;+;K!nm>h-4RZF@x>RH&a0P(kzcLyO>;r;i1n*b zqphdcf2?hwq)AF_?P1#&02>WKDE+JqRaaITZnNSTD)P}5nY3cD?~4>UOQ3sL_Ps*_ zjS10lE$?RUc`Gv+Tvoy)S(;Am5%w|0I2$OU zlHvBbY|AseMMrQc2bQg|whESkbSukSEX-QoLXOqMdjvG9fpWrLd4P5fDy`MpUWsn2aay0iNw^ zDIL2hQctQ6Wm$w{3S27h1&4(Lpf>SUi>@%{JVCqpw2z%XLs$E`h)|`+a_$OR+QS}^ z=n}XH3X(cj9&9!Rink`4rRO&n!Ps%5vKVvy6r}ffN9RMFEUdKl`*Ty;kP0K{{O?@t z4B|4h)z(#L?={0JEP!P9S%^rXooAMY6CNN0NuY5#`&rI)duLcXhOd(EPGyGn_Pdao zLQy*Y?(@$-zaU6>wboPfJc=;9h+zn_2J;9E34QZ^EexP4lNQ26Q**Jr`rQ?hv6eFo zj8J2FskdtEJu{djPYQa0g;Hvegp%cUF~$|(FL*cvX;oVc#85$7kV~`GL-ta&oE6N) zrt^N)?DJl_2uW+T21DDj|Ni&C*Ml+WihOhtc#x8z5T5V|A5l-)v>yY@A>bqszSb7k z#DMHMOtryV2tBL;5t?qtrUN$xyFa@)$XMt@h*VC-+V0|7e}>1N`hTO(+>MqA@9(z0 z(ziGS#?*5Nf!aEp;oimEUC^t~d68-+S#H@jB+yZDEl5&=4Z%5ULa^SOyFdT=&lk{a z7tG)by6dyPomhg@l@;Cwdf39rEyiMH)(e^8AdBe`g9yA9k6^7mr$!FMDjF@a=IRg- zD%D3j;KWI+q6Q|sx=XtQ%8(#GiBsClasQ^Jv&$l_Dc;_JZ^^S%olB%&!T#R>%XW`x z*=i>X$w+j9Z^v?3Z=_j~4g;n%y6B*@={z6(f1ANN6T%S}!XbrB6d-~1zE`G0vk=dw zp99{f=MmJGLf!Lkb{}pD3et?GLpeAFipT0eT36sABKD*$t2ErY<9Ec{Rs2;sTfq;+ z3jxf*L1{RVX4=}xSLLQXXHalH%Fu;PLX-}Yz4mHY8gPej4=@kml6z5>uqCOc1S4`d%p;7mOGP z8HhC6^G&S=itim4Zm3lkgJbtQM3hFoU3RU(e&2e_0?80mZHQr4r>|-d4^Y9E>b$BF z6{k>Dg1j}N=QZwSqlZ`eDn(4m2@#o?tnzQ~Kzu|)&;~Wo3sDnZrVT#!yMFxbVKM$o zVbRuYUn3jV@#R{0Bh+QGJcrBurPY&AhJYL!XVvSoe>L9gwMJ2PHM|Z29pBHJ9lPx9#ra@*~S~)mK zKdQY>KNf~SMGQmdF0>0x$84QTO=T9OC|g#nf$4s2&0A)QYq0)8E}9B0+dOmAVI;(6 zJ3>i2%<|*y!6zF+vmgd$r0tQcQR81QUHyjeqICs$oA&YBbF_e|t;ISnZ2vZ6%q!EA zw3#LqX@xzF%Y}&hnL{EvC_AfU;Z+E7YEOCp?mqkMv&&=ZsoN6jA@$rHV|`yeIgf_$ z5-#Y7+gX8oVWG_aon;kT;0hE>V4rW*^UF=Q;tAc0TzFNL ze26DSJ$ROLAHJr8q!tbI=*)l)&yWp3)Cx@&u5GVr8QP^*IrPrT(4uE%#C@hFmu(SW z5AL(@IZa1eQ_rTN6Tzt3Qg|oDCah75VR914%lJ#D%39HHRMiKnll}74I2+I(Dim^( z8oM(tzbsgbgj#s^l=tt@0X(Lj8ms@%dTw6zRz0~qbjO$zR1gZeh&IeZi$BHX)eyKG zx9a&FoEf8uXT)NylMrt+0PSidKMxL4>OmS!|5=}=8;L^Xo%akbzGjyA44eeQsuPL! ztoz;_Qt_Vy>GSQca0p9py0F~#-hbX0QCfnuUbwv&t&!AZxt8{LRPO5CIRi*V{4D&z z9qs*>s)Zmh?PSytBXuNxqQr918$>xLLagIrmJ8x2I{b9r)tT%d6XB?^&|P`T`*$=1 zc}zWZTSGmhp1VyM@2e-5Zfj3??5!%nc~=*Emrd3{$UqUMCf+6Gvg+opQ#Sm`pdou4S?Y;lf@x&Ic=%fav2_MR><&q$)`9gv&ieC?zWf4l{6O~!0Z z!E7}dt@s4xdv2_^ngnNwpq9L+CSsTv!NuvxUKo3yDt$O|$29UM$-z(Rx$V7aHM3wbWu%l0)!@_fD zK+<$ur{~HHs55ZD3@#-`syL{_J*ddq2946wp;ebLA_@9ZC ziCag|&cLl?b%`Mackik0-=PG2Og%M~(nIUH5qY=j$;GZV#mhByXK}U>gdi>?rkr+x z1-4PQ>iKs#2I+Qj<*e}xEU)ghO%-;IBCES~Q}iN+^_wOhNeoQ?zNcPZr?zUBWT|GI=E4JOw-a*!zz`?ViMw-zpi23%jmMW7QCf&VN z&yVaQd1X1<5QPzN5qKXSTB=VhNRXrjmk_}7i`|-!<_TObUSsbGJ?z~mFuju$n(n-N zcjej|MG&|k>AF|VG$3Nd_6{2_)HdEa8t-ezPVcNZ%m^znsSH5}(+I2fyf0tAe5KgQ zWrQx;>j7`kDagVKp3r5}p~>DL1%&|>6Zy01Pjx0cQ$iJJtK1Rog>%~8h(*Cqb^q=@ z_~3)ft$J!O%OP_(2Ms|W#KtyS;}3av7l+cxW=X*z)ml%^%Ya1s0Mx@tztKe(Lb8D8 zdUgcU-mU4uTlM@~TpJ?|ryLeifJo%}J6BFD3LQwlDcYdLCpg*P`ZY4!K?iU4bwnd9b=x!T0`BDqcNDa+rs8Xs z|Gs*1shQU8gY_+Z@x1$)+oUb%zQ5Cps~eXSB^1F2ysnT|FQr@d*LxY{ zn$O$<@9#jGEf!@NM%2Ngw8JRdd~7_}gcktgC;*kbwh0C1b)PR+uR8B__54_K90J%c z9mC^y9zv_(b`Z)d(6hD}1;lnBTwcvUAQF0X zntrIJ9cGn=BS>8kv3=X3iGdk^#4NAQ5$IYYKIS}BFM_cZEa7yPEiuqTA(h#Y9j{$9 zN~ua3tiXvu^0QrF$Od_+a@GGc3j3O!CufE6!b1r`9@Edj{d;IXg}Z9#Vtd4n@nO z3+beqs*eZnN`Q{yH9cldn zb>+l)_Se<(w+2B0l6YAAwDw4Jp&1DBU=38NOmk>DTD_HQE|fLa6&b@_xu~>MJNF73 z+QPl9!mX7|!hYc-#HvU)-gECU!w89~;wu7z1VQW0HDqKL*Y6N29^*_jsMUbeWy8OK z(s&>|%GO+GDQLi6;wpGY>o4xF*o^1zd3O1&UwiLc=MGfC3y_eztPG;iim`f3KZ8zm zen>xsV=ln0dTL6uw%q0o+e(XK34AlWqms|XFLK(%KGIv{ui)Yy8kA~>79Pl=YL3y3 zBGqhbxI|AKXrm~tByuM>Lx?ztpMU=O3h{mR!d2---oGj2A_#jRbOX)B;ELMYqCo}_hiAK0&tGq=*{JLRo}hK|;9%qAPDZZ2yPb!%TB{ab+zh%SWWB3j zB+k}N46eC|u&a$y36NTyrVxmyYq_yKaxkxxWun^<9zq5LLr|R&-?9xYBSzGTQ+J*k zj(G+t+Fj0$E<+f%Onv*H%2eZ92(GBnd2rUC9)_(K##w8*bh||pA2D>c=fgj64Z z$MiF>#}DnNaLfg`RZp$%Sf9F9H?gpqZ|Z(yK?zt4J7{Y$Y_F;^@ty-@7%9>V1nXqt zh6^C9^rOR091K@Dhxk3!_yNqa(dn z!U`wi-=PhXV(D6WU+a!YH)i^Ueb@WMs|GD;|T9*CxFEBngt5k-;sM zwHIfXgA(o{^Ew;iG5rjr{~p>;;Rpc`7DNyfRdU?YC)8OkmBT8Xq$PLDdmZ?Fy;fl= zBjaXMT78Re*U-+=ETgrsTl#;3j-}e}>2`2G`L@9;*?Ud4*b?wkVQ01b+iwcGq z2_0(MSD~fEybm=WQpodH8eEh#Bg+%+kSu<-;XJbZug}z!1N1eVL^!k0=1HYvAsR-_ zC2=UvvR(T6Hk{yP=iz2R_v_6!-+X0YrgyeSkW0r|nf^q(K&}n8D_9~iE@H(q*;mF& zUjkucQI2qeMnnkOac%@OoD0IReK8m{2(5E7p{9=Lvext)ThE4ajG>?3$;wEzGN{YgYY zRKLp(=s&RaP;R;rZw;N4&5FhCkt{%ma3Z~Ud}JoBseLFpC^{79*1pYvI4dqJR3zQF z&r`tV+}R@)sC#zERACe6(#|^w)9wpYNDQTCqWXqv5kUU^c^+Q9!`^Mpb|8W(KN${) z7gBTSt3SAwj86)z!C_hciW0o|Aj-a05ebXhiK_DUjT22bX_=@hGw>eSrGu`<1@|3l z7M=HFovGgN66BtG;IY_h<{h|dwmYc?8CBi4gM(XO_`E}f9$Q1T@fwKOD3DpFof#?Q zspsq{F5wdnM(J;-z3iEHKsvf@zb_l&8F`EH2QoTBJxJm@JtmWo8gB7cj3VyA;Zs73 z8*n)gXgC_}&Rh2Enc7^%909WnE3n})6^GGNAn}l`YCVXbpgK;8A=GBhb3joDVMS{~ zu9o2XJR|Bb_~uX2JUCNAMtm5-meFsr2OOYwan41W4Is5Bh|9W8+ zP3PIe?wc%Dr|F7WI{Mjyg2XEP#FuR+CjL_TDsElnXi)6! zv!{pO5XLqRMdI!2+PTLe?CgM&dk8(lCpxxUYL7utgV34n4wVcC@dyzN;{#R-5tI#=XqX63@5^owwDCQMOG}-K_+(^HA8#%>8GDw=&BpjOAT4LJ-qhF)LNCv zN}svx%~4B@AtTxYVE@fS`ON(s_2(Ymq4siq=AOsrJ4gr@-$OXTGibOW?4e3zw7@qP zg%GB7*a*262#LqQG2sDry}594Cd8!qsAq1q7Fa2@V^ggKwBv%#h~ht}CmHg2ARbOz z_8Oh$x}`s%g!2r>wr+RPJ(CNDYpB|iffe=;bRkN?<|;n@;&~f7shb#rf)qO-)?^0MqB3 zncDIXE{d!Om{>@RoU+EkHW$R0m}c2z74xwY@<2LL$zE z&-eA#6aXABAiDm=UxM2h*{fo5 z@V!k*{Je%4n!z+%wC7XY<~>x9x`;XtF)&c+S-;X64BdYSt&Fi3?#!VQIzd;$0FD^i zXamzK8%d|3miARthv7MW@BYJkT&2KmI^Z8V3_??cw#62U`7?-*44SoavG<~dDA;2c zoAD_l-YwhAAws)rW_3v1E?*k=4Wt>QbNY1Cw z*5_8Iq5$dG-#`87PZu$|4x@7M;!^o@3?fz?6G`NNl*6WWqOf=xg!O`2VRzsp4_2~| z7M%BOoJKu0g9Cm`Ng+&#aAX-M7eUm<)jT$%0oo(_TFX8!wD?oJ*70PB(0whrv4)xs zgms6ID)l`Rl0+u0!*313E}t}<&;nG&-!O>K(mr;7YY0VEhSo@r zhN2*;IbmeuUl&3O3(RhB{{1W}L>E-i6GPsVZ&R!7#b?U&_RVFbPHfXnyo9n~6?HmO zaUhJKN>ZiVc%JR6b69mDEy31ar~s9!5;WQlXMr!;-71+a{3+S1vF?5M4?;Mc>#_hg z1oYp*DMYU@0|b?l5p&JM@Z5}pesL_j6d{PHM6vbHXOhrMmmQ^e0~h77Ef^0;URtSc zYq-Un!h$UlGK{8Nd+ico43GFy6A6%-=ipf!I_=Ccx8igMpck{V4#c8r+FdFPGL@l> z1OB5j&^;?Anc##sRg%51$sq;1g(eUZ^q`5TP@vPGbf(#bpdk@jkgK|o3a1=mYEmAV zuAf1We(hL!*(vcZvd!PirU)aw4>->0s6mlg(zgO%z`!XS^wqY z?I`r5_phob0u>s6sWbmZP@@07q8Mh&=2g1M`{N8cUytVkVJqi! z@WuY^?=FsORhFg=C3##T@WsG8-{>E+~4ou z8KyDmuJYN6J{;OTla4wHg|_hvgRG^_N|2j9<5`WY+I!3!dd^*Lz3KElFfYI*5Pr<~ zAyfD7h)0C4A{V5W>b$)h(U6}@|DZfshhA$`2u+7lb)(8ltbhAE?j5&gU^D?*)4T2E z$H=#KgQ&+dtA(J2FvQh#tf#(zcR&2_!v&1Nta~^I%NLtpE+YWyAi5A!EqY*qD4c90 zrWM4|V1x{rcdQr$*q{O7yn5 zO8W$Q#%d239nJ`^rHinvMMYC3OChjHq@VKs-Tmb+f4K}wA!VB9)?i^)Nh(LI!P~O< za*T4htxZR?wYNW5TjD}0M$G17@Z1bSi!MA1flZ;SO?Tkh7mzN%#c2O|{5inE(cW$MCfnYn$sL@b8iq?{u_0K@D%+*^JHyL+i5AAncNK_M+!UKuV1w>--#R zVCYFxv4}@xZu4 zZDHsg0+&zvkN0fZ?hcfP8B8+;0D*wRJ z{SE@-6U4j_Nn9E?H#?$&VoQH9CB)9^u zR(RqV=or+pn{Qwbq{a3ein=tSpuz9_12KQkjkTj2(Mj21mkN_2)l60kHB)@0Z^ixU z^*c}$_fm4ZlYiX>+71SzjbD2S+s>RaQt{WqqP;JU0CL$c(~k^dd8+$&_wmOcUns|P zW@$U+eS^iNWd>W3a4HBLXdXwKsSagi)ylTF@hB+PZa_A&^4ONhR&+$f@bs7$#u_ozVay*u}F>b@X(4b%nmn{;v!JYF}m}*l#=#}p=MNEu4?`n0?5UbXvU0O z914^6tBSGZ&g9HyEYQBRXTv-*=fSwPH$~;qbPsz!a_<&UHD*U-L%L6O{|*B{pwn)w z4l!A)L$H6Nta3P1|M5;N+`exR#U@LIwTFC%8;T(jEIdftVeLhvB*8t#gZ$IMZL>|5 zTxtqDYgZkIfJgI=puXo2KRFm+mrEc`1#aOe7zx@6slT%}pq+W>yKw>MNyAHU`7G)| Date: Fri, 17 Jul 2026 11:27:19 -0500 Subject: [PATCH 053/108] Greatly reduced how much the stealth shimmer changes over time for ninja and stealth boxes (#35575) * Added ShimmerFrequency to stealth component and shader * Reduced stealth shimmer frequency for ninja and stealth boxes * Undid pointless change. * cleanup --------- Co-authored-by: Pok245 <113675512+Pok27@users.noreply.github.com> --- Content.Client/Stealth/StealthSystem.cs | 1 + .../Stealth/Components/StealthComponent.cs | 44 +++++++++---------- Content.Shared/Stealth/SharedStealthSystem.cs | 3 +- .../Entities/Clothing/OuterClothing/suits.yml | 1 + .../Structures/Storage/Closets/big_boxes.yml | 1 + .../Structures/Storage/Crates/crates.yml | 1 + Resources/Textures/Shaders/stealth.swsl | 14 +++--- 7 files changed, 34 insertions(+), 31 deletions(-) diff --git a/Content.Client/Stealth/StealthSystem.cs b/Content.Client/Stealth/StealthSystem.cs index d31b998458..a33b11f0af 100644 --- a/Content.Client/Stealth/StealthSystem.cs +++ b/Content.Client/Stealth/StealthSystem.cs @@ -92,6 +92,7 @@ public sealed partial class StealthSystem : SharedStealthSystem _shader.SetParameter("reference", reference); _shader.SetParameter("visibility", visibility); + _shader.SetParameter("shimmer_frequency", component.ShimmerFrequency); visibility = MathF.Max(0, visibility); _sprite.SetColor((uid, args.Sprite), new Color(visibility, visibility, 1, 1)); diff --git a/Content.Shared/Stealth/Components/StealthComponent.cs b/Content.Shared/Stealth/Components/StealthComponent.cs index 1a8a647768..6d32fc2bfa 100644 --- a/Content.Shared/Stealth/Components/StealthComponent.cs +++ b/Content.Shared/Stealth/Components/StealthComponent.cs @@ -3,6 +3,7 @@ using Robust.Shared.Serialization; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; namespace Content.Shared.Stealth.Components; + ///

/// Add this component to an entity that you want to be cloaked. /// It overlays a shader on the entity to give them an invisibility cloaked effect. @@ -16,25 +17,25 @@ public sealed partial class StealthComponent : Component /// /// Whether or not the stealth effect should currently be applied. /// - [DataField("enabled")] + [DataField] public bool Enabled = true; /// /// The creature will continue invisible at death. /// - [DataField("enabledOnDeath")] + [DataField] public bool EnabledOnDeath = true; /// /// Whether or not the entity previously had an interaction outline prior to cloaking. /// - [DataField("hadOutline")] + [DataField] public bool HadOutline; /// /// Minimum visibility before the entity becomes unexaminable (and thus no longer appears on context menus). /// - [DataField("examineThreshold")] + [DataField] public float ExamineThreshold = 0.5f; /// @@ -43,48 +44,47 @@ public sealed partial class StealthComponent : Component /// get the actual current visibility, use /// If you don't have anything else updating the stealth, this will just stay at a constant value, which can be useful. /// - [DataField("lastVisibility")] + [DataField] [Access(typeof(SharedStealthSystem), Other = AccessPermissions.None)] public float LastVisibility = 1; - /// /// Time at which was set. Null implies the entity is currently paused and not /// accumulating any visibility change. /// - [DataField("lastUpdate", customTypeSerializer:typeof(TimeOffsetSerializer))] + [DataField(customTypeSerializer: typeof(TimeOffsetSerializer))] public TimeSpan? LastUpdated; /// /// Minimum visibility. Note that the visual effect caps out at -1, but this value is allowed to be larger or smaller. /// - [DataField("minVisibility")] + [DataField] public float MinVisibility = -1f; /// /// Maximum visibility. Note that the visual effect caps out at +1, but this value is allowed to be larger or smaller. /// - [DataField("maxVisibility")] + [DataField] public float MaxVisibility = 1.5f; /// - /// Localization string for how you'd like to describe this effect. + /// The frequency of the shimmer effect. 0 disables the shimmering, leaving only a static distortion. /// - [DataField("examinedDesc")] + [DataField] + public float ShimmerFrequency = 1f; + + /// + /// Localization string for how you'd like to describe this effect. + /// + [DataField] public string ExaminedDesc = "stealth-visual-effect"; } [Serializable, NetSerializable] -public sealed class StealthComponentState : ComponentState +public sealed class StealthComponentState(float stealthLevel, TimeSpan? lastUpdated, bool enabled, float shimmerFrequency) : ComponentState { - public readonly float Visibility; - public readonly TimeSpan? LastUpdated; - public readonly bool Enabled; - - public StealthComponentState(float stealthLevel, TimeSpan? lastUpdated, bool enabled) - { - Visibility = stealthLevel; - LastUpdated = lastUpdated; - Enabled = enabled; - } + public readonly float Visibility = stealthLevel; + public readonly TimeSpan? LastUpdated = lastUpdated; + public readonly bool Enabled = enabled; + public readonly float ShimmerFrequency = shimmerFrequency; } diff --git a/Content.Shared/Stealth/SharedStealthSystem.cs b/Content.Shared/Stealth/SharedStealthSystem.cs index 44f0d4ff11..c4ae0665c4 100644 --- a/Content.Shared/Stealth/SharedStealthSystem.cs +++ b/Content.Shared/Stealth/SharedStealthSystem.cs @@ -98,7 +98,7 @@ public abstract partial class SharedStealthSystem : EntitySystem private void OnStealthGetState(EntityUid uid, StealthComponent component, ref ComponentGetState args) { - args.State = new StealthComponentState(component.LastVisibility, component.LastUpdated, component.Enabled); + args.State = new StealthComponentState(component.LastVisibility, component.LastUpdated, component.Enabled, component.ShimmerFrequency); } private void OnStealthHandleState(EntityUid uid, StealthComponent component, ref ComponentHandleState args) @@ -109,6 +109,7 @@ public abstract partial class SharedStealthSystem : EntitySystem SetEnabled(uid, cast.Enabled, component); component.LastVisibility = cast.Visibility; component.LastUpdated = cast.LastUpdated; + component.ShimmerFrequency = cast.ShimmerFrequency; } private void OnMove(EntityUid uid, StealthOnMoveComponent component, ref MoveEvent args) diff --git a/Resources/Prototypes/Entities/Clothing/OuterClothing/suits.yml b/Resources/Prototypes/Entities/Clothing/OuterClothing/suits.yml index c16f8a0801..29c4e78f89 100644 --- a/Resources/Prototypes/Entities/Clothing/OuterClothing/suits.yml +++ b/Resources/Prototypes/Entities/Clothing/OuterClothing/suits.yml @@ -179,6 +179,7 @@ - type: Stealth minVisibility: 0.1 lastVisibility: 0.1 + shimmerFrequency: 0.05 - type: PowerCellDraw drawRate: 1.8 # 200 seconds on the default cell - type: ToggleCellDraw diff --git a/Resources/Prototypes/Entities/Structures/Storage/Closets/big_boxes.yml b/Resources/Prototypes/Entities/Structures/Storage/Closets/big_boxes.yml index 31e3e211d2..8439e76b4d 100644 --- a/Resources/Prototypes/Entities/Structures/Storage/Closets/big_boxes.yml +++ b/Resources/Prototypes/Entities/Structures/Storage/Closets/big_boxes.yml @@ -70,6 +70,7 @@ quiet: true - type: Stealth hadOutline: true + shimmerFrequency: 0.05 - type: StealthOnMove passiveVisibilityRate: -1 # very useful for going around the station concealed, if you start jitterstrafing you get seen movementVisibilityRate: 0.20 diff --git a/Resources/Prototypes/Entities/Structures/Storage/Crates/crates.yml b/Resources/Prototypes/Entities/Structures/Storage/Crates/crates.yml index 16fbfb2e68..d7eb050100 100644 --- a/Resources/Prototypes/Entities/Structures/Storage/Crates/crates.yml +++ b/Resources/Prototypes/Entities/Structures/Storage/Crates/crates.yml @@ -865,6 +865,7 @@ components: - type: Stealth hadOutline: true + shimmerFrequency: 0.05 - type: StealthOnMove passiveVisibilityRate: -0.10 movementVisibilityRate: 0.10 diff --git a/Resources/Textures/Shaders/stealth.swsl b/Resources/Textures/Shaders/stealth.swsl index ba4a4db3c2..ba67429e63 100644 --- a/Resources/Textures/Shaders/stealth.swsl +++ b/Resources/Textures/Shaders/stealth.swsl @@ -2,6 +2,7 @@ light_mode unshaded; uniform sampler2D SCREEN_TEXTURE; uniform highp float visibility; // number between -1 and 1 +uniform highp float shimmer_frequency; uniform mediump vec2 reference; const mediump float time_scale = 0.25; @@ -17,20 +18,17 @@ void fragment() { // get distortion magnitude. hand crafted from a random jumble of trig functions highp vec2 coords = (FRAGCOORD.xy + reference) * distance_scale; - highp float w = sin(TIME + (coords.x + coords.y + 2.0*sin(TIME*time_scale) * sin(TIME*time_scale + coords.x - coords.y)) ); + highp float t = TIME * shimmer_frequency; + highp float w = sin(t + (coords.x + coords.y + 2.0 * sin(t * time_scale) * sin(t * time_scale + coords.x - coords.y))); // visualize distortion via: - // COLOR = vec4(w,w,w,1.0); + // COLOR = vec4(w, w, w, 1.0); w *= (3.0 + visibility * 2.0); - highp vec4 background = zTextureSpec(SCREEN_TEXTURE, ( FRAGCOORD.xy + vec2(w) ) * SCREEN_PIXEL_SIZE ); + highp vec4 background = zTextureSpec(SCREEN_TEXTURE, (FRAGCOORD.xy + vec2(w)) * SCREEN_PIXEL_SIZE); - lowp float alpha; - if (visibility>0.0) - alpha = sprite.a * visibility; - else - alpha = 0.0; + lowp float alpha = sprite.a * max(visibility, 0.0); COLOR.xyz = mix(background.xyz, sprite.xyz, alpha); COLOR.a = 1.0; From 06da8d4b7fce9fb697e0b9ae4efaa01f44f2cd6b Mon Sep 17 00:00:00 2001 From: Stefano Pigozzi Date: Fri, 17 Jul 2026 18:33:56 +0200 Subject: [PATCH 054/108] Update Space Villain's UI (#40963) * Rewrite `SpaceVillainArcadeMenu`'s layout code * Rewrite `SpaceVillainArcadeMenu` to use XAML * Run "Format document" on the XAML * Make `SpaceVillainGame` strings more specific * Update Space Villain's localization Potentially breaking: All strings related to Space Villain now share the `space-villain` prefix, instead of mixing `spacevillain` and `space-villain`. * Use `StyleClasses` to make the action buttons display as a single line * Capitalize the Space Villain action button text * Tweak Space Villain colors a bit * Capitalize Space Villain's name in action messages * Capitalize slime enemy last name * Fix accidentaly find-and-replaced comment * Revert consistency changes to localization keys * Remove unnecessary expand and stretch properties * Rewrite Space Villain's info grid into a series of nested `BoxContainer` * Make HP and MP labels start with a space so that the spacer keeps a fixed size * Change spacers into plain `Control`s * fix --------- Co-authored-by: Pok245 <113675512+Pok27@users.noreply.github.com> --- .../Arcade/SpaceVillainArcadeMenu.cs | 114 ------------------ .../Arcade/SpaceVillainArcadeMenu.xaml | 98 +++++++++++++++ .../Arcade/SpaceVillainArcadeMenu.xaml.cs | 45 +++++++ .../space-villain-game-component.ftl | 20 +-- .../Locale/en-US/arcade/spacevillain.ftl | 12 +- .../Locale/en-US/datasets/arcade_villain.ftl | 2 +- 6 files changed, 163 insertions(+), 128 deletions(-) delete mode 100644 Content.Client/Arcade/SpaceVillainArcadeMenu.cs create mode 100644 Content.Client/Arcade/SpaceVillainArcadeMenu.xaml create mode 100644 Content.Client/Arcade/SpaceVillainArcadeMenu.xaml.cs diff --git a/Content.Client/Arcade/SpaceVillainArcadeMenu.cs b/Content.Client/Arcade/SpaceVillainArcadeMenu.cs deleted file mode 100644 index 3d25d2208d..0000000000 --- a/Content.Client/Arcade/SpaceVillainArcadeMenu.cs +++ /dev/null @@ -1,114 +0,0 @@ -using System.Numerics; -using Content.Client.Arcade.UI; -using Content.Shared.Arcade; -using Robust.Client.UserInterface.Controls; -using Robust.Client.UserInterface.CustomControls; - -namespace Content.Client.Arcade -{ - public sealed class SpaceVillainArcadeMenu : DefaultWindow - { - private readonly Label _enemyNameLabel; - private readonly Label _playerInfoLabel; - private readonly Label _enemyInfoLabel; - private readonly Label _playerActionLabel; - private readonly Label _enemyActionLabel; - - private readonly Button[] _gameButtons = new Button[3]; //used to disable/enable all game buttons - - public event Action? OnPlayerAction; - - public SpaceVillainArcadeMenu() - { - MinSize = SetSize = new Vector2(300, 225); - Title = Loc.GetString("spacevillain-menu-title"); - - var grid = new GridContainer { Columns = 1 }; - - var infoGrid = new GridContainer { Columns = 3 }; - infoGrid.AddChild(new Label { Text = Loc.GetString("spacevillain-menu-label-player"), Align = Label.AlignMode.Center }); - infoGrid.AddChild(new Label { Text = "|", Align = Label.AlignMode.Center }); - _enemyNameLabel = new Label { Align = Label.AlignMode.Center }; - infoGrid.AddChild(_enemyNameLabel); - - _playerInfoLabel = new Label { Align = Label.AlignMode.Center }; - infoGrid.AddChild(_playerInfoLabel); - infoGrid.AddChild(new Label { Text = "|", Align = Label.AlignMode.Center }); - _enemyInfoLabel = new Label { Align = Label.AlignMode.Center }; - infoGrid.AddChild(_enemyInfoLabel); - var centerContainer = new CenterContainer(); - centerContainer.AddChild(infoGrid); - grid.AddChild(centerContainer); - - _playerActionLabel = new Label { Align = Label.AlignMode.Center }; - grid.AddChild(_playerActionLabel); - - _enemyActionLabel = new Label { Align = Label.AlignMode.Center }; - grid.AddChild(_enemyActionLabel); - - var buttonGrid = new GridContainer { Columns = 3 }; - _gameButtons[0] = new Button() - { - Text = Loc.GetString("spacevillain-menu-button-attack") - }; - - _gameButtons[0].OnPressed += - _ => OnPlayerAction?.Invoke(SharedSpaceVillainArcadeComponent.PlayerAction.Attack); - buttonGrid.AddChild(_gameButtons[0]); - - _gameButtons[1] = new Button() - { - Text = Loc.GetString("spacevillain-menu-button-heal") - }; - - _gameButtons[1].OnPressed += - _ => OnPlayerAction?.Invoke(SharedSpaceVillainArcadeComponent.PlayerAction.Heal); - buttonGrid.AddChild(_gameButtons[1]); - - _gameButtons[2] = new Button() - { - Text = Loc.GetString("spacevillain-menu-button-recharge") - }; - - _gameButtons[2].OnPressed += - _ => OnPlayerAction?.Invoke(SharedSpaceVillainArcadeComponent.PlayerAction.Recharge); - buttonGrid.AddChild(_gameButtons[2]); - - centerContainer = new CenterContainer(); - centerContainer.AddChild(buttonGrid); - grid.AddChild(centerContainer); - - var newGame = new Button() - { - Text = Loc.GetString("spacevillain-menu-button-new-game") - }; - - newGame.OnPressed += _ => OnPlayerAction?.Invoke(SharedSpaceVillainArcadeComponent.PlayerAction.NewGame); - grid.AddChild(newGame); - - ContentsContainer.AddChild(grid); - } - - private void UpdateMetadata(SharedSpaceVillainArcadeComponent.SpaceVillainArcadeMetaDataUpdateMessage message) - { - Title = message.GameTitle; - _enemyNameLabel.Text = message.EnemyName; - - foreach (var gameButton in _gameButtons) - { - gameButton.Disabled = message.ButtonsDisabled; - } - } - - public void UpdateInfo(SharedSpaceVillainArcadeComponent.SpaceVillainArcadeDataUpdateMessage message) - { - if (message is SharedSpaceVillainArcadeComponent.SpaceVillainArcadeMetaDataUpdateMessage metaMessage) - UpdateMetadata(metaMessage); - - _playerInfoLabel.Text = $"HP: {message.PlayerHP} MP: {message.PlayerMP}"; - _enemyInfoLabel.Text = $"HP: {message.EnemyHP} MP: {message.EnemyMP}"; - _playerActionLabel.Text = message.PlayerActionMessage; - _enemyActionLabel.Text = message.EnemyActionMessage; - } - } -} diff --git a/Content.Client/Arcade/SpaceVillainArcadeMenu.xaml b/Content.Client/Arcade/SpaceVillainArcadeMenu.xaml new file mode 100644 index 0000000000..bc40fdb1c9 --- /dev/null +++ b/Content.Client/Arcade/SpaceVillainArcadeMenu.xaml @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + HealthManager, /// - /// Blinks when Overflow flag is set + /// Blinks when the Uncapped flag is set. /// HealthLimiter } From b7b1887f0c4af22f4eeec54bc843e7df7fb4995f Mon Sep 17 00:00:00 2001 From: ProPeperos <61984624+ProPeperos@users.noreply.github.com> Date: Fri, 17 Jul 2026 19:26:44 +0200 Subject: [PATCH 056/108] Sprite cleanup - Part 2 - Structures (#44726) * edge firelocks + wet floor sparkle * secret door * clockwork windoor * other windoors * tiny and directional fan * disposal * edge fire lock fix * xeno and big thruster * bell and lights * switches * windows * directional crack fix * clockwork windoor fix --- .../Fluids/wet_floor_sparkles.rsi/meta.json | 1 - .../clockwork_windoor.rsi/bolted_unlit.png | Bin 248 -> 166 bytes .../clockwork_windoor.rsi/clockworkdeny.png | Bin 2646 -> 504 bytes .../clockwork_windoor.rsi/clockworkspark.png | Bin 4260 -> 708 bytes .../Windoors/clockwork_windoor.rsi/closed.png | Bin 1195 -> 288 bytes .../clockwork_windoor.rsi/closed_unlit.png | Bin 248 -> 163 bytes .../clockwork_windoor.rsi/closing.png | Bin 3368 -> 565 bytes .../clockwork_windoor.rsi/closing_unlit.png | Bin 491 -> 166 bytes .../clockwork_windoor.rsi/deny_unlit.png | Bin 311 -> 172 bytes .../clockwork_windoor.rsi/emergency_unlit.png | Bin 248 -> 163 bytes .../Windoors/clockwork_windoor.rsi/meta.json | 230 +--------------- .../Windoors/clockwork_windoor.rsi/open.png | Bin 952 -> 265 bytes .../clockwork_windoor.rsi/open_unlit.png | Bin 248 -> 166 bytes .../clockwork_windoor.rsi/opening.png | Bin 3333 -> 557 bytes .../clockwork_windoor.rsi/opening_unlit.png | Bin 491 -> 166 bytes .../clockwork_windoor.rsi/panel_open.png | Bin 747 -> 284 bytes .../Windoors/clockwork_windoor.rsi/welded.png | Bin 146 -> 366 bytes .../Doors/Windoors/plasma.rsi/meta.json | 197 +++++++++++--- .../Windoors/plasma.rsi/secure_underlay.png | Bin 476 -> 202 bytes .../Doors/Windoors/plasma.rsi/welded.png | Bin 109 -> 366 bytes .../Doors/Windoors/uranium.rsi/meta.json | 197 +++++++++++--- .../Windoors/uranium.rsi/secure_underlay.png | Bin 476 -> 202 bytes .../Doors/Windoors/uranium.rsi/welded.png | Bin 109 -> 133 bytes .../Doors/Windoors/windoor.rsi/meta.json | 197 +++++++++++--- .../Windoors/windoor.rsi/secure_underlay.png | Bin 476 -> 202 bytes .../Doors/Windoors/windoor.rsi/welded.png | Bin 109 -> 133 bytes .../Doors/edge_door_hazard.rsi/closed.png | Bin 1590 -> 321 bytes .../edge_door_hazard.rsi/closed_unlit.png | Bin 96 -> 366 bytes .../Doors/edge_door_hazard.rsi/closing.png | Bin 4048 -> 565 bytes .../edge_door_hazard.rsi/closing_unlit.png | Bin 179 -> 366 bytes .../Doors/edge_door_hazard.rsi/deny.png | Bin 1590 -> 321 bytes .../Doors/edge_door_hazard.rsi/deny_unlit.png | Bin 96 -> 366 bytes .../Doors/edge_door_hazard.rsi/locked.png | Bin 1590 -> 321 bytes .../Doors/edge_door_hazard.rsi/meta.json | 170 +----------- .../Doors/edge_door_hazard.rsi/open.png | Bin 805 -> 246 bytes .../Doors/edge_door_hazard.rsi/opening.png | Bin 4020 -> 541 bytes .../edge_door_hazard.rsi/opening_unlit.png | Bin 179 -> 366 bytes .../Doors/edge_door_hazard.rsi/palert.png | Bin 468 -> 214 bytes .../edge_door_hazard.rsi/pressure_unlit.png | Bin 637 -> 198 bytes .../temperature_unlit.png | Bin 671 -> 194 bytes .../Doors/edge_door_hazard.rsi/welded.png | Bin 359 -> 200 bytes .../edge_door_hazard.rsi/welded_open.png | Bin 1335 -> 346 bytes .../Doors/secret_door.rsi/assembly.png | Bin 496 -> 238 bytes .../Doors/secret_door.rsi/closed.png | Bin 318 -> 186 bytes .../Doors/secret_door.rsi/closing.png | Bin 1324 -> 361 bytes .../Doors/secret_door.rsi/meta.json | 59 +---- .../Structures/Doors/secret_door.rsi/open.png | Bin 429 -> 218 bytes .../Doors/secret_door.rsi/opening.png | Bin 1290 -> 350 bytes .../Atmospherics/directionalfan.rsi/icon.png | Bin 16522 -> 286 bytes .../Atmospherics/directionalfan.rsi/meta.json | 15 +- .../Piping/Atmospherics/tinyfan.rsi/meta.json | 1 - .../Piping/disposal.rsi/conpipe-c.png | Bin 4013 -> 1220 bytes .../Piping/disposal.rsi/conpipe-j1.png | Bin 12206 -> 1348 bytes .../Piping/disposal.rsi/conpipe-j1s.png | Bin 5217 -> 1356 bytes .../Piping/disposal.rsi/conpipe-j2.png | Bin 12199 -> 1339 bytes .../Piping/disposal.rsi/conpipe-j2s.png | Bin 5205 -> 1350 bytes .../Piping/disposal.rsi/conpipe-s.png | Bin 1529 -> 790 bytes .../Piping/disposal.rsi/conpipe-signaller.png | Bin 3795 -> 889 bytes .../Piping/disposal.rsi/conpipe-t.png | Bin 3641 -> 1091 bytes .../Piping/disposal.rsi/conpipe-tagger.png | Bin 2549 -> 893 bytes .../Piping/disposal.rsi/conpipe-x.png | Bin 4750 -> 1529 bytes .../Piping/disposal.rsi/conpipe-y.png | Bin 11576 -> 1426 bytes .../Structures/Piping/disposal.rsi/meta.json | 250 ++++-------------- .../Structures/Piping/disposal.rsi/pipe-b.png | Bin 1302 -> 438 bytes .../Piping/disposal.rsi/pipe-bf.png | Bin 1387 -> 437 bytes .../Structures/Piping/disposal.rsi/pipe-c.png | Bin 4558 -> 1355 bytes .../Piping/disposal.rsi/pipe-cf.png | Bin 4930 -> 1434 bytes .../Structures/Piping/disposal.rsi/pipe-d.png | Bin 2752 -> 816 bytes .../Piping/disposal.rsi/pipe-j1.png | Bin 13741 -> 1520 bytes .../Piping/disposal.rsi/pipe-j1f.png | Bin 5425 -> 1578 bytes .../Piping/disposal.rsi/pipe-j1s.png | Bin 5755 -> 1608 bytes .../Piping/disposal.rsi/pipe-j1sf.png | Bin 5783 -> 1601 bytes .../Piping/disposal.rsi/pipe-j2.png | Bin 13610 -> 1517 bytes .../Piping/disposal.rsi/pipe-j2f.png | Bin 14289 -> 1582 bytes .../Piping/disposal.rsi/pipe-j2s.png | Bin 5693 -> 1615 bytes .../Piping/disposal.rsi/pipe-j2sf.png | Bin 5724 -> 1608 bytes .../Structures/Piping/disposal.rsi/pipe-s.png | Bin 1441 -> 807 bytes .../Piping/disposal.rsi/pipe-sf.png | Bin 1443 -> 855 bytes .../Piping/disposal.rsi/pipe-signaller.png | Bin 5611 -> 1456 bytes .../Structures/Piping/disposal.rsi/pipe-t.png | Bin 4134 -> 1164 bytes .../disposal.rsi/pipe-tagger-partial.png | Bin 2253 -> 1209 bytes .../Piping/disposal.rsi/pipe-tagger.png | Bin 2383 -> 1206 bytes .../Piping/disposal.rsi/pipe-tf.png | Bin 4295 -> 1281 bytes .../Structures/Piping/disposal.rsi/pipe-x.png | Bin 5529 -> 1817 bytes .../Piping/disposal.rsi/pipe-xf.png | Bin 5868 -> 1853 bytes .../Structures/Piping/disposal.rsi/pipe-y.png | Bin 13801 -> 1578 bytes .../Piping/disposal.rsi/pipe-yf.png | Bin 14477 -> 1635 bytes .../signal-router-flipped-free.png | Bin 5564 -> 1334 bytes .../disposal.rsi/signal-router-flipped.png | Bin 6037 -> 1593 bytes .../disposal.rsi/signal-router-free.png | Bin 5017 -> 1337 bytes .../Piping/disposal.rsi/signal-router.png | Bin 5645 -> 1592 bytes .../Shuttles/thruster_large.rsi/base.png | Bin 9425 -> 971 bytes .../Shuttles/thruster_large.rsi/meta.json | 41 +-- .../Shuttles/thruster_large.rsi/thrust.png | Bin 5239 -> 456 bytes .../thrust_burn_unshaded.png | Bin 9111 -> 1113 bytes .../Shuttles/xenoborg_thruster.rsi/base.png | Bin 2082 -> 360 bytes .../Shuttles/xenoborg_thruster.rsi/meta.json | 49 +--- .../Shuttles/xenoborg_thruster.rsi/thrust.png | Bin 506 -> 250 bytes .../thrust_burn_unshaded.png | Bin 2581 -> 432 bytes .../Lighting/emergency_light.rsi/base.png | Bin 262 -> 169 bytes .../emergency_light_off.png | Bin 251 -> 161 bytes .../emergency_light_on.png | Bin 1329 -> 303 bytes .../Lighting/emergency_light.rsi/meta.json | 45 +--- .../Lighting/light_small.rsi/base.png | Bin 618 -> 212 bytes .../Lighting/light_small.rsi/broken.png | Bin 499 -> 199 bytes .../Lighting/light_small.rsi/burned.png | Bin 755 -> 228 bytes .../Lighting/light_small.rsi/empty.png | Bin 456 -> 194 bytes .../Lighting/light_small.rsi/glow.png | Bin 9382 -> 227 bytes .../Lighting/light_small.rsi/meta.json | 27 +- .../Lighting/light_tube.rsi/base.png | Bin 1631 -> 238 bytes .../Lighting/light_tube.rsi/broken.png | Bin 1801 -> 261 bytes .../Lighting/light_tube.rsi/burned.png | Bin 2107 -> 355 bytes .../Lighting/light_tube.rsi/empty.png | Bin 1574 -> 218 bytes .../Lighting/light_tube.rsi/glow.png | Bin 1571 -> 215 bytes .../Lighting/light_tube.rsi/meta.json | 15 +- .../Lighting/strobe_light.rsi/base.png | Bin 2369 -> 217 bytes .../Lighting/strobe_light.rsi/broken.png | Bin 2416 -> 214 bytes .../Lighting/strobe_light.rsi/empty.png | Bin 2141 -> 162 bytes .../Lighting/strobe_light.rsi/glow.png | Bin 2168 -> 165 bytes .../Lighting/strobe_light.rsi/meta.json | 12 +- .../Structures/Wallmounts/bell.rsi/bell.png | Bin 19239 -> 364 bytes .../Structures/Wallmounts/bell.rsi/meta.json | 3 +- .../Wallmounts/locked_switch.rsi/base.png | Bin 937 -> 203 bytes .../Wallmounts/locked_switch.rsi/locked.png | Bin 725 -> 163 bytes .../Wallmounts/locked_switch.rsi/meta.json | 51 +--- .../Wallmounts/locked_switch.rsi/unlocked.png | Bin 754 -> 170 bytes .../Structures/Wallmounts/switch.rsi/dead.png | Bin 761 -> 186 bytes .../Wallmounts/switch.rsi/meta.json | 51 +--- .../Structures/Wallmounts/switch.rsi/off.png | Bin 731 -> 186 bytes .../Structures/Wallmounts/switch.rsi/on.png | Bin 728 -> 186 bytes .../Wallmounts/switch_frame.rsi/caution.png | Bin 1393 -> 300 bytes .../switch_frame.rsi/caution_security.png | Bin 1366 -> 300 bytes .../Wallmounts/switch_frame.rsi/exit.png | Bin 1227 -> 257 bytes .../Wallmounts/switch_frame.rsi/grey.png | Bin 966 -> 232 bytes .../Wallmounts/switch_frame.rsi/janitor.png | Bin 1134 -> 249 bytes .../Wallmounts/switch_frame.rsi/meta.json | 120 ++------- .../Windows/clockwork_diagonal.rsi/meta.json | 8 +- .../Windows/clockwork_diagonal.rsi/state0.png | Bin 2836 -> 369 bytes .../Windows/clockwork_diagonal.rsi/state1.png | Bin 2833 -> 374 bytes .../Structures/Windows/cracks.rsi/meta.json | 30 ++- .../DamageOverlay_10.png | Bin 709 -> 201 bytes .../DamageOverlay_20.png | Bin 691 -> 235 bytes .../DamageOverlay_5.png | Bin 539 -> 193 bytes .../Windows/cracks_directional.rsi/meta.json | 9 +- .../Windows/directional.rsi/clock_window.png | Bin 1278 -> 299 bytes .../directional.rsi/frosted_window.png | Bin 724 -> 218 bytes .../Windows/directional.rsi/meta.json | 27 +- .../plasma_reinforced_window.png | Bin 781 -> 237 bytes .../Windows/directional.rsi/plasma_window.png | Bin 635 -> 216 bytes .../directional.rsi/reinforced_window.png | Bin 725 -> 233 bytes .../Windows/directional.rsi/tinted_window.png | Bin 724 -> 218 bytes .../uranium_reinforced_window.png | Bin 716 -> 237 bytes .../directional.rsi/uranium_window.png | Bin 642 -> 216 bytes .../Windows/directional.rsi/window.png | Bin 1367 -> 422 bytes 154 files changed, 674 insertions(+), 1131 deletions(-) diff --git a/Resources/Textures/Fluids/wet_floor_sparkles.rsi/meta.json b/Resources/Textures/Fluids/wet_floor_sparkles.rsi/meta.json index 9d7419af42..463582ea32 100644 --- a/Resources/Textures/Fluids/wet_floor_sparkles.rsi/meta.json +++ b/Resources/Textures/Fluids/wet_floor_sparkles.rsi/meta.json @@ -9,7 +9,6 @@ "states": [ { "name": "sparkles", - "directions": 1, "delays": [ [ 0.14, diff --git a/Resources/Textures/Structures/Doors/Windoors/clockwork_windoor.rsi/bolted_unlit.png b/Resources/Textures/Structures/Doors/Windoors/clockwork_windoor.rsi/bolted_unlit.png index 68f1e08c5b9eb9182c8ae40c2523e8683db01143..270126b09573055ba280afd8420cb2a916fbf04e 100644 GIT binary patch delta 143 zcmeytxQtP;Gr-TCmrII^fq{Y7)59eQNGpIa2OE$quB!SnQBfh4v%n*=n1O-s2naJy z)#j51N?LomIEF;HzdgH9kU@cm<=~geY6V+5IIjje{V|qYq4+B7?`mV9G6sf%W0$tA mtiK(y`PMYKe3R8_RWF!MX^UugELWHSlJ<12yne}5lFF=1o;L3|No!CL2KogiFOiIsh%#5ArbCxuUhjp81S$J*1xMyk2sln z$jhPef=@H|mnlmMw`dl%rAmsOn3Wj0lr@Hdfs4U`kzs{BLtf>%4Z3%J%}bp9^WmNU z&v@8Y?AiB7y5HjdZAJzS1_oA!1$O*4aqIH-mdnfi(LXrv!_+pQ3m80I{an^LB{Ts5 DK8;F_ diff --git a/Resources/Textures/Structures/Doors/Windoors/clockwork_windoor.rsi/clockworkdeny.png b/Resources/Textures/Structures/Doors/Windoors/clockwork_windoor.rsi/clockworkdeny.png index 702774e22df91dd83343d43882115e433fed22e1..4cfebc409fbdbab151fd6d9d5c595974dc555776 100644 GIT binary patch delta 472 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 NxNK@`Qe*6K?|0000W2m=5B0HUFT#{d8T0drDE zLIAGL9O(c600d`2O+f$vv5yPcHP)t-s0001+ZwIl9C7^g2p=lDek~Ox2 zE+rKPEFTCvB>+4o07x_vNhJ(PH4;iD3{y7%R5$=tLnT&3C0HdGSSA==MG{{&3|~bO zU^Wb5LjYq$0AzWYYEva_P!er57;QleZBY_#LJW3YC3ayrcU~oTYgKqZ7h2c7^&po&$c zM>nQ|E2v~1sec=_npwA)O}bY*x@$S)K$zv~@$@U5p~xwS00007bW%=J0HC0#sHmvj zI7BG`00C=BL_t(o!|jvXZh}A*MSsWM#M6RPih`rHDk?fCDhhbNp#T3(Jyv6E$8;Y1 z&{+v2%sM;SgaaW8g+ifFC=?2XLZMLnV<4yf0>EE;lFxAt`~+i6)9`kF#ABd^=Uz|0 z?R7M^EMI)-_l?`$K;y{rgq8qGkU7IOjo;m6GRF%T0Hb!pG~e}GUay&E(|?xbowj9t z7`MDpx2%pM%M*%Klgq?u;A;X{f{IqcFkD<3UU|K?Kvj|Dt5Fm!FAcA}QD35}%JPIV zzUt<_zrlHeuQ;RbV73{(-i!Xx3^%iZE6aQ1`EK&|Ao?dO+RewFEKdLuE)E8 zRLp~6JaNU`2YX_07*qoM6N<$f+K?;tN;K2 literal 4260 zcmbVQc|4R|-ye(&vJSGy=b$;jkuJiqUf9HJ9_0+-)&cz|h0RRBF zjExK|88wPg@AHFE+w#rQ1lE zrURu6gU5~)Tk04XN`iRb06&|j@rz9!i=j_-kt^H1#r!ryakWmW%`!5V_nrrC$|h=G zJ~i|@Xft$EJ2a# zok=q;9O>aNj#EsKwWM}K(Ma#E3xyBmM$9)Gcp@L9eqWrJqpS12o`p@^#qS`!S8_@@ zmTCAMZ+EPMj`aKxHlA2t3c^)jV5cbu~lKfK($_PB-y59HpD? zY3>=0&xnS0(R$Kom*_{M(dGH5?}Hg+E~e1&S?Wf1La0acmof!v=#WlfuI9>f-HgdQ^+mxTXbwcZ5tt0ZeSb9X)pB~`SAOygqH^$mIegG=uunvY%Z^sg)+VwUz z_iq|#(sjK5Fsyu8JeZgWPQ(>f&|aQ78n=iWfYw)V(BS`AVrf^fJ6Md0j;#r@G>AZ` z)s<)xtbP~nsFZuK#h(j)6He}ly^Q`L6Gi=VCRYxq&LdVrkC6YGL1AU`75HiuE3urg z#lE&CDf-;ha=#`FH@-`1nW7Jz&(;i~1xY{ebspm_Y_H)LecD;?Dfv<}{OAPG$cbyz zaxvO-Kx&b$%(X|6Kit2ClQt#x(7TfyH@RaG6w?m+Vx@>N6#GQ`?DOcUHnTaq)|7BC zw+jnqeJm}+#8UxNB43`QC&+S1Jr%1XHy>qcWw@rU0JC--`DGv|nBK8hR6(m!1dZO; z(kWBljVK2|+f`NTu%4QsQE!OI=aZ zquUn-0mEAe%8<{z8RX<)YGqCY`YRnXHiYQ%=lc}Awt0({70haDYfP8zbWexS`$}(i zivVsw73h?XlDpEE3@6&Hpby^NzOaiMnFa{d#_00pMuqK6U`C%_=^^jRxHLWVR6Cj( zH0=y&UnyByQH(*Rw}c=JhX=1zy05g903^YxLgL&JM63r*2kk2_7tO-^;Kb-i7d89b&NS9sde-I^c0VdAlJwGnpf7KX%fSpsiGQm}YAQ{4BEp zFG}Y*OJ?&#JUsc!&HILfxhX8tIF+8E)-dAg4ao(Q%RHLtkyO}~fK_Zhs%5$D+KJtp zxbH4saCB*249~m}2&DsZ{6%!tU4l|K2M_1k^;X*1%%+sWF;5$yd%F1LqQC-%P7 zA3hQ62I9x)`@i2Se047O+0p>5+Or3by=cU>E48ru^i@f<*$hx8%8WkE4#3qsl|Qju zpIYD#wH3(oK6RG4yeco^S_ zx8aQdb7pqG8-?&8)ML?JMU0GEFp{3Li}9u|1##;f?-^BXTgA$PQlJbl z)>k^i***$!xO&LwI@WUem|`5izY1{ahd1!#Z#AC>&ktICacKMS>sFA*TXdyE?HzG0 z#br?2D(o_ohlkG!WZES#Ai_@pH64jw{Ji!v-IoFIuPmNkZoW;#&)+rTkaIJJsUz$kXgDZJhu2 z<0D2J);324920jL;$cicJ_H%>lCIp26HH`iN4O{QSeyyU3mNKeRoYg z(j)am!OwSgS1C_Nulns5Lr<~4$b7&-J9)&c$&rmcvmJKL@I;FvJY5x6X!?@E6CX=|+_5rQCBn*aK zGoa)A`c%eGL1c>p>hb2faUK1qEjd)?iLvzzJT)O&+-bD+o{1qF6kGozQkdu${45G& zaQK7NxH=JAz%631)gR)a4{1fODfyn?P0GIL4D z`y%t{2KM4cw%Q}%g-FAntknO=5;=f}{2;i0$K9#g?=R&dAUPSt<;yVOkU(4A=NDV9 z{pUSkQ}GtG@Ct9p82FkDqdy^q()wt7p0xq_H*Epatp({g0oJ(fX|?|;e3Y5|pw|Vq zKd~%MsR1pX^q+9Nz5;J+GF-$Z5EWf-n}98q-9h;vvnU`usPy22zcn;71s^mA>0Vjh zjcUxPlteM-Hxv7lQEHD66rMU8tEC6_Yw8o0sz3|C$_M|-L(siYaBd@SdIt8bq(O}P znLxqdvv2N!@`dLpd=``fj%RVQWlIWcae#9yFX}G>0cG2#+h{K?7Q6K~z<%#j=;@|h zsOEmLB#Og-1+G(CPI8fN$h^GVQoBM6w37wR!_yoTT6Tc5+ALm9!neZtzn?+2*sibiV%Amr zi(GglbAe?ppam6mX$#gfz+dm7-#Ez^H(90C573+b$6Xdq%AH2p?vk8p=+h*#OsbV0 z;QSB5Cl~ZKt)DkvBb~Rc?;z~_)JhBNw)Wq4L&4D=pkeW=poQDWmJ{ni-_Wc7Rnns3d;TQW1&P~(f(S3yUfsmMuqUjfU*tDZ?;?%f z?ETy`Mn;+>CLdIlVh(+1gpBGPLRf?_^|iNZGwbcD*q}86>58(#zf~cD6hIjZrZ#M0 zA2fbqvfu_I;m({Z<2bZ7;bjJXoVSo6)$I49y860_TM+82y~`cEa<4)=bx7lRdk-w8+m;o$kmtSfp}JJcZDUmOA4fYm)x zXH$?owE4pXu`M^nau5cL{P&(E$z%JFa)h>GFF~`6JmHvsyxY-NC9C#rOm77ie*K)x zbD}|w>x0pGv4Lk$ZCrpJQE>!U!mPa#YFkFc8p5vX$s}DLuSrpzu#CHPoII5L*>Mjq zPbb>vjDNZzeDGgpI05|1n7SwR>&sn>b(g3J+4VJ(SH4s7~4 zv%(lK&;5#xV0RO`990zr9^PP}{(C#_j9%gv-avTeeeA<`gvI!>#nrHyxLdC#8<~Dm z@LwaS{G-^|%4F|S!W>@H=ZJoZ&&1kZF-%dUpMB)4?Gy3iEf;a6$;s@@F8!g0@ZWO^ z*nL-6Yhd}g)!>mD(pGcNB<(PD$$axlhn;up9aMTtTHNs)jJ542qx@zwyY1-&*Cl?7 zWmpj9CcT+AV}6skO#r7z-#ZHTU$MZemv#(STtS;Kl1b)Um_*oWuf{69%DKYE3*CH( zd11g_4xOJmPr4EXIEQSi8SM$(k5FuEimS4X8*OZL}VJI4aFzV z?7zxrJ5f^sxaU#MH>tmQp9sRPqHAKkddxujmAhQ2QwkXgtEL70WYy%8F!I-^#ELmLe|eBy#W8<#7{GCIgpy& z(Pl_38@_mT0dID94f}VGZRB?tAyKN38f=ks>! rjoO(A_x0#00qNH(6u&sq=xq6^`veV)>x3`su@q!^2X+?^QKos)S9y#!P+deWY>ZQleSC7 zmg(o_L~cEjEjq!fOs#pLaqcVy0hy11LLowDyrK_YD1PRXrsU!f=#l$&rZ7+J^KDL{ z3{#)%i99%=j9qVm#*|{S-bCMP=S*fS%*>uPH)+GE7aGksXI{LxO@iT{lj#oIgA2rg PHZyp-`njxgN@xNAUszfc delta 1189 zcmV;W1X}x`0;>rjiBL{Q4GJ0x0000DNk~Le0000$0000$2nGNE0IF$m-jO~Re*|4g zL_t(|ob6l9P7_fSJ|z?C!h}D8BB+>HBr(xw2(mEhRyICD+2|YSL+Bgm#y$crG$t;@ zXoAK_Ffsm&3qn9E2uk9j?V@$QxjoKxyfd`Wd+&tKmkhn!Io#Xx&HbD292~NY{9t$e z^0_K~S|!T$i@JJUT;G2Z?Nkr#f2;l8Y?+37iMqOiwoBVYlP8FtFL#r50^odZfP4aa z4igP~Bz)Z@a@WND>oetl>`Plg`IRfkxtI@Z(3Xs6Zv~P0F`}b`UU^#(06X+;od7tF zt8gt#E2WD6gy8(#Y__PfAJ2(T&$d9WD8rfY-2e7NW5;QFN|f*1a|<8DCFT)r9j` zFNoh4mWZyLZ_IH8Tsk4 zP=~|0G(mMpL;Ka=TLtubAkYKsz=13Tot*V|mZYN4sxB`>ZX0C|e}veClkxb6M2s&4 zKs`k{N|cP!<)^3ezCBb}faPfZ9ipV%56jZF;jaNBN5ln;=d#|n`G-$jr7kb#yz95gws0QpqU`Mg zR^cE-j3_C9Imz=9y90D{S+9>moGy>;4y(P~HUQ_*H&K;r!f`jN8TVm5Y7`x>Myma-R6SSWM*^#LDJP?;3pc~o=zzGwFEX3kefAM)hl^=i@o|t}mBSyyG z1;X)pKv#Z1GcZB`c7mw*JfO-C;1i>67$E>#9vo7|=W!HQ|m?qInVVtF~T+~KcL+(x(0-g*Vr90jZIEIHuDRV2^e1l+0kH?4_?LP z7pRreE}0H(e}WZ7NcDuH-W_x!QIeQUf+-}50Dws_1tSFD#fOz7xlUCEK*Hkt1H1+# z3C0N6ZC`)=#x=6clglK00000NkvXXu0mjf DE~+e5 diff --git a/Resources/Textures/Structures/Doors/Windoors/clockwork_windoor.rsi/closed_unlit.png b/Resources/Textures/Structures/Doors/Windoors/clockwork_windoor.rsi/closed_unlit.png index 50550c70d5bec7da22610e1228088e0dc91d87d7..631fd12b47c48678122dc036347f6bd326a06446 100644 GIT binary patch delta 140 zcmeytxR_C~Gr-TCmrII^fq{Y7)59eQNGpIa2OE$quB!SnQBfg@v%n*=n1O-s2naJy z)#j51N?LfjIEF;HzddUx$e_UEd{JXX{hbAi>?CGfe%;vS_uu#A7gnGu28MUj&QJO; jd--hMX~}$^*UOA!&ixZzE^In!F-X$W)z4*}Q$iB}T)`~L delta 205 zcmZ3?_=8cgGr-TCmrII^fq{Y7)59eQNIQTq2Q!eIyS?$vL`4Nvo&cW^*Z%4Z3%J%}bp9^WmNU z&v@8Y?AiB7y5HjdZAJzS1_oA!1$O*4aqIH-mdnfi(LXrv!_+pAOFUiuT-G@yGywp0 Ch)UrA diff --git a/Resources/Textures/Structures/Doors/Windoors/clockwork_windoor.rsi/closing.png b/Resources/Textures/Structures/Doors/Windoors/clockwork_windoor.rsi/closing.png index 2b9fd5bc7b7b612d2b83dd3c258de9ca01612471..7fa44d592257db57fa59a9f7007f2dbd814efa6d 100644 GIT binary patch delta 554 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 Y_`X+s{Xo{3@aqHE+c}@EJmvl1UmGo&UjP6A diff --git a/Resources/Textures/Structures/Doors/Windoors/clockwork_windoor.rsi/closing_unlit.png b/Resources/Textures/Structures/Doors/Windoors/clockwork_windoor.rsi/closing_unlit.png index 92c270afef5a257552995baa7e1835f7aaa6ae14..a5602694fc3758fdf8d69860b3bedfe83d03d7f2 100644 GIT binary patch delta 143 zcmaFOyo^z?Gr-TCmrII^fq{Y7)59eQNGpIa6El$H6Pc7gQBfh4v%n*=7|1;W!i-b3 z`J{o8JOMr-u0T4aa^|cxC!W6g*!DwY8j#Oe666=m;PC858jvIA>Eak7A(n?S__~G22WQ%mvv4FO#meCBWeHu literal 491 zcmeAS@N?(olHy`uVBq!ia0vp^2SAvE8Azrw%`pX1jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCikh0(?STXRSGrQaSVKtB*i|k3Y*CKFptSlz#%Ze!q{;-`{*Z`}^P9U)B5gAFRJHqc5}}3;VwT%S11n8)D$MSCt#qOZ5$G>~E`3Gxg6 z|NlROgVxF~Kt5-IM`SSr1K(i~W;~w1A_XY8#M8wwB*XdbO+&6`2LXqRq3`RTn@sEU z_h@VQ6P~-dZsV+jr99dWtScBq7chl1a0M`GIq-9=d26$G>qpj-`nS{j%OieQ{_yzz zocZzm7dE|`s7m|!E9`f)eSLhcu3+uo2W>DDz{b_HA8Wra-}7GTf$R5={|}V>KmC0> kiUKAR`#zopr0Hvd9(*OVf diff --git a/Resources/Textures/Structures/Doors/Windoors/clockwork_windoor.rsi/emergency_unlit.png b/Resources/Textures/Structures/Doors/Windoors/clockwork_windoor.rsi/emergency_unlit.png index 50550c70d5bec7da22610e1228088e0dc91d87d7..631fd12b47c48678122dc036347f6bd326a06446 100644 GIT binary patch delta 140 zcmeytxR_C~Gr-TCmrII^fq{Y7)59eQNGpIa2OE$quB!SnQBfg@v%n*=n1O-s2naJy z)#j51N?LfjIEF;HzddUx$e_UEd{JXX{hbAi>?CGfe%;vS_uu#A7gnGu28MUj&QJO; jd--hMX~}$^*UOA!&ixZzE^In!F-X$W)z4*}Q$iB}T)`~L delta 205 zcmZ3?_=8cgGr-TCmrII^fq{Y7)59eQNIQTq2Q!eIyS?$vL`4Nvo&cW^*Z%4Z3%J%}bp9^WmNU z&v@8Y?AiB7y5HjdZAJzS1_oA!1$O*4aqIH-mdnfi(LXrv!_+pAOFUiuT-G@yGywp0 Ch)UrA diff --git a/Resources/Textures/Structures/Doors/Windoors/clockwork_windoor.rsi/meta.json b/Resources/Textures/Structures/Doors/Windoors/clockwork_windoor.rsi/meta.json index 30fb6258df..76d39938b4 100644 --- a/Resources/Textures/Structures/Doors/Windoors/clockwork_windoor.rsi/meta.json +++ b/Resources/Textures/Structures/Doors/Windoors/clockwork_windoor.rsi/meta.json @@ -8,43 +8,11 @@ }, "states": [ { - "name": "closed", - "directions": 4 + "name": "closed" }, { "name": "opening", - "directions": 4, "delays": [ - [ - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1 - ], - [ - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1 - ], - [ - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1 - ], [ 0.1, 0.1, @@ -58,131 +26,42 @@ ] }, { - "name": "opening_unlit", - "directions": 4, - "delays": [ - [ - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1 - ], - [ - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1 - ], - [ - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1 - ], - [ - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1 - ] - ] + "name": "opening_unlit" }, { - "name": "closed_unlit", - "directions": 4 + "name": "closed_unlit" }, { "name": "deny_unlit", - "directions": 4, "delays":[ - [ - 0.1, 0.2, 0.1 - ], [ - 0.1, 0.2, 0.1 - ], - [ - 0.1, 0.2, 0.1 - ], - [ - 0.1, 0.2, 0.1 + 0.1, + 0.2, + 0.1 ] ] }, { - "name": "welded", - "directions": 4 + "name": "welded" }, { - "name": "bolted_unlit", - "directions": 4 + "name": "bolted_unlit" }, { - "name": "emergency_unlit", - "directions": 4 + "name": "emergency_unlit" }, { - "name": "open", - "directions": 4 + "name": "open" }, { - "name": "open_unlit", - "directions": 4 + "name": "open_unlit" }, { - "name": "panel_open", - "directions": 4 + "name": "panel_open" }, { "name": "closing", - "directions": 4, "delays": [ - [ - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1 - ], - [ - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1 - ], - [ - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1 - ], [ 0.1, 0.1, @@ -196,70 +75,11 @@ ] }, { - "name": "closing_unlit", - "directions": 4, - "delays": [ - [ - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1 - ], - [ - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1 - ], - [ - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1 - ], - [ - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1 - ] - ] + "name": "closing_unlit" }, { "name": "clockworkdeny", - "directions": 4, "delays": [ - [ - 0.1, - 0.2, - 0.1 - ], - [ - 0.1, - 0.2, - 0.1 - ], - [ - 0.1, - 0.2, - 0.1 - ], [ 0.1, 0.2, @@ -269,29 +89,7 @@ }, { "name": "clockworkspark", - "directions": 4, "delays": [ - [ - 0.1, - 0.1, - 0.1, - 0.1, - 0.1 - ], - [ - 0.1, - 0.1, - 0.1, - 0.1, - 0.1 - ], - [ - 0.1, - 0.1, - 0.1, - 0.1, - 0.1 - ], [ 0.1, 0.1, @@ -302,4 +100,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Structures/Doors/Windoors/clockwork_windoor.rsi/open.png b/Resources/Textures/Structures/Doors/Windoors/clockwork_windoor.rsi/open.png index eef1c1ea840cc92b6136fa5fb7b65f0a28cc6fb9..83217feee37735a70546423a9474d152fd2941ff 100644 GIT binary patch delta 252 zcmdnN-pORw8Q|y6%O%Cdz`(%k>ERLtq!mDzg&9aThNK?{QjEnx?oJHr&dIz4a#+$G zeH|GXHuiJ>No1Xi zn4QnQvR=B?@K`X&#F8MtU!ykF2<2re8Zd6(GR2J{Z-(UN7kB@(1Fd54boFyt=akR{0GDG-AOHXW delta 945 zcmeBV+QF{a8Q|y6%O%Cdz`(%k>ERLtq#Zz*gAGWo$}GG$(N4UcIm^? z)lB)#Q&6R7X)nZdLA^Fwyn*-m#|LrD@>YAlwB7u%+q}VDfA-1x678G+@8&=H=O*qS z&&hb>L+@!`o0>b`|MOxQ_^Q9zNY|IvvRdc!ZTYph|9Un1juJh==jT~C94y|{-~62O zr}Zh@zMA)m#k=i(Z`oQVwlY`q!=pPaoD=4L&apZFKIXZ|isN>j>Xx3cW}?*7etS=>^}nDe-vwc&9E;{%I028%v%hQ7xLuHT6rmd?&S z^TZZb%?~R~-6|;_J3qJM`~N_j1AK~yoq8r4m-wW3bfqY3hVHm2woUS1T8-bYiJbzo zTO1XnbQW*unJ0HY!*`+Pu}4ccTrPGG#kFN(Yy>b6ZQNPUPmVpHr5JqV%p{?6o|gJMtqthe68;i#2^TKz(GNwuhHtao{7&m49^Tic`wG8&b<BnLPAw!7X~Q)g%WoU=O4 zPI<)KQ<^Lev zC&7gww6@{huNI@8_e`!|8P#43e**dkVcx0N%nSC~E$rDJqEak7A(n?S__~G22WQ%mvv4FO#mwvBXs}( delta 205 zcmZ3+_=8cgGr-TCmrII^fq{Y7)59eQNIQTq2Q!eIyS?$vL`4Nvo&cW^*Qc*O&RTOK zrE(@vLbdB|Nnmm2d$M~CfZ3q2Q zAuor<3qH-3)m*w;35U7#LU?7TEFI#I4KQTP`p6NB`iw4^!KKE@1F<^>bP0l+XkK DXbwz$ diff --git a/Resources/Textures/Structures/Doors/Windoors/clockwork_windoor.rsi/opening.png b/Resources/Textures/Structures/Doors/Windoors/clockwork_windoor.rsi/opening.png index adb6efa18da6d9fa62264f33bcfc907a7c4a485f..59bca566fa3260623b8c05bdfa17bf2d3067239f 100644 GIT binary patch delta 546 zcmZpbTFYYB8Q|y6%O%Cdz`(%k>ERLtq#J`LGDfr>(0r%1aer? z9eo`c7&i8E|4C$>s3=~~pc~*5;tG_RozK3pTUAw*O-G)?T9v^@jUm{aA;f|q$(bS9 zg`p~pp*kF-W@Wv!ifaqVLgtbnzhH(13!0YSz7Mpe%G1R$B;xSfX@-7>9RysL-{7{` zI(x|jfe<|b*C*Zzty5EXwkj`ZSh15KP$Y8Mk_B5*T{WU!)K9cvYCm9YTz|bo`%V6& zpUg-Jnn+K+};H#%iO=0sy01+^ycVZ?&^a* zt^$!PXTE&+xyn4EK6Ul8=L$BT_*v2pf<#mHHz(}Ouv=rmt<JKeg!R&80kz1$&zl_Fn(1Abzmnr~RqQm2;dga7XtGOu50YaNtk7!_LMB z8haWa2>ov4syb88G378X+rtXxH|zol|C|@t2pgPd*(JZAW5$0CB?%@2mO}drW^F&$ h$1*uHv>o`Y|9fS~+pV_!wZM2`@O1TaS?83{1OS_m;Bo)} literal 3333 zcmb_fcT|(v68~Z(K`B8|s^kmq3cJcm5kYC8t%4}U6%khq1{F{ge1Nbk$w%AJL|70( zI?4(HQdNXN0@5r zc8%=-04O***q@fpE#F8MAstVT1|X%=wjc-3U;t2T|36^N*%#+uMJ7wtQ!-84h1nno@X8`fY2i!>$Aw z|3$)d0K(A~K5v!#w#vu{sUJw@WOR`Gz0sGD8z0`i99sRH5*#sIs1LEi~*_ za|&+MmToA&qB=(C?4{#om(564Vx6!|!;rQ5(0Z+y&GZ-jJxjv*QB8U+7;w{kgIV=H z@HwY#YAvUK7ACnZV#D$Tp1dW_M)D#fzXu(m3FVQO)cE|7S0i_eQm9E}e|awvVKmfd zej1#v)UbPq^?b-+u6BGyPWJurmH(xad2B@ycO+9J8te&}e)3*|Y#ltXsJX!+=7|Mg zgH`*fvlE(7&Z$-O1&E7f4D%O9d4^3v2gzeuVw2@*wa(SBTa2zqI=+;eLOw#09+_f} zMSMn=2^WsG@O*3KvL?L6483L>Puc7ixfEowT;kJx_WJUHGOkz*F7> zO+|-HVmlwb+94Z+navrAb1ar@^8WZF+ICyPVIm?k9j*GzGEWPbEJrXVym#p=WO+o6KsWrpt@9o5soHec8xml~k*$Y0BTE>|Wu!mByWOVVFZqTB>*TIRB+ zvP`ig9f%&9YA7NM*>n+BNbfKJVOaA#5V#^!jT)lRH-^TlZ z1S+)j-p;&*R)l4Ob-{`Xp1pUHQvEtX@IZC*>%!h8=tBdP47Nfe( zvK=vtSn{jy*n zVJze}{>qg-(1_tCw_ZIa5b9S;BywPzn@(ZuozH&_{NXXp?2Q{=(52pHAYmKIZ)~W? z@BpO|1EAel9xzmZTc2zLl=}ZG_EfnTAYd6@9_3GN5H^bnf~z!QHc?cRwchE^pfx4Y zq}WI`RpTf3wa@RFZBFXsA}P#ViI3-XUp`$z85En4F^A7L4#eRCO5tNXLx<`_B0gtW z47lgv8~18LnS6F_(Y>eup*sB^mfDi7 zA~dlzPCig%(PUm&u=#a2`0!9%*V5{tp9!smFD?~H;))Z-H7BGS4AoA9<5Y;YgM9yB z?C!<7`ez>w?qZC`4aBjSR%WEJ^H@F{6M2M{>hH$W+N!juY&T?6jWiPs)Pivl`j%87 z!gW@1*(@M$%c4anksB9;P8cgN9_-3I%B2wSIn25k9Z9NHjh)EuPlcmrAwqE449jJB zpbPAix@~1%%0VqD3;19yv4J2ALggjA4p7ODs}u*Q$hU&G(Xp0lD(Y@>b?;c|pG0qO zRi@w&qT{0M_Bj_CZ0KA8WdJ*5iy5+R6fBu0k4-cPdW*Urt;f`o3SgKnbS~VnYDP!{;MPsQ)Wb;9lB83b z-FFp;-|qA5DOWpBraa5j2Z#@2npjU5e~2~&+7Hy6YE$`F*_zI1oc6c&lnU z`?qR~EQD4$+f(Zl?6TCv5BDBO>LVQ7Vj2M>pna?RH(^*Ji;`3zldbWg4M_EI@dDKU zE{0n#RlI}jMDl>!<8$-YWUSpo>Gk$IBt$$tTJELt*E<@Z#EM;}xiWmECTur+OF4%C z`;10F`xC&HmW=VbHdpWeL>K<4Pu8O2z0JD@)N1 z!5|HG@e<*8e&F#Tu*Ec|!o@}MN4x;OIp;o9Qi3f6S?hjw?!#cqk2|gt!sUo3d7kSr zWn%d<24FZ8N4LJ_bDkgsGN!6mL>ydyM_AMgA@B8t4zVm#w^f_j#z?A51UZwQ?$HKo z3ok^cv)Sc&0ZzSKx(A7~nDWTzLXDY$Np$L9l-)oHjox`b*)=K4Ntx8yeOw#=Qx7xe zlW9wDsZ69MCSgYg5Cs3eX4(=M1suDxjv_I|^8e8{uwe1ccCt0e@6ebzMQ!=Q8v}|_ z_$8%jO@zVC?p(M*9hTN zoQidmSmTV0E1G-_z*nHEqMA0(f>>*SBR*xC#I^LvPt3Odz>$9k0OzZPndY;(BkQ`0zRq7C zpEP#fb@}{>Yo(8adUby>^((^XvojJ4%q_zC3#bJbOqcO)L=e-FF*FzRYNMrL!K-A8 zh#SY%Rhltss7dVG=f8@fmyI67inOIg*xUjAC2Mcm>c{iFE|3HC`_8*#ifPEB*GeIQ z=;TtJ2DcyVD?nhNZkeN%KG_cY7x*M1-;Spo(i`K-d`T6I8;e@f&i-h}U(n|Sj`gkR zZh%)kiUT&x1D^%@oppJFb*2s--))N(f0@!-e3S`pJ$Qa!(*pJ(@k0IlMC0xu)_u{Z z8NbYAWKxE=g`Wj%^?N_%zLYR>xyJ+1ut?4pE9pRJWXI~|H*wwKg-L}80Rg{3@d%9~ zH1m`g@5CyqbXtOl=Gu-Pk2HY8!vuA4?6HeEQq^(_}@lLjai0i@My(KFjo(t)afipd! z&h>f-X|PuHDM~S3`MY#%|EjDo%Iv|+mtgN>TUS&M&gVxBFAV=3tLT}k7_{?3japfV zqyE0+gVBG-s_>ZEer|MxLTGN@V~ZDoQpI9wi1tZl9gAN1k!RPBB~;fNiF##X#MMNO z2o`^%djpAiX*dB!ej-U(|3^!x$fwmgB&%e{*Qv3Uw1dPw9C#DQ3FToMQ8$mme8aE* z;p4zG%{hFw@jLrJo?`*o7az6OZ_NgvKE`EC#rtn&IQ)-|`t5}8pEwHOlY&>P$$B>B zHmz$;!J<)#U)5*_u(Lpq4|j-DdP=JtEVLE|UU*MYN|&4{J_aP*Nb6nu+@bG|nd}M` z-c_2g9|3`mTGEak7A(n?S__~G22WQ%mvv4FO#meCBWeHu literal 491 zcmeAS@N?(olHy`uVBq!ia0vp^2SAvE8Azrw%`pX1jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCikh0(?STXRSGrQaSVKtB*i|k3Y*CKFptSlz#%Ze!q{;-`{*Z`}^P9U)B5gAFRJHqc5}}3!lvI6;>1s;*b3=DjSL74G){)!Z!;6_gu$B+p3WC_;A2_ijBfd*V|2Q|Q)0}Zoh z|E||4esI8tjZMV;!qvbR)BaDNytx0VmzS49_rKRKU;bq`n&BYUY}nCzAmRE&CgT%~ zy2b_u47WP3Cf%}DFj(ECsIq;U;^I`X=H<)9n>TOPj?HBI-BH5!dO}Luj8k!Jl9G~a zqN%C7E}8H$N*r6>x3KK0X4^Dgb;(uJ-yD~6-*Sv6Zr(f||9Liv7BxQ%!dSN)<>6t_ X4Z9^E9__IM=y(QCS3j3^P6nsP4tV*6?7=~dOhG9|wuf?;zCyxhDRT*=m(a14MQvZ~tCf!VvJ4R6w(Zb}UF;1rcDrU3uzceVN<|+(zJ14|`}*Z*{IH|hXvnwVIF2%> zAJ_qmIGlHGBtL*9E0o@)|N+ z>S@|N-rPLAhdhCdG3p&UuvC8stuP-7A=ep{YAM^0;gaWcIvrdL?ju8_tRPe4NhjPx zgv;x2h1qB{QK?iwecTu7^_#f7v?P0-hoMTQ!1nfw90k7~PGj5lXoWdW=B5;&%mdaF zJZxN$raVBo3CigZ>@PB1tnal!F zSOKg6Rsbu26~GE$1+W5G0jz+GD!lvI6;>1s;*b3=DinK$vl=HlH+5P_o1|q9iy!t)x7$D3u`~F*C13&(AeP!Bo#s z&(KJi(Y*wyXh&*2!0mNL8ovaHWW=#XKL4XNp zG80&3kfjBX1=VF}U;vVhRoWD?@{rUGAXCcI#W5tp{p~?UkTFdP|JUbvH~?7(c1j5- WFfh)o@N@?97(8A5T-G@yGywoz>OO-2 delta 102 zcmaFIG>K8MGr-TCmrII^fq{Y7)59eQNIQTq2OE%Fm05UiqN1sdx~Gd{NJZS+gN(dD m(L)Qq`{(kRD*&0u;6V(pg98I2cd?%=NZ8ZW&t;ucLK6UEz7>xE diff --git a/Resources/Textures/Structures/Doors/Windoors/plasma.rsi/meta.json b/Resources/Textures/Structures/Doors/Windoors/plasma.rsi/meta.json index f8ce184aec..f6ea4bb175 100644 --- a/Resources/Textures/Structures/Doors/Windoors/plasma.rsi/meta.json +++ b/Resources/Textures/Structures/Doors/Windoors/plasma.rsi/meta.json @@ -2,7 +2,7 @@ "version":1, "license":"CC-BY-SA-3.0", "copyright":"Taken from tgstation at https://github.com/tgstation/tgstation/blob/3681006d7102045e334e8eddb23a8685fcdb258a/icons/obj/doors/windoor.dmi, edited by SphiraI(github)", - "size": { + "size":{ "x":32, "y":32 }, @@ -12,16 +12,20 @@ "directions":4, "delays":[ [ - 0.3,0.3 + 0.3, + 0.3 ], [ - 0.3,0.3 + 0.3, + 0.3 ], [ - 0.3,0.3 + 0.3, + 0.3 ], [ - 0.3,0.3 + 0.3, + 0.3 ] ] }, @@ -38,16 +42,40 @@ "directions":4, "delays":[ [ - 0.1,0.1,0.1,0.1,0.1,0.1,0.1 + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 ], [ - 0.1,0.1,0.1,0.1,0.1,0.1,0.1 + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 ], [ - 0.1,0.1,0.1,0.1,0.1,0.1,0.1 + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 ], [ - 0.1,0.1,0.1,0.1,0.1,0.1,0.1 + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 ] ] }, @@ -56,16 +84,41 @@ "directions":4, "delays":[ [ - 0.1,0.1,0.1,0.1,0.1,0.1,0.1 + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 ], [ - 0.1,0.1,0.1,0.1,0.1,0.1,0.1 + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 ], [ - 0.1,0.1,0.1,0.1,0.1,0.1,0.1 + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 ], [ - 0.1,0.1,0.1,0.1,0.1,0.1,0.1] + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ] ] }, { @@ -81,16 +134,40 @@ "directions":4, "delays":[ [ - 0.1,0.1,0.1,0.1,0.1,0.1,0.1 + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 ], [ - 0.1,0.1,0.1,0.1,0.1,0.1,0.1 + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 ], [ - 0.1,0.1,0.1,0.1,0.1,0.1,0.1 + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 ], [ - 0.1,0.1,0.1,0.1,0.1,0.1,0.1 + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 ] ] }, @@ -99,16 +176,40 @@ "directions":4, "delays":[ [ - 0.1,0.1,0.1,0.1,0.1,0.1,0.1 + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 ], [ - 0.1,0.1,0.1,0.1,0.1,0.1,0.1 + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 ], [ - 0.1,0.1,0.1,0.1,0.1,0.1,0.1 + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 ], [ - 0.1,0.1,0.1,0.1,0.1,0.1,0.1 + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 ] ] }, @@ -117,16 +218,24 @@ "directions":4, "delays":[ [ - 0.1,0.2,0.1 + 0.1, + 0.2, + 0.1 ], [ - 0.1,0.2,0.1 + 0.1, + 0.2, + 0.1 ], [ - 0.1,0.2,0.1 + 0.1, + 0.2, + 0.1 ], [ - 0.1,0.2,0.1 + 0.1, + 0.2, + 0.1 ] ] }, @@ -135,16 +244,36 @@ "directions":4, "delays":[ [ - 0.1,0.1,0.1,0.1,0.1,0.1 + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 ], [ - 0.1,0.1,0.1,0.1,0.1,0.1 + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 ], [ - 0.1,0.1,0.1,0.1,0.1,0.1 + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 ], [ - 0.1,0.1,0.1,0.1,0.1,0.1 + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 ] ] }, @@ -157,16 +286,14 @@ "directions":4 }, { - "name":"welded", - "directions":4 + "name":"welded" }, { - "name":"secure_underlay", - "directions":4 + "name":"secure_underlay" }, { - "name": "emergency_unlit", - "directions": 4 + "name":"emergency_unlit", + "directions":4 } ] } diff --git a/Resources/Textures/Structures/Doors/Windoors/plasma.rsi/secure_underlay.png b/Resources/Textures/Structures/Doors/Windoors/plasma.rsi/secure_underlay.png index e574e9a12c6ed1447822772b593909488b05bd67..afbf8a174f7824d1666b706b844a4a0cf0f9188f 100644 GIT binary patch literal 202 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfv#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6;>1s;*b3=DjSL74G){)!Z!phSRAh%1o(&%hufBcr0Mtf{H#?Ck34>Gl8b zai>=k&4F@EB|(0{3`{fTt`Pz9bUj@hLp07OCrGe5vl?(6VwkZyu7ykT&;^F(iIXP_ n8aadsa)mV}vRx5loZ-uGxL%Td4>R`+phgByS3j3^P6Px$mPtfGRCt{2nlX;TFc3w*5hOHpTN(w?puNLVp*;epq+bp|!4Xz8h=|nNq#;4X zTY*@K01|j6i~nn^Xd=ZPe}6|F8~igI(9-V1Q?b@McUU@iSUPL1lYTbZ37AYiT@-at zmV0QlZS4f4n>BVtfnKkNJkL*UH;%C@3h%9Y0+PYd+YBGM_MSSydw?%4?G^^8H2Oja zA%qY@2qA2u zyMO_zM|TYET|&%&thH`5dPllhBN+^_T74tSGIJ~D8?nm<+jNE~>R?wCh@uX*>FlnU zZ$xifl;s}XI6fKVVzKzCi%B7p00*@C$@I@G_me3;#^blTm=vlCxHsmL#(IF%Whg2@ z>OfWQ@ST-S9T zP#5!!NCM7_AJ=C2r4>LA06l>J0YNL^(mFRlWq_(KCebfd1)LW@US0uB^?+YA!ueVa Sdh8ki0000!lvI6;>1s;*b3=DjSL74G){)!Z!pk#?_L`iUdT1k0gQ7S_~VrE{6o}X)of~lUN zo}rO2qk9QZ(T>yz&ooa@Ed~xChm}E!k(GfF$npYWX($`y91TWhus9QtZOF*PAPA(R zfHFtCa^QG0M!^685=MzfS3!?!@2-s)-)g+1eky( zF@aSESy}*DP+f)w1|Zp+%V$kJxt%*6$dvMQaSVxYe|wM-WK5I7|Mhtu4nWp{ol*h{ V42*LtJe`3&22WQ%mvv4FO#r^0K6L;9 literal 109 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|)ID7sLn`LH rJ;=xlwOr9UK@K`#+rw1POb(`njxgN@xNA?@buF diff --git a/Resources/Textures/Structures/Doors/Windoors/uranium.rsi/meta.json b/Resources/Textures/Structures/Doors/Windoors/uranium.rsi/meta.json index f8ce184aec..f6ea4bb175 100644 --- a/Resources/Textures/Structures/Doors/Windoors/uranium.rsi/meta.json +++ b/Resources/Textures/Structures/Doors/Windoors/uranium.rsi/meta.json @@ -2,7 +2,7 @@ "version":1, "license":"CC-BY-SA-3.0", "copyright":"Taken from tgstation at https://github.com/tgstation/tgstation/blob/3681006d7102045e334e8eddb23a8685fcdb258a/icons/obj/doors/windoor.dmi, edited by SphiraI(github)", - "size": { + "size":{ "x":32, "y":32 }, @@ -12,16 +12,20 @@ "directions":4, "delays":[ [ - 0.3,0.3 + 0.3, + 0.3 ], [ - 0.3,0.3 + 0.3, + 0.3 ], [ - 0.3,0.3 + 0.3, + 0.3 ], [ - 0.3,0.3 + 0.3, + 0.3 ] ] }, @@ -38,16 +42,40 @@ "directions":4, "delays":[ [ - 0.1,0.1,0.1,0.1,0.1,0.1,0.1 + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 ], [ - 0.1,0.1,0.1,0.1,0.1,0.1,0.1 + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 ], [ - 0.1,0.1,0.1,0.1,0.1,0.1,0.1 + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 ], [ - 0.1,0.1,0.1,0.1,0.1,0.1,0.1 + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 ] ] }, @@ -56,16 +84,41 @@ "directions":4, "delays":[ [ - 0.1,0.1,0.1,0.1,0.1,0.1,0.1 + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 ], [ - 0.1,0.1,0.1,0.1,0.1,0.1,0.1 + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 ], [ - 0.1,0.1,0.1,0.1,0.1,0.1,0.1 + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 ], [ - 0.1,0.1,0.1,0.1,0.1,0.1,0.1] + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ] ] }, { @@ -81,16 +134,40 @@ "directions":4, "delays":[ [ - 0.1,0.1,0.1,0.1,0.1,0.1,0.1 + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 ], [ - 0.1,0.1,0.1,0.1,0.1,0.1,0.1 + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 ], [ - 0.1,0.1,0.1,0.1,0.1,0.1,0.1 + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 ], [ - 0.1,0.1,0.1,0.1,0.1,0.1,0.1 + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 ] ] }, @@ -99,16 +176,40 @@ "directions":4, "delays":[ [ - 0.1,0.1,0.1,0.1,0.1,0.1,0.1 + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 ], [ - 0.1,0.1,0.1,0.1,0.1,0.1,0.1 + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 ], [ - 0.1,0.1,0.1,0.1,0.1,0.1,0.1 + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 ], [ - 0.1,0.1,0.1,0.1,0.1,0.1,0.1 + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 ] ] }, @@ -117,16 +218,24 @@ "directions":4, "delays":[ [ - 0.1,0.2,0.1 + 0.1, + 0.2, + 0.1 ], [ - 0.1,0.2,0.1 + 0.1, + 0.2, + 0.1 ], [ - 0.1,0.2,0.1 + 0.1, + 0.2, + 0.1 ], [ - 0.1,0.2,0.1 + 0.1, + 0.2, + 0.1 ] ] }, @@ -135,16 +244,36 @@ "directions":4, "delays":[ [ - 0.1,0.1,0.1,0.1,0.1,0.1 + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 ], [ - 0.1,0.1,0.1,0.1,0.1,0.1 + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 ], [ - 0.1,0.1,0.1,0.1,0.1,0.1 + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 ], [ - 0.1,0.1,0.1,0.1,0.1,0.1 + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 ] ] }, @@ -157,16 +286,14 @@ "directions":4 }, { - "name":"welded", - "directions":4 + "name":"welded" }, { - "name":"secure_underlay", - "directions":4 + "name":"secure_underlay" }, { - "name": "emergency_unlit", - "directions": 4 + "name":"emergency_unlit", + "directions":4 } ] } diff --git a/Resources/Textures/Structures/Doors/Windoors/uranium.rsi/secure_underlay.png b/Resources/Textures/Structures/Doors/Windoors/uranium.rsi/secure_underlay.png index e574e9a12c6ed1447822772b593909488b05bd67..afbf8a174f7824d1666b706b844a4a0cf0f9188f 100644 GIT binary patch literal 202 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfv#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6;>1s;*b3=DjSL74G){)!Z!phSRAh%1o(&%hufBcr0Mtf{H#?Ck34>Gl8b zai>=k&4F@EB|(0{3`{fTt`Pz9bUj@hLp07OCrGe5vl?(6VwkZyu7ykT&;^F(iIXP_ n8aadsa)mV}vRx5loZ-uGxL%Td4>R`+phgByS3j3^P6Px$mPtfGRCt{2nlX;TFc3w*5hOHpTN(w?puNLVp*;epq+bp|!4Xz8h=|nNq#;4X zTY*@K01|j6i~nn^Xd=ZPe}6|F8~igI(9-V1Q?b@McUU@iSUPL1lYTbZ37AYiT@-at zmV0QlZS4f4n>BVtfnKkNJkL*UH;%C@3h%9Y0+PYd+YBGM_MSSydw?%4?G^^8H2Oja zA%qY@2qA2u zyMO_zM|TYET|&%&thH`5dPllhBN+^_T74tSGIJ~D8?nm<+jNE~>R?wCh@uX*>FlnU zZ$xifl;s}XI6fKVVzKzCi%B7p00*@C$@I@G_me3;#^blTm=vlCxHsmL#(IF%Whg2@ z>OfWQ@ST-S9T zP#5!!NCM7_AJ=C2r4>LA06l>J0YNL^(mFRlWq_(KCebfd1)LW@US0uB^?+YA!ueVa Sdh8ki0000!lvI6;>1s;*b3=DjSL74G){)!Z!pp>VJV@QPi+k=dZKwgu=|Mhtu4nWp{ol*h{ V42*LtJe`3&22WQ%mvv4FO#p-$AJ_l@ literal 109 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|)ID7sLn`LH rJ;=xlwOr9UK@K`#+rw1POb(`njxgN@xNA?@buF diff --git a/Resources/Textures/Structures/Doors/Windoors/windoor.rsi/meta.json b/Resources/Textures/Structures/Doors/Windoors/windoor.rsi/meta.json index 66954b6662..d469c0df21 100644 --- a/Resources/Textures/Structures/Doors/Windoors/windoor.rsi/meta.json +++ b/Resources/Textures/Structures/Doors/Windoors/windoor.rsi/meta.json @@ -2,7 +2,7 @@ "version":1, "license":"CC-BY-SA-3.0", "copyright":"Taken from tgstation at https://github.com/tgstation/tgstation/blob/3681006d7102045e334e8eddb23a8685fcdb258a/icons/obj/doors/windoor.dmi", - "size": { + "size":{ "x":32, "y":32 }, @@ -12,16 +12,20 @@ "directions":4, "delays":[ [ - 0.3,0.3 + 0.3, + 0.3 ], [ - 0.3,0.3 + 0.3, + 0.3 ], [ - 0.3,0.3 + 0.3, + 0.3 ], [ - 0.3,0.3 + 0.3, + 0.3 ] ] }, @@ -38,16 +42,40 @@ "directions":4, "delays":[ [ - 0.1,0.1,0.1,0.1,0.1,0.1,0.1 + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 ], [ - 0.1,0.1,0.1,0.1,0.1,0.1,0.1 + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 ], [ - 0.1,0.1,0.1,0.1,0.1,0.1,0.1 + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 ], [ - 0.1,0.1,0.1,0.1,0.1,0.1,0.1 + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 ] ] }, @@ -56,16 +84,41 @@ "directions":4, "delays":[ [ - 0.1,0.1,0.1,0.1,0.1,0.1,0.1 + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 ], [ - 0.1,0.1,0.1,0.1,0.1,0.1,0.1 + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 ], [ - 0.1,0.1,0.1,0.1,0.1,0.1,0.1 + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 ], [ - 0.1,0.1,0.1,0.1,0.1,0.1,0.1] + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ] ] }, { @@ -81,16 +134,40 @@ "directions":4, "delays":[ [ - 0.1,0.1,0.1,0.1,0.1,0.1,0.1 + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 ], [ - 0.1,0.1,0.1,0.1,0.1,0.1,0.1 + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 ], [ - 0.1,0.1,0.1,0.1,0.1,0.1,0.1 + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 ], [ - 0.1,0.1,0.1,0.1,0.1,0.1,0.1 + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 ] ] }, @@ -99,16 +176,40 @@ "directions":4, "delays":[ [ - 0.1,0.1,0.1,0.1,0.1,0.1,0.1 + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 ], [ - 0.1,0.1,0.1,0.1,0.1,0.1,0.1 + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 ], [ - 0.1,0.1,0.1,0.1,0.1,0.1,0.1 + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 ], [ - 0.1,0.1,0.1,0.1,0.1,0.1,0.1 + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 ] ] }, @@ -117,16 +218,24 @@ "directions":4, "delays":[ [ - 0.1,0.2,0.1 + 0.1, + 0.2, + 0.1 ], [ - 0.1,0.2,0.1 + 0.1, + 0.2, + 0.1 ], [ - 0.1,0.2,0.1 + 0.1, + 0.2, + 0.1 ], [ - 0.1,0.2,0.1 + 0.1, + 0.2, + 0.1 ] ] }, @@ -135,16 +244,36 @@ "directions":4, "delays":[ [ - 0.1,0.1,0.1,0.1,0.1,0.1 + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 ], [ - 0.1,0.1,0.1,0.1,0.1,0.1 + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 ], [ - 0.1,0.1,0.1,0.1,0.1,0.1 + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 ], [ - 0.1,0.1,0.1,0.1,0.1,0.1 + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 ] ] }, @@ -157,16 +286,14 @@ "directions":4 }, { - "name":"welded", - "directions":4 + "name":"welded" }, { - "name":"secure_underlay", - "directions":4 + "name":"secure_underlay" }, { - "name": "emergency_unlit", - "directions": 4 + "name":"emergency_unlit", + "directions":4 } ] } diff --git a/Resources/Textures/Structures/Doors/Windoors/windoor.rsi/secure_underlay.png b/Resources/Textures/Structures/Doors/Windoors/windoor.rsi/secure_underlay.png index e574e9a12c6ed1447822772b593909488b05bd67..afbf8a174f7824d1666b706b844a4a0cf0f9188f 100644 GIT binary patch literal 202 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfv#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6;>1s;*b3=DjSL74G){)!Z!phSRAh%1o(&%hufBcr0Mtf{H#?Ck34>Gl8b zai>=k&4F@EB|(0{3`{fTt`Pz9bUj@hLp07OCrGe5vl?(6VwkZyu7ykT&;^F(iIXP_ n8aadsa)mV}vRx5loZ-uGxL%Td4>R`+phgByS3j3^P6Px$mPtfGRCt{2nlX;TFc3w*5hOHpTN(w?puNLVp*;epq+bp|!4Xz8h=|nNq#;4X zTY*@K01|j6i~nn^Xd=ZPe}6|F8~igI(9-V1Q?b@McUU@iSUPL1lYTbZ37AYiT@-at zmV0QlZS4f4n>BVtfnKkNJkL*UH;%C@3h%9Y0+PYd+YBGM_MSSydw?%4?G^^8H2Oja zA%qY@2qA2u zyMO_zM|TYET|&%&thH`5dPllhBN+^_T74tSGIJ~D8?nm<+jNE~>R?wCh@uX*>FlnU zZ$xifl;s}XI6fKVVzKzCi%B7p00*@C$@I@G_me3;#^blTm=vlCxHsmL#(IF%Whg2@ z>OfWQ@ST-S9T zP#5!!NCM7_AJ=C2r4>LA06l>J0YNL^(mFRlWq_(KCebfd1)LW@US0uB^?+YA!ueVa Sdh8ki0000!lvI6;>1s;*b3=DjSL74G){)!Z!pp>VJV@QPi+k=dZKwgu=|Mhtu4nWp{ol*h{ V42*LtJe`3&22WQ%mvv4FO#p-$AJ_l@ literal 109 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|)ID7sLn`LH rJ;=xlwOr9UK@K`#+rw1POb(`njxgN@xNA?@buF diff --git a/Resources/Textures/Structures/Doors/edge_door_hazard.rsi/closed.png b/Resources/Textures/Structures/Doors/edge_door_hazard.rsi/closed.png index 8968f68da9af508d6aa6a87ce737d82803197ad2..71044ccdac0b608dc4e14e34fdfd5b2ee0aa3000 100644 GIT binary patch literal 321 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyjKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucL7M=d5LX}#1iZYw;^N}6va;&x>iYWnAt538 z`6&(c^rY8Tncic#=zk9hWKn|Npu-c2B}1{&SPI=s09LSA2ZLulRY%PeH4* zpKSBj>aJXJRK$p<&e`HJ#|eX!X$LaZ6;>UxoMrLd_H8Hg^vMEerRP5GeW~+?ujIkFCm@+j0(ik{TLrdld#$al-cTm&tv%4DUY2Efwry`} z%}^%nwYIi;wrzV2!KqpuuItj<(?jBrA!U|jVObV4V~xy=H4=$Lq%0DN_~ZbNIHP$I9)S9z{OLKtIFqhud+}q z2B_gHAkKik&d{dzv2EL)Wm#J~H~Kn5@(d_%yc(f01b+Ty`CvXj+D&ZjL|<4t(SPb5 zmG6K2*+Cq~;qTiE8(wq$sy`Ig+yJoN2un}(M5kDlJV47Is-uoN>ZqfRI_jvSjyme7 zW1GW(ce@-7zez)4e@7G1Xq3rcA8c@q2h1>#E4QUZ_<`lM^nLRS{-44bUMvIF3<4U`yA~k4~qt~UF%NtOuHCP zKIHU;0|4B)vbe!DFn;?v{kg-W)1^>YYgEkx#3=b~kEnrdmj`Hn0O97Y>q?n8Cxihu z!qEk-!%^W`xm=Fko*ua^hDSz7r_-=DpMM=krxCOoKy0h8kImB-yF~M1i22wmEhjw& za(R&rlF#S){^UO-6pnf91vjQkoY~n~osX#xsZ{Ev(Pj9o;iXb3FO^Dp!)J|`MvGJ` zRr5%(WejD)-pXVt#g0TGzOXqn*60mo!ro9O?9Gfd`ciAbTbT?A18RfT`vGcIdHKu= zuItKFTfk8`(>KGugRt^5bRf_R5+W@YSXv9W0!D+uqpZ8m2s)wN0Ov=$fpXy_lBU6I zm&_3cvt0lj?S2nH7EfZWPG~nkEZPE;;<{Q}#G)-SK~gzt@g?Lsq1^y#)n}Tf{4Y1f zX@PVGtFgb^|Oqb3i!?sB+-}f^+A};yR9Q zXg7e`LsU=rO#3zI0cy3Va@4iD5Lg%#`+9uznUo0+5U7j-K_CzV*tQL@uEV63$+m5; zixfdXy8*;qKJZ6@*0{fR7_`1~nw=f_4KqjzghP@I?X3vWP~b<-7c^;OK^S z1BhFkY7`K6{DlXI>~MVanUA9mTy!DuTEKN(S>LN?fXV>^>j4C20I{z(5(UJ7B?tso z3{{@+gV`?W0iqbHa9$M#JvS=2rLYW6W)7K*2k%m2kfX?pi(*0H2Lt;=koVx#ruUq!50Opea72{*2&O7 z?l4gLF0i;8ATWOWIRg_P0j00A3aC8s1t++t?HRQiAdyHgkb}O?Y1)o7(EKFC{O(oq ze|hw;O^E^eCtxTuL*kGjITL@rkdx$l_x`5_n3|d*nN0HY-9>s2Dud5kBfk3q$z+lr oZY|QgPvP7h3FHpJJ3k)(51VRju0pN1f&c&j07*qoM6N<$f`noH*#H0l diff --git a/Resources/Textures/Structures/Doors/edge_door_hazard.rsi/closed_unlit.png b/Resources/Textures/Structures/Doors/edge_door_hazard.rsi/closed_unlit.png index 0858c19f0521b74f4a058fbddc280ea48a5751bb..2a951fd0e6d03e2ff1872fc3c24e649c1ba46db0 100644 GIT binary patch literal 366 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6;>1s;*b3=DjSL74G){)!Z!pk#?_L`iUdT1k0gQ7S_~VrE{6o}X)of~lUN zo}rO2qk9QZ(T>yz&ooa@Ed~xChm}E!k(GfF$npYWX($`y91TWhus9QtZOF*PAPA(R zfHFtCa^QG0M!^685=MzfS3!?!@2-s)-)g+1eky( zF@aSESy}*DP+f)w1|Zp+%V$kJxt%*6$dvMQaSVxYe|wM-WK5I7|Mhtu4nWp{ol*h{ V42*LtJe`3&22WQ%mvv4FO#r^0K6L;9 literal 96 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=>Ygr+Ar*7p9%SSN@(wNd?w`wN fz5vKX1`XxR4h{^A{hv+-f`mO?{an^LB{Ts5qcarg diff --git a/Resources/Textures/Structures/Doors/edge_door_hazard.rsi/closing.png b/Resources/Textures/Structures/Doors/edge_door_hazard.rsi/closing.png index 689f02afa23c5884dfa043dcd27483ae2b35fabe..2f954bac2b762e035595dccb3a36eb29f9aac5e6 100644 GIT binary patch literal 565 zcmeAS@N?(olHy`uVBq!ia0vp^2|(Nn{1`ISV`@iy0XB4ude`@%$AjKtY=TpAc6d4FtTryyD{Gva+)3>gxLX`XM19 z`S~dg_4QrR%-zwILroyIaZmGQs?)+?)6uC8Id)x`1r0&}q31}UIs#*!evUi}>Wf!l2vAan*x6<_){$;iO(tE;B+wgreH!S{FxcQ0H=lgRK zw$yVxWl_BI-G6I|QyrU0p2N#N&Y10t_X{8Dl()}ZzCAikWlh0{%DMi6_59ysay~as@AImi%^%e$>!$~NB z?>L!ty7_Z}LZ@mRTBdjGZ?9fA^-IpVKCezA_9=bMQW~EfeSF;h?8*8$Km5|g43nA6 zTW5P5=M^ literal 4048 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 diff --git a/Resources/Textures/Structures/Doors/edge_door_hazard.rsi/closing_unlit.png b/Resources/Textures/Structures/Doors/edge_door_hazard.rsi/closing_unlit.png index 92b5018fb9c1c8dff2e5dd4e58eb5d3c95e6c53d..2a951fd0e6d03e2ff1872fc3c24e649c1ba46db0 100644 GIT binary patch literal 366 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6;>1s;*b3=DjSL74G){)!Z!pk#?_L`iUdT1k0gQ7S_~VrE{6o}X)of~lUN zo}rO2qk9QZ(T>yz&ooa@Ed~xChm}E!k(GfF$npYWX($`y91TWhus9QtZOF*PAPA(R zfHFtCa^QG0M!^685=MzfS3!?!@2-s)-)g+1eky( zF@aSESy}*DP+f)w1|Zp+%V$kJxt%*6$dvMQaSVxYe|wM-WK5I7|Mhtu4nWp{ol*h{ V42*LtJe`3&22WQ%mvv4FO#r^0K6L;9 literal 179 zcmeAS@N?(olHy`uVBq!ia0vp^3qY8I4M=vMPuB%fRh}-6Ar*7p9yDYG@(wNd>YvNY ezW~UjHK;I{u%3Z2b-VOxkWHShelF{r5}E*j1{E~` diff --git a/Resources/Textures/Structures/Doors/edge_door_hazard.rsi/deny.png b/Resources/Textures/Structures/Doors/edge_door_hazard.rsi/deny.png index 8968f68da9af508d6aa6a87ce737d82803197ad2..71044ccdac0b608dc4e14e34fdfd5b2ee0aa3000 100644 GIT binary patch literal 321 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyjKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucL7M=d5LX}#1iZYw;^N}6va;&x>iYWnAt538 z`6&(c^rY8Tncic#=zk9hWKn|Npu-c2B}1{&SPI=s09LSA2ZLulRY%PeH4* zpKSBj>aJXJRK$p<&e`HJ#|eX!X$LaZ6;>UxoMrLd_H8Hg^vMEerRP5GeW~+?ujIkFCm@+j0(ik{TLrdld#$al-cTm&tv%4DUY2Efwry`} z%}^%nwYIi;wrzV2!KqpuuItj<(?jBrA!U|jVObV4V~xy=H4=$Lq%0DN_~ZbNIHP$I9)S9z{OLKtIFqhud+}q z2B_gHAkKik&d{dzv2EL)Wm#J~H~Kn5@(d_%yc(f01b+Ty`CvXj+D&ZjL|<4t(SPb5 zmG6K2*+Cq~;qTiE8(wq$sy`Ig+yJoN2un}(M5kDlJV47Is-uoN>ZqfRI_jvSjyme7 zW1GW(ce@-7zez)4e@7G1Xq3rcA8c@q2h1>#E4QUZ_<`lM^nLRS{-44bUMvIF3<4U`yA~k4~qt~UF%NtOuHCP zKIHU;0|4B)vbe!DFn;?v{kg-W)1^>YYgEkx#3=b~kEnrdmj`Hn0O97Y>q?n8Cxihu z!qEk-!%^W`xm=Fko*ua^hDSz7r_-=DpMM=krxCOoKy0h8kImB-yF~M1i22wmEhjw& za(R&rlF#S){^UO-6pnf91vjQkoY~n~osX#xsZ{Ev(Pj9o;iXb3FO^Dp!)J|`MvGJ` zRr5%(WejD)-pXVt#g0TGzOXqn*60mo!ro9O?9Gfd`ciAbTbT?A18RfT`vGcIdHKu= zuItKFTfk8`(>KGugRt^5bRf_R5+W@YSXv9W0!D+uqpZ8m2s)wN0Ov=$fpXy_lBU6I zm&_3cvt0lj?S2nH7EfZWPG~nkEZPE;;<{Q}#G)-SK~gzt@g?Lsq1^y#)n}Tf{4Y1f zX@PVGtFgb^|Oqb3i!?sB+-}f^+A};yR9Q zXg7e`LsU=rO#3zI0cy3Va@4iD5Lg%#`+9uznUo0+5U7j-K_CzV*tQL@uEV63$+m5; zixfdXy8*;qKJZ6@*0{fR7_`1~nw=f_4KqjzghP@I?X3vWP~b<-7c^;OK^S z1BhFkY7`K6{DlXI>~MVanUA9mTy!DuTEKN(S>LN?fXV>^>j4C20I{z(5(UJ7B?tso z3{{@+gV`?W0iqbHa9$M#JvS=2rLYW6W)7K*2k%m2kfX?pi(*0H2Lt;=koVx#ruUq!50Opea72{*2&O7 z?l4gLF0i;8ATWOWIRg_P0j00A3aC8s1t++t?HRQiAdyHgkb}O?Y1)o7(EKFC{O(oq ze|hw;O^E^eCtxTuL*kGjITL@rkdx$l_x`5_n3|d*nN0HY-9>s2Dud5kBfk3q$z+lr oZY|QgPvP7h3FHpJJ3k)(51VRju0pN1f&c&j07*qoM6N<$f`noH*#H0l diff --git a/Resources/Textures/Structures/Doors/edge_door_hazard.rsi/deny_unlit.png b/Resources/Textures/Structures/Doors/edge_door_hazard.rsi/deny_unlit.png index 0858c19f0521b74f4a058fbddc280ea48a5751bb..2a951fd0e6d03e2ff1872fc3c24e649c1ba46db0 100644 GIT binary patch literal 366 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6;>1s;*b3=DjSL74G){)!Z!pk#?_L`iUdT1k0gQ7S_~VrE{6o}X)of~lUN zo}rO2qk9QZ(T>yz&ooa@Ed~xChm}E!k(GfF$npYWX($`y91TWhus9QtZOF*PAPA(R zfHFtCa^QG0M!^685=MzfS3!?!@2-s)-)g+1eky( zF@aSESy}*DP+f)w1|Zp+%V$kJxt%*6$dvMQaSVxYe|wM-WK5I7|Mhtu4nWp{ol*h{ V42*LtJe`3&22WQ%mvv4FO#r^0K6L;9 literal 96 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=>Ygr+Ar*7p9%SSN@(wNd?w`wN fz5vKX1`XxR4h{^A{hv+-f`mO?{an^LB{Ts5qcarg diff --git a/Resources/Textures/Structures/Doors/edge_door_hazard.rsi/locked.png b/Resources/Textures/Structures/Doors/edge_door_hazard.rsi/locked.png index 8968f68da9af508d6aa6a87ce737d82803197ad2..71044ccdac0b608dc4e14e34fdfd5b2ee0aa3000 100644 GIT binary patch literal 321 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyjKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucL7M=d5LX}#1iZYw;^N}6va;&x>iYWnAt538 z`6&(c^rY8Tncic#=zk9hWKn|Npu-c2B}1{&SPI=s09LSA2ZLulRY%PeH4* zpKSBj>aJXJRK$p<&e`HJ#|eX!X$LaZ6;>UxoMrLd_H8Hg^vMEerRP5GeW~+?ujIkFCm@+j0(ik{TLrdld#$al-cTm&tv%4DUY2Efwry`} z%}^%nwYIi;wrzV2!KqpuuItj<(?jBrA!U|jVObV4V~xy=H4=$Lq%0DN_~ZbNIHP$I9)S9z{OLKtIFqhud+}q z2B_gHAkKik&d{dzv2EL)Wm#J~H~Kn5@(d_%yc(f01b+Ty`CvXj+D&ZjL|<4t(SPb5 zmG6K2*+Cq~;qTiE8(wq$sy`Ig+yJoN2un}(M5kDlJV47Is-uoN>ZqfRI_jvSjyme7 zW1GW(ce@-7zez)4e@7G1Xq3rcA8c@q2h1>#E4QUZ_<`lM^nLRS{-44bUMvIF3<4U`yA~k4~qt~UF%NtOuHCP zKIHU;0|4B)vbe!DFn;?v{kg-W)1^>YYgEkx#3=b~kEnrdmj`Hn0O97Y>q?n8Cxihu z!qEk-!%^W`xm=Fko*ua^hDSz7r_-=DpMM=krxCOoKy0h8kImB-yF~M1i22wmEhjw& za(R&rlF#S){^UO-6pnf91vjQkoY~n~osX#xsZ{Ev(Pj9o;iXb3FO^Dp!)J|`MvGJ` zRr5%(WejD)-pXVt#g0TGzOXqn*60mo!ro9O?9Gfd`ciAbTbT?A18RfT`vGcIdHKu= zuItKFTfk8`(>KGugRt^5bRf_R5+W@YSXv9W0!D+uqpZ8m2s)wN0Ov=$fpXy_lBU6I zm&_3cvt0lj?S2nH7EfZWPG~nkEZPE;;<{Q}#G)-SK~gzt@g?Lsq1^y#)n}Tf{4Y1f zX@PVGtFgb^|Oqb3i!?sB+-}f^+A};yR9Q zXg7e`LsU=rO#3zI0cy3Va@4iD5Lg%#`+9uznUo0+5U7j-K_CzV*tQL@uEV63$+m5; zixfdXy8*;qKJZ6@*0{fR7_`1~nw=f_4KqjzghP@I?X3vWP~b<-7c^;OK^S z1BhFkY7`K6{DlXI>~MVanUA9mTy!DuTEKN(S>LN?fXV>^>j4C20I{z(5(UJ7B?tso z3{{@+gV`?W0iqbHa9$M#JvS=2rLYW6W)7K*2k%m2kfX?pi(*0H2Lt;=koVx#ruUq!50Opea72{*2&O7 z?l4gLF0i;8ATWOWIRg_P0j00A3aC8s1t++t?HRQiAdyHgkb}O?Y1)o7(EKFC{O(oq ze|hw;O^E^eCtxTuL*kGjITL@rkdx$l_x`5_n3|d*nN0HY-9>s2Dud5kBfk3q$z+lr oZY|QgPvP7h3FHpJJ3k)(51VRju0pN1f&c&j07*qoM6N<$f`noH*#H0l diff --git a/Resources/Textures/Structures/Doors/edge_door_hazard.rsi/meta.json b/Resources/Textures/Structures/Doors/edge_door_hazard.rsi/meta.json index 45e8a43117..4930e1fdb9 100644 --- a/Resources/Textures/Structures/Doors/edge_door_hazard.rsi/meta.json +++ b/Resources/Textures/Structures/Doors/edge_door_hazard.rsi/meta.json @@ -52,45 +52,17 @@ ] }, { - "name": "bolted_unlit", - "directions": 4 + "name": "bolted_unlit" }, { - "name": "closed", - "directions": 4 + "name": "closed" }, { - "name": "closed_unlit", - "directions": 4 + "name": "closed_unlit" }, { "name": "closing", - "directions": 4, "delays": [ - [ - 0.2, - 0.2, - 0.2, - 0.2, - 0.2, - 0.2 - ], - [ - 0.2, - 0.2, - 0.2, - 0.2, - 0.2, - 0.2 - ], - [ - 0.2, - 0.2, - 0.2, - 0.2, - 0.2, - 0.2 - ], [ 0.2, 0.2, @@ -102,87 +74,23 @@ ] }, { - "name": "closing_unlit", - "directions": 4, - "delays": [ - [ - 0.2, - 0.2, - 0.2, - 0.2, - 0.2, - 0.2 - ], - [ - 0.2, - 0.2, - 0.2, - 0.2, - 0.2, - 0.2 - ], - [ - 0.2, - 0.2, - 0.2, - 0.2, - 0.2, - 0.2 - ], - [ - 0.2, - 0.2, - 0.2, - 0.2, - 0.2, - 0.2 - ] - ] + "name": "closing_unlit" }, { - "name": "deny", - "directions": 4 + "name": "deny" }, { - "name": "deny_unlit", - "directions": 4 + "name": "deny_unlit" }, { - "name": "locked", - "directions": 4 + "name": "locked" }, { - "name": "open", - "directions": 4 + "name": "open" }, { "name": "opening", - "directions": 4, "delays": [ - [ - 0.2, - 0.2, - 0.2, - 0.2, - 0.2, - 0.2 - ], - [ - 0.2, - 0.2, - 0.2, - 0.2, - 0.2, - 0.2 - ], - [ - 0.2, - 0.2, - 0.2, - 0.2, - 0.2, - 0.2 - ], [ 0.2, 0.2, @@ -194,59 +102,11 @@ ] }, { - "name": "opening_unlit", - "directions": 4, - "delays": [ - [ - 0.2, - 0.2, - 0.2, - 0.2, - 0.2, - 0.2 - ], - [ - 0.2, - 0.2, - 0.2, - 0.2, - 0.2, - 0.2 - ], - [ - 0.2, - 0.2, - 0.2, - 0.2, - 0.2, - 0.2 - ], - [ - 0.2, - 0.2, - 0.2, - 0.2, - 0.2, - 0.2 - ] - ] + "name": "opening_unlit" }, { "name": "palert", - "directions": 4, "delays": [ - [ - 0.5, - 0.5 - ], - [ - 0.5, - 0.5 - ], - [ - 0.5, - 0.5 - ], [ 0.5, 0.5 @@ -285,20 +145,16 @@ ] }, { - "name": "welded", - "directions": 4 + "name": "welded" }, { - "name": "welded_open", - "directions": 4 + "name": "welded_open" }, { - "name": "pressure_unlit", - "directions": 4 + "name": "pressure_unlit" }, { - "name": "temperature_unlit", - "directions": 4 + "name": "temperature_unlit" } ] } diff --git a/Resources/Textures/Structures/Doors/edge_door_hazard.rsi/open.png b/Resources/Textures/Structures/Doors/edge_door_hazard.rsi/open.png index 3f0b3ef549d656f987efc3beda0a057b5b8d68e4..018ccc8bb5ba276c709f6701bd4e7c9f5b6d33a2 100644 GIT binary patch literal 246 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfv#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6;>1s;*b3=DjSL74G){)!Z!pn8B$h%1nmm6cUjSJ&6q4+#lrsITveX6}w= zo-$?1>@=3Ssf-6Eu-^nxWW0N h@8#tO3ClW}7#7!w?AFw3*$Fh3!PC{xWt~$(695DINMis1 literal 805 zcmV+=1KRwFP)>n+%otg8B_z^Z?g&0f1EI+6y5B<@0%J zH>}viv>O)X^LY|NkQrCfZOmpf)T&iD1*Jdy22R01ty;xwHUql>0FcRMk$X|HMqbUUzZI~gm$_kCOr zPZ7sK*lt*KIXs2$`v8FWPM$aT_a5;0qQ-~xEB62;i8LCGMx)VaG#ZUYlW+{+gO{U1 z2&z;nMM< z2gp(Kdyl9AB<>!dT!8$mTR-vT(w7G86Qc^HqcOR%!Z1XwT16(C#dI=3(CNr6K)`ZV z|5l7j6O_?S{3p{!m??DBS|Ps>-K5s!mmvsf6|UfF!K# zL_8nBi8g>+05{qIZUNkA1GoinqYdB|z>PM5TL3rO0B!-?Xal$faH9?27Ql@*fLj1J ztUW>Yxfm21Am@SGINI_4KA(|j{)fSc(iPx14q745JRef2Xd?HV!uW8G=#FslcS;NZ z7d@cexFx4xtYUiCi`68#-|s8asMLVLU;x*3@vHlQ+UK>w=T!&3zZ{VR%NgR2s|VCR jt;KXVV^s0s$K!thCswIxxmdO|00000NkvXXu0mjf3_^Fc diff --git a/Resources/Textures/Structures/Doors/edge_door_hazard.rsi/opening.png b/Resources/Textures/Structures/Doors/edge_door_hazard.rsi/opening.png index 7cf50771cdcdd981a02de393cbb2d743446421a2..696dc0197e0ae4ed448fb5b22d9e30aa0c5f4cab 100644 GIT binary patch literal 541 zcmeAS@N?(olHy`uVBq!ia0vp^2|(Nn{1`ISV`@iy0XB4ude`@%$AjKtY=TpAc6d4FtTryyD{Gva+)3>gxLX`XM19 z`S~dg_4QrR%-zwILroyIaZmGQs?)+?)6uC8Id)x`1r0&}q31}UIs#*!evUSd@OfzTS>;h|MA?6>z;FZ)he8|-Tvd~fB$Rh|K)$$ zIIiSx*(olz|JVPIzn=WBw{`sZU0fQdo8Q*R#Lhq9HFM&-nMd=#9<*>?&7b!Azh~_S Y#;MF|&a&r2oI!Es>FVdQ&MBb@0NCZ?L;wH) literal 4020 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 diff --git a/Resources/Textures/Structures/Doors/edge_door_hazard.rsi/opening_unlit.png b/Resources/Textures/Structures/Doors/edge_door_hazard.rsi/opening_unlit.png index 92b5018fb9c1c8dff2e5dd4e58eb5d3c95e6c53d..2a951fd0e6d03e2ff1872fc3c24e649c1ba46db0 100644 GIT binary patch literal 366 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6;>1s;*b3=DjSL74G){)!Z!pk#?_L`iUdT1k0gQ7S_~VrE{6o}X)of~lUN zo}rO2qk9QZ(T>yz&ooa@Ed~xChm}E!k(GfF$npYWX($`y91TWhus9QtZOF*PAPA(R zfHFtCa^QG0M!^685=MzfS3!?!@2-s)-)g+1eky( zF@aSESy}*DP+f)w1|Zp+%V$kJxt%*6$dvMQaSVxYe|wM-WK5I7|Mhtu4nWp{ol*h{ V42*LtJe`3&22WQ%mvv4FO#r^0K6L;9 literal 179 zcmeAS@N?(olHy`uVBq!ia0vp^3qY8I4M=vMPuB%fRh}-6Ar*7p9yDYG@(wNd>YvNY ezW~UjHK;I{u%3Z2b-VOxkWHShelF{r5}E*j1{E~` diff --git a/Resources/Textures/Structures/Doors/edge_door_hazard.rsi/palert.png b/Resources/Textures/Structures/Doors/edge_door_hazard.rsi/palert.png index 3d6343358e2d353eeec4585c162e7de57121782f..02839146fbf37a7fc85a0c895dc658cb35f04ba8 100644 GIT binary patch literal 214 zcmeAS@N?(olHy`uVBq!ia0vp^4nVBH!VDw>HYaZfQjEnx?oJHr&dIz4a#+$GeH|GX zHuiJ>Nn{1`ISV`@iy0XB4ude`@%$AjKtcWhpAc6d{l}2u|4fGeCrbYVfiSN

87{ z$S;_oVYarP1d!+C>Eak-aXL9cf^~6%3zM6pqkyW0MuYFP&PK-*M>sT&u6VQN#DN73 z3mqaDZnC&J^ROyuJTtPoV4Usg;uumf=k2XPzZL_5V;>h) z%O9Sc{)yp-*1lcr26sH>_k2It!!Nqn!#uIIZu8s!-#2**U($0vX)sq!Av4F>Ufz1o zU)kU9O|NcNyit>r4~zPs z@3$E3pW7s#OqINSVfM|F>ec5h*BAMArLs7@SrFI2z5aXm;oWJDotCRz#GZ)UX9PMH z1U5{a{50d##+e%YDp}W8+%{TuU-s3uo|xh)*YFkzMuF~J%`K@J6Iow=kW~nCjThi= zy|6y~(UaF#SHwkgykTH)I2d$a_sT+}8FoC+&81=Q)jSQc$QFY+hjj@l?N?IHSi zjtKK<{sX@Y?^7GbEAyP7#KqOnx!lvI6;>1s;*b3=DjSL74G){)!Z!piqEMh%1o(|NlS3zkfjF@b6#4|NkZx>u&%> znM;EFf*BaJ6wmT<0J(aeE{-7@=aUm8Secn6K5`o@aTZ^KV4muR+kfDl03q?^JrGj0mLtDYBOY)kuLXw7;6e+HPi$lRd zbn$EOKhRZhRS*P45OH+&YmpM~YYHvWzHoDYocGS<~e4piG)!&*t3!UJ6jsGfQ<$- zB;dX;k$K8}H}{x&K_8iATIhu;%*-)>ZIflD7{D_^mYHJ!i)8jKeF^{o0001z2|-aY zTZ%$NsSRN1LgJ#99`*_-s_>3trmdyb+5m*Lv|2IK*3xQi0D@peW?yGB8u}fOU;~7i z&Dn|0?sh4!+iU*P`^>NI@ra1p&j0UkfM3=O!V>@h000000001hMeu8EIDU>=>L=g; XeGsrPB3CeO00000NkvXXu0mjfu&Ezo diff --git a/Resources/Textures/Structures/Doors/edge_door_hazard.rsi/temperature_unlit.png b/Resources/Textures/Structures/Doors/edge_door_hazard.rsi/temperature_unlit.png index eee51f1e0d319276e5030d99543d2baafd5c04aa..8700d28e0ed0a706eae307a6a86c229d3f836025 100644 GIT binary patch literal 194 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfv#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6;>1s;*b3=DjSL74G){)!Z!piqEMh%1o(4+Q+;AmknRzrB0O-@g}tqRb^h ze!&b3T8d|RIe=U(PZ!4!jq}L~5_t{`JumbeEE9r)m;$}LxB?hc!_yTepHw-*F`ety bZ6=1*Tx`?Xy|+gKbuoCl`njxgN@xNApI$af literal 671 zcmV;Q0$}}#P)aTZ^KV4muR+kfDl03q?^JrGj0mLtDYBOY)kuLXw7;6e+HPi$lRd zbn$EOKhRZhRS*P45OH+&YmpM~YYHvWzHoDYocGS<qqOtl3t`_Bmg#L0gH zsx1Irz~}-%P2Byf_+A{c6UasZvJ=Qg0kRXwCSL#m+E&M5g>iJT0RQ?Skxl*t0OI7o z0d#@2n+hiY0DwU6+TuK3vSydO?RsxJpKs(fUa}@K$N0a(!lvI6;>1s;*b3=DjSL74G){)!Z!phSRAh%1mb)X}vuF?MxuaI>)v@b-@Pa7&Dh zP1ulo3n<4}666=m;PC858jz#o>EaloaXvXgg0-2`Vga|t;*Y`+7ejX}{y3BM0!zrn lQiDa@2J8zsH4L038Kyj9+&^`ZdH_%#gQu&X%Q~loCIDWZq}6vlCLX^#&j7$`Dh|?nD|8HW*U_YK^ z@#P7Ts7`C=pH)-4-+sGUgE1~FM3$Dj^>gVh0@8%ZZ?Hv#l9O&X4 z?B*Kd)~x>ww2!eQ$S;_|;n|HeAScVy z#W6%e^6f!Sp(Xq9aR`VnJP3Zec!JfQj#osv}tWgvBe+lZjEm9qjx2;47%i} zt@rp4!`$k5^I3%GhUgCot;vT)gMuBBKR)tQsh(eP&0H*K-p>HG5{ojSt2h5%4f@)t cCa-sZ=dmJ79IMEEPoS*~p00i_>zopr0D!q`jQ{`u literal 1335 zcmV-71<3k|P)}yL` zVHYgTbYWEjYmznwWD8akb=Bx3+Ag~`jdvf^H0op`Y;Pvb&gUtYxtTfV+_`h_`JNdD zHN;?lKl$eRb);5SAia3O_ymFEwzuK(@W`f9n3NwH;YmMs{Nrtl5I)jV;)& zcEeoA!)R?sG#UeIX+>C)7y$5ly+qFCFdvUIr?1&ieK*g-_i)78dHtlbU(c$r><(A9;dja9TGg#O~FU1ea+Fa@v2{wDtAY26VB4tU;! zLS_?*r6t@N8bE9zp?J=q=qGDi8KCK6u{}BcOmUgi(b3V-(b3V-(b3V-(ZRB>qI=6gq%vjY_lT~i^3-eBrHjc;Pn#wl`D9?xQN+EM03Y$iaxhnv*|#+ zGNk0(O~FU_o{zgjGt1U*X-vtvU!^c(ZN5}&GavGJ`s8taPK(ldUn#*rfDHEc*ThPo z8KF=}^8jdC9Zs#RpqJywxJtHJsk&R!RB{eDOqaEEl4^OJHJMQOs=4fOpCFKDN3XIe z5fuFdO&2j)Ce{9|xg&~%cU6ADfwq{U*)za!P=L$Bqf|XoqO;9P*AAK|S97kVvkTdD z3i9@j>N!5^w>mgiqQ{P=#s$ zI&HR!cY(=bIa574W^`7 t%--8GFHAgr@|dZakDF!lvI6;>1s;*b3=DjSL74G){)!Z!phSRAh%1mbGc&Waw6w9Yv9+~zadGkR@CXYF ztF(*X2$W+i3GxeOaCmkj4af=dba4#PIG-#alH$PR5LaoriDAO>B`rD(Pb8(q6*wiN zjd$!=p~$&ohryDih63}Cp6kH YSaNAktbMuqHqdkiPgg&ebxsLQ0Ly1WjsO4v literal 496 zcmVPx$s!2paRCt{2n?Z`gKoCWL$KDCOa3Am#LiR5D1UaN9@CJgX5VCh6WT*5jgdw(L zbYfT44E_gM8Tu8Uwv_6`tyZgq0sH;lL6F>+qwV+0TDq70UPC_Y=M=#-L6SOYC8U|opfHe%jx&Uh!fOP@ZFaYZUtYHAw1z5uXtP8M)0X+Jk!N(q0=dXZu0oHtc006GtQToAzF^{z$07M^3 zc*SAu2T=Ck*Oaxb{e%!g2qAuFFmpq~hA^hs? m5KBML2372T7zSWnfHhw#d-YZJi&6Ff0000!lvI6;>1s;*b3=DjSL74G){)!Z!plE6u-;qDX<*pH6`;`|`RY4It5sS^n~?wm Y!%tlni<|6Cfk2%Mp00i_>zopr0BKS$xc~qF literal 318 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|et5b#hE&XX zdvhb_5d#sHi&ry^uPOwHzS}R-oK=vf=>G0O0@M5K1BclTeK=hx6D|MDknL{6r#X}J z9ClvwGG7qmwNN@BZ|y~1jr-qy%@@>_Fz7O0VBEsvz<$AqLDu0k0}cU`+smW__O0vA zbEtgpKcDUCR2Tae0N)i8}T0o#)a7S=_@{Q|%+VDNPHb6Mw<&;$Tt CUU{eh diff --git a/Resources/Textures/Structures/Doors/secret_door.rsi/closing.png b/Resources/Textures/Structures/Doors/secret_door.rsi/closing.png index b32453ec41571fd17629622c63a8806524845aa3..eaccc7f33f749ad8445f618ef8c5c3ad2281829c 100644 GIT binary patch delta 347 zcmZ3(^^$3Vc)bD(GXn#|wryG4fD~hKkh>GZx^prwfgF}}M_)$E)e-c@Ne9i)o z$YKTtzQZ8Qcszea3Q$lYz$e5NNSm3NSz21!*x1uiLtgp z>ECy@pHrARb~Ly6=AbTCuKbsQEe{oKrpZ2tvRcTYct`gGZ>bhb zs7cC0gBB@{y4^}gUNCPw$7E=AaYF0iA1fN8zc>kAI?X;$b7n%0Q(#M?myE|rPS*u? z4k0df4kkdA-@SR%ooBBqFf8ZZTCke31~kHpfH$PfV`QHoS* z3Kh`2Y7`JfMX9CnhPg4tDFsakQe!|-QGyVH3@QdgxYDbA{P)N1ch0wG&Y5rb?D?J@ z6G>V?SpWbaZHbDA#ZZea;e01-PbtmdVu0hvMuvmt?j;rg2+y`ee7Qp)fBrB!=K=HM zvNW|+VMx_B_MoP)O+c}1-QtOJ#{&9er-Fj^qKM%a+zjnP2+Nou$a-MQA+J1nJ8f(a zSGUi+ys*S$hv7*Tn=nVGpoq1U{UA$j}t50fIB2U_#0Z>7X; zJU*VEH{KPUVnSx0S`OTwUEF=}WUx>CQZAowY+>Ycm%@D0UG}QNX7OeCLbmkxF9vc{ z`b`0}ZrM+5;szMD_DS1R;$%39<6DK)ivwT_Pf+BSf5T*7J+bDMA~tWfHmOP63d3W4 zvbM%Dc|Uh-r%WdPvrZy8R8sQIN=`*s{-py;I*E9{O24eFr>GcUWe;!|-=dVYvHMkGP^?=IF5R*az*>q5U=R=&t zmoo=?@4ishv#n6I1%9MaGuAVgmen%%>q#$=GdT0M^*ng(bE)c z3X-9~tbSIIam_=RY)Url#}2Jht3+Q6a#Q&0uT7h&_kTl98#1lxZs|EYob*Bvnt>QE z&Q)}w#i|F-GaCQO<{`m$bD`Ow@q1Zx$mwpNy|hph25}B%14De~9+qeIYC(JGZpCq$ zh<$TAB+#ra>>z|kcj=~${XyO?oNXs>H|SQ%zQgLsXrf1H_!_sTemX+Ir)l^VbfqJ+ zlR!DPO5{aPB~6fAaOBZtTOp}Y!hA{65(>(Dgh(PeN`vz%55z*038-@f6jJftmKX@R z=u-%t+iaV(&N2hrbjjFxx zGbxv=!db=s+uA>oYd3yH)h7B}WlTE-4iSod+M%681Y2#0=;&E2oU%}<+S}ng8&gVl zA4Zpup>sd?wk|MD}nx{eS7_c{GXxxA|Y? z3>(BM=i%!@ZIEt|@V022D5Tr4f9d!~qs=XU-{rSNW78Nm{=k+^F%iw-sfYgt?X77O diff --git a/Resources/Textures/Structures/Doors/secret_door.rsi/meta.json b/Resources/Textures/Structures/Doors/secret_door.rsi/meta.json index 7b3fdd9651..e73deb9e48 100644 --- a/Resources/Textures/Structures/Doors/secret_door.rsi/meta.json +++ b/Resources/Textures/Structures/Doors/secret_door.rsi/meta.json @@ -8,41 +8,14 @@ }, "states": [ { - "name": "assembly", - "directions": 4 + "name": "assembly" }, { - "name": "closed", - "directions": 4 + "name": "closed" }, { "name": "closing", - "directions": 4, "delays": [ - [ - 0.2, - 0.2, - 0.2, - 0.2, - 0.2, - 0.2 - ], - [ - 0.2, - 0.2, - 0.2, - 0.2, - 0.2, - 0.2 - ], - [ - 0.2, - 0.2, - 0.2, - 0.2, - 0.2, - 0.2 - ], [ 0.2, 0.2, @@ -54,37 +27,11 @@ ] }, { - "name": "open", - "directions": 4 + "name": "open" }, { "name": "opening", - "directions": 4, "delays": [ - [ - 0.2, - 0.2, - 0.2, - 0.2, - 0.2, - 0.2 - ], - [ - 0.2, - 0.2, - 0.2, - 0.2, - 0.2, - 0.2 - ], - [ - 0.2, - 0.2, - 0.2, - 0.2, - 0.2, - 0.2 - ], [ 0.2, 0.2, diff --git a/Resources/Textures/Structures/Doors/secret_door.rsi/open.png b/Resources/Textures/Structures/Doors/secret_door.rsi/open.png index 89f129d4b193cac746c2c9e672a43a453b1ef5d2..b96e2a7d5d2bd14ad13c69e70d02b9defde83913 100644 GIT binary patch literal 218 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfv#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6;>1s;*b3=DjSL74G){)!Z!plE~|z$~Dyt1GCeFm2kg1xs3V7A!fEkOQQ0 z&OB(+dT>YpNLXn(@H6&g9O%&KS#hKz=gSiYhAC&X7PIIlwg3%d@O1TaS?83{1OQY$ BJ~99R literal 429 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D%z(>+}rLn`LH zz3rHFL_y?Oq3qpCHpS&1{=J@~^guFAvn+7R5tm7sXMYF%`dcQe@&9=9$wligDz>cQ zJM(!>zuo_pam(FTbNr`Te);=)|{|wqL66*AKY6Er01c!|aZ< z_4)7j9o@R5I=!~~y6U%%l-F7D?E;@ne6^0P=rR17X7(#3RIb7@eQHq9z28;>oAS@s zF}kkWAAKNr-nk$%?utv7BfVk|Tn2K!EdRg91rEMU|NGm%D{ASw{TD57{W58Lb$$1N zo6>U^Z!KpCsV|m%wfCZB)O)6u7w_|$-vWi_-u<`a_ubbYVxPZUz2sMX*o8SBjB~?{ QfZ@;J>FVdQ&MBb@0C5J-0RR91 diff --git a/Resources/Textures/Structures/Doors/secret_door.rsi/opening.png b/Resources/Textures/Structures/Doors/secret_door.rsi/opening.png index 97f62edea5df4e781e0ba8155a6f6cbb3b58de04..32f976eb2f246d59e4e944286edbc83b1fd7b7ba 100644 GIT binary patch delta 336 zcmeC;y2ms@yk3EYnSp^}+qSH2K#H+A$lZxy-8q?;Kn_c~qpu?a!^VE@KZ&eBK4*bP zWHAE+-(e7DJf6QI1t=&H;1l8sq|MCCEG;cAk@qH ztwG?@-0a}5?`qbvc_;`>Xklk^I#J=ryqLdHnw_P}O}v@C%8lb@NjIC_>|DnOVqys; zo(CD-IA)e`_?U6WSVSkN?m2p)86!lf4gq@`}6GIwf~tW XeorjtvT~mV^bdoltDnm{r-UW|Xdras literal 1290 zcmeAS@N?(olHy`uVBq!ia0vp^2Y|SNgAGW=wxnePDaPU;cPEB*=VV?oFt8l)ba4!+ znDh3oci$rqk=BRKmT7AkJ3}k}CxfOH_bid<3 z!u`7zedd4L{gz*T_k4czzw#$rqf=+Bincy}XV=o=HEVaPxLe8fuhy@zo3H8_y>8>u zymhX9D{pNz-m^Md`}n0@ON(;WTARD?iqTuGS79L|_ixWPtLWFyvYu6h?+$C*S?c{f zBDy@gFR1kS6OY3NI{Pkst*ZTX{(8)6m%Cz?&#vjsP0YL-WV!8H?CixQcgrm=G|eeUeVWp`J~y!`yR_*%S&rmmL3_gzb0Pdl@5>$h7xOJC`o4P5SF`<{O!IUJ9_ttsG-+Y~uuIJRpA*oXIB*@Flbl$Q2 zzb*f#a9Ap(OgJ%d_j8Y>_m5tBbyx4b%LzfnW|zJ@=VewtnY|-x|JCeuP(`PUmjt~} zT=UiL_)?`O9TOat+}}m^g*?*Tv-JLx-C->v*2b@!KCOt~@QeXuxy-z3-j(-(By&EBk+;aQEGky>X?$q!PE@ zulCjRuimp(o&V0TLF{px&V zH!*qF=1;xEpud6Xdb!oyS7)xw(kx;A^5?38_J;Niycb@FH?KJm7iZRRSF zq&@>9{y8}EHyo>BuxpM0O7Ug@)50T;7d<~2>I+!D9I0uLm+5bKcj%wg6kyWZ$Xv^L zn?dL^V^$*jFKuAFJS$--x!ai0u;51Ht7JQef;SFdfhkdc=NktT1~p3%33B|Ktv4F$ ZnB`;E3RsNi44$rjF6*2UngAJmL{I<# diff --git a/Resources/Textures/Structures/Piping/Atmospherics/directionalfan.rsi/icon.png b/Resources/Textures/Structures/Piping/Atmospherics/directionalfan.rsi/icon.png index 577175edcd281daf52757d9005f3b4be3bc4794c..1c4955287120c7331efcc9050dec2052c912a4ad 100644 GIT binary patch delta 253 zcmeBbWSqw|L0nydg_(hYL4zk(3`j8+2e~^jtUD+363Agmcl32+VA$Bt{U?!iqM~>` zgJ^(Hh$|Ntm%o4T|Ns9P85x0WVPRn)_m(B^L7*1qk|4ieApNWC$UPv{?CIhd;&D7V zV3B}9kCZ{yffbC4*?^2YJOPD`Ozdn135wI+vzQ(@YhuaMzopr00&M{*8l(j literal 16522 zcmeI4e{j>*9l#Y}nVSJ)Sv%-p;5sl^!ItFT7Pdng2a+qM88IbrkVKK?L=ao9C1WQW zNk&I0U4b5D3#F_b9lNF+bjOVXWn`h0(k*mZDWM%SgpH1L%lJ`XSs*3Jo@^&}UYvL7 z+PmF)vd)&i@B6;r?|Yx`(^t|T^2Yo{3&y2=I}O9Iae29p#b946eHE$T_f0!}3heIj z=Pna4Z2Sr7oAT4y<0oU7mEl~4Vxe;(#qeGY?dD5aP1x%Py@4(>?5CO4tf(wy%Q&A+ zb^W)EDkbN(sg@d?gwvnRmUFpP0k)uOk&CHX%~;&3OnaI&OaTX8R-~0-Z-q~w!ZuaJ zF9nXJW?ZF=bP-qER9R9$WuY@)nau}Sr9op>HeimQM3VblYusLhMR5FsyUgSLSFlQdDY$Wn-A z$O`64Wd~SV>{-kDXr;59|=8SAK?6P(;_`0 zFNu8<{J0s)!w0;yXy?3i8H@XUWmY`in9y@zRZ-b|1s?#zV(mIBo~${km4j!3(z4F- zF{}WRAtWRTq$+aaK17!dZtYi8aCVRsjhk~*jMhMyXb+<{)1*%AaqCI7nIz3>nkm&< zbe2*E99VJbbOlE7kw~5*t%GAEP5?DRDe+DxmFE*g8cZP15g88$#-nFJKqG5W8wfX{ z_GtBHwb@LwU{&aeQjd`_(PnpKH4HY7k1Xc8KYGmd$fp_|S%Ucx*N+4^P_pTYgg&2* zW;8?+H$y_@a#C(9A@EW*3fRX6x5jfDDXxAxAh1&Du&MfM$3Qg(T?anaNC~27Mk>p8 zMmn=u0C-Sqd|0p|iu4-ZiNJfr5FKE%%D_1@lA;y$ zI@k<$pZvT4j3Q@W1@}1;A<%0+UmEn5QkpdDb!s=Q*Q*&F_$hUhMzzUgwivWV3(1hi z{xtu$X)q9!&e&gE|95GSfJdV<<+QJib=&d&ne{jPUuAAY6)-yC&ziZUm&GqZ=Avif z;F{Qfl^9w>tlPZL5ngjG#^MSN(#p6XAZSs>h2{fkWn2&tv?$|3 z^MSN7E(i!(lyRZ?Kw23W1OzS0xX^qct&9r-f)-_5Xg-iu#svXEi!v@WA4n_Xf`Fh! zB(Ajho5QRRye=F9?*-q=^KJs~6f2qB#ZC;XngQNTejLN@^nv|9Ff2%5SVswlQQI+W zBEPlxt@#)>dRLw!%N0I<<>&i-yNP>qF6N#oymr@CuzT0`)ST1R?W^uRoqzbbb=P-g zYtDH#DNb*_e2$s_rp4Jh9X~m<^^N_1tempoM;`^+)0NoBx1)Qp_s_3*K6O#k^}daPv*q;_Z7o+P9IrpDU=&#$-Pxc~^^$Kg1sQ4Y3K7)`soAN ziap(rVLCgW5<-nRUe+5w4}#ed;hiCJ>54x zEx3-Y?#cZ18Pph^-RSkM7Eo0&#Zp1@YbY% zb&;F9GfVb4t9H!N-gjl~TwjCY#{K5E7w$Y*-TX?4x3AdqU|}{m8fSTVoq@RT9T!pX z#=@^;-f?}BQFiLUv==tJUVLueJZz-f7;Mn?`%`!8pS7)No!ZcQxBkV;o39HSoByaUVF*5Z~FQvZ(rU` zWUeZ!T>gjGTd>_z>$Xx@pRl4Sr;&a*>X5Eb%$1JjXMh%&5IrXW%Ji_iWo&Q#8K!hj?EAuiV%?trD-fQggSfa%1?P*?1D>VvO8@bquK*7$JWM@7BqosAb#4vz08#-78EH}4PE rckfNJn-#U-p9N|$|H9s}*t_3+K)CStye-nd1?1%{a=iLb$-4gl(nVV- diff --git a/Resources/Textures/Structures/Piping/Atmospherics/directionalfan.rsi/meta.json b/Resources/Textures/Structures/Piping/Atmospherics/directionalfan.rsi/meta.json index 217a9f3d78..73a6a465b9 100644 --- a/Resources/Textures/Structures/Piping/Atmospherics/directionalfan.rsi/meta.json +++ b/Resources/Textures/Structures/Piping/Atmospherics/directionalfan.rsi/meta.json @@ -9,19 +9,12 @@ "states": [ { "name": "icon", - "directions": 4, "delays":[ [ - 0.01,0.01,0.01,0.01 - ], - [ - 0.01,0.01,0.01,0.01 - ], - [ - 0.01,0.01,0.01,0.01 - ], - [ - 0.01,0.01,0.01,0.01 + 0.01, + 0.01, + 0.01, + 0.01 ] ] } diff --git a/Resources/Textures/Structures/Piping/Atmospherics/tinyfan.rsi/meta.json b/Resources/Textures/Structures/Piping/Atmospherics/tinyfan.rsi/meta.json index 8e421a1259..6730dc5afe 100644 --- a/Resources/Textures/Structures/Piping/Atmospherics/tinyfan.rsi/meta.json +++ b/Resources/Textures/Structures/Piping/Atmospherics/tinyfan.rsi/meta.json @@ -9,7 +9,6 @@ "states": [ { "name": "icon", - "directions": 1, "delays": [ [ 0.01, diff --git a/Resources/Textures/Structures/Piping/disposal.rsi/conpipe-c.png b/Resources/Textures/Structures/Piping/disposal.rsi/conpipe-c.png index 816f8f4b6e0f6a640287481315629942ea45efdd..8af72bfa06ecb36251cc37b3bd79bf71eac08840 100644 GIT binary patch literal 1220 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 TpE$K_00000NkvXXu0mjfbZxkK diff --git a/Resources/Textures/Structures/Piping/disposal.rsi/conpipe-j1.png b/Resources/Textures/Structures/Piping/disposal.rsi/conpipe-j1.png index 67a3f19f54c4852b73d9312ec5345fa74ed8d120..ed7b8151757a93f9af316dcba81ce44aeb4ce503 100644 GIT binary patch literal 1348 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 O0000;;@5=`mCwr}0i;Aq3BbK< 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

Ek~9fJ z7)hX7Ylx!|j3$agI?i4M;ozlR9((LD1_uTz{0=}I$JTXS)~{brsZ=7wQkTtOVh7iC z@w0V&ccydXFSfD(qpzQ%zl9Jyvtd1P2(Fhx2#KFck;-IPw{9I*E?=$^Komt*DaEN% zr+D(oCn@FwS|4w#XtTAJLx&Dk+TWW2zV}%O!L#k_iJ}q$!S;Vz!@qs}F@7dPM@L81 z0wfwRvI5_H^9}9o?N}YrG;cnI;0|#d^OyhZpsVXr<<4IVthM~(uU{mStxIf#l4LR& zjvYJ3{Q2{%_O9!?2B5vY9UaHmI3$ztlZhI`NBj5F)zvj2{y$pF=4UtHx*n;NOUm=e zW-@HtxRFa;T@`)_uwdRiBZXkgmMvs58Du%&VJ*l1noQnLr^%$#WPCsQqg2+v z&bz;j`gC`9^V#9gvBqGn!BL8AHp}MCo0AOcC(;H6c~?CE<(Giq)mL9(`t+Ii?RX-H3PUtDq$x*lw`|!0z^aui zE30t6v(o~6{`u#XNb|r@5!Y{cX#U%`2l?>Bk0>V#4j(>T^?tMf%;Cd_34)*^G3B}s zOmmkdKe|$5G{i_YIXh!Eetjdx7=j?+v(G-mT1$O>eN}sFt$FUb=Lo|PEX;l65u|cz zWQ?&JH*Ta@C?q+4EXElA;TP-BTGQR# zJ%*%QmXaU+<4C}A`SRtw^76|`&7cxkV<;91w70i&sjCZXtpxO_|JgtM;SaR8w-alf zq`8IQg{@oo_fI~ZF#ob;OWE-EZ6K1u4r49(e7FMp2fF7M1Gslk~S8Z)=l){iw zDPnjyhsE-%Uu@v3W1@1zjF$4f5-(%hwr!Nc5J(JnDU1-sA}3FtWL{GfTI(tSSYyn( zb?a0F_Kh2o+MiL!?ESx?9O!({U6 z%H_*MVOT8yYprc*X`wuTgNF{$wx&5rNlV4rCt46fVzdTpP@aeDrIE_52u3MY8DxKd zKgJl8Qe5lnMQcqim!q|{mBE1lT-O~F**lN-j73Zr9U18bjnf>b(% zu$IO-b8+0HXv%Xv;;2L+$Pom?D2fnHOc;e21mAx9E%Tb1a2%(4 z3kV_X>C>lKx_A+ef~5LlQ zi7-ZR>f%M_%$^NnlQOoYrG;q3^}c%L3NsrUaU2I*3UM7poC|SXhp?C@3>A)YkO)eJ zJaJS4V=%@Nh9wGx0zyb)3!SIWW39m=Xl-rfMzT1vN&r`Sdd#DbK1v+N+#0ye;I01} zaVzf~=GY=Mn^aI*z}Q3uD$i01BcwD~i?E%O>IRwVTq#u{z4F$Rl?w61TQIa6G?aFK?FhRR;4 z4C1}_-V5G-`|V7WoSXA>90kg8jgrzBW2}_Y2qEl<+iYgfo^8JV)1M}k`&zYX)m5!^ z`i(c@mrd-qoOD;iK&SGUL*V~sJUP$=BFa^=e8RyhIXd;ZRm+WyhV zX0wZwQdVnigb>#EGehS)FHG7PM#neq$3KNBOkoOBn8MEx{|%t_-o{87PO|_2002ov JPDHLkV1ht>LrMSu diff --git a/Resources/Textures/Structures/Piping/disposal.rsi/conpipe-t.png b/Resources/Textures/Structures/Piping/disposal.rsi/conpipe-t.png index f9af2e538693217d9b443e721353c07bf94657cd..55035dc1c971b35d53deb8b75fa5e291d98bc1f9 100644 GIT binary patch literal 1091 zcmV-J1ibr+P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D1K3GKK~z{r?N(V& zBS#QM3TqZ3Vi4f?zJ|G{=d#Df*o)7_TpM5=kT&uH;Sdqw|G$2z>dZr)@_=XGD5+Jg z?&+?tzB+oA-sN51)zm6h z*Vgb$I*n4f3{}%H>-T>QkTDrgefWT78tdr|>}+R{$z+iw2FjHxG~Iw{Ik1F_)4?El z5SC?OWhI4;jZGBGRVb&A|*EVc2>V{1M(14)1<$BOe z8#QHDe$(l6k^>M$5ygEITU!~Ft91e(r1v5S|MlJrVAu{ZW5|7GDbX+pO04w8HnO<_ z(W^lx0JiIsVV^=lv8R2VSgETT3grFHuUUAWmmC0t5{oa*m&&N^>d=X5Hp;ZK=WLvl zuUxBBRTQwby#tHZ;^T{p5CVG?(`=z2W6Z`l-kb}XX+a_CYpN<^pCO=odwa<;;8U0D z_PWGCkz!m!rM`=*qDnBF@s*l_60PS7CFF}m45$yduA3|algR|5@fdy>LM4w&l^S)w zsx(}rIme%S!C*MVn7-q_5g%V%48x$h-p9$w2_7CEaDH)tgTWAe8lU7U_PJA zZ@S$sG)+qmfTAb}$@7DQ12S}m+uK{byu9G`^%eK`_jrDO#@*eWG|t~}4%BM3@&Wejd3)cP{oWf z8jUceHzdAhF)2~~v**Gw$y*!EhJ&c-V80U}qIs)n5(5V9=?H1x6&A|$gAyNKTy#x^ zuo-}b?tTlC;U^r9`}qCqZ3XLum4l@u? zNE+z0BVxcuyXjH2xYf@Q-ib@c8(Mr>7^} z+}z;m>Pq$ju80=p4VPns`bT`t+r_I?WZ7{kayw>yeSIx817OX~h&2Oa%?Zdlq;ia} zSxmCoEKwW~3!xlM@-Cu&@ZZ7xf!BGTzb(+q86SU_|BMhOh;0A;kDE8Sb?erS^V7eE!H*L!A3Z8nRWUm^$LjU# z96WT0YuB#v!tyfTT)W1LCr|RtwQC$*T4MG3b>`;hxqjmYOG`_opLhoV96WeX z!Z08V0<5(JfgvyoFA8e|ocDO|DTl3tYT-X~+55pJUMPPM(ynzFh-p_M%7l z?c!ek@-acdJd!hou( z5CP|ey7qu#b1-Ce_4Ol|1DuB^zPKl=<1B%PEv2vJ(2ttJdY;yA__i!z!c3-i4H z;fIgK32&~fNR_5&t*}PX34}D#q@51NTI#AK8x7eSjoHj6Ov)NTGah@MPG|VzU;p|@ zJEqTG35Xy1hP86rqhlY0%nWl*Wsvsw&pU<6l1W7NQhuw{D`1K`SuEpb)%x zlro6(h!Q~IoI?b}I|Lz|(Czg}yFJ1%LL1NuyePyA-qn;< ziK}a#-nWmBKR)+ZqF`ZRLHhkZVHh$$KaaH*?>)wt?X%xGM^O}v$7Aw5C(AO{*Vi9c z5>%KVKx>UL25l6|D74lf(yR!+$;Qr6*EJ&k7ft&6h@yy@nHj9LL{UVVrtNAAX___( zFwdJy63s=ZuIs7Bp2`8XYbyr* zXetL(RYe$Cv^6NLKs;U)3WfJ>d-8Q%>F5!>cOVWg9#=Oj?Y*aVj@mU7_s;R` zu_c1wXWg+L2x~3QIWAth#Ky)3RaIfM#%PTVEXG>Os%B&34*z}eEAmN>F=o24r+LU2 zgE1Pdo1><2x@z-)AVT95=dnS%T95H4R7x?KOsK1xFp98&ZH`{8K`9Ur@zfQ~Db(hn zX)u)ooO2{`!ap59!N#3CWZ9U>qyQ1n3K0myfZj}xr}oTaw4OQ(PlKwexqjmcK^UTq z!5WL!8l@DvJqmpdD1+99D_>t_VQy}!v8T=f6VXh! z%j|5Qjg1WkgTZ5UKoD58F&JyHwwb&(28C)PQQ_N!>}y9^)C55=)!0)zU^1C78jV<6 zTVr8ifdfxJjnJrE3Zx4AZeQ+fcG_3 zS>eSI$I(<{PvwBJEXng6t@U=cPm%4CG$FUZ$b+3Yv1wpSYjB?@IUA`Y!I!o5?%JI8@u zpFjTPFOQ`j_~%onWOKOHI6`ThG%GH?c~?;sjD`d9JY#9;7+-$*p&yFF|W;_8}gJSHnV<4RFG!Fxev*)N}Yi^WcdET16GQ@Mi4WI|b$ z_}U}hGpS1QafSx=&&=@Ul;ck2rGp2bk=cF^5UkZ0(mr5w%)UIc}ucEaXh z#IW{P{N6)_VTBn z(UP0$AC4b?R;+^B3sDpiMPXAKYfW8OXeCrmsH(OQsw&E|Vs&-(iEp~@m;+uqazyAf zEvYby>GgVaIvtWYrjw>9r6`JG`v@Ekhm>WBbB@I@luxf*d7_=L<6-H&r<10vUcW(_ zrkp>2o*)SL_YXb*;GK8g!CK2lAALj=MO?gik#4uk>gwutx8_O4RI9UZ-#&SI|NiZJ zz&1toJqUovHbu3zzRrysH=gL#-^DI=v5Q^oVi&vE#V&pYyz%O*^5)9QeZ{~lOH1y^YpSZE zC<=*n$zC#p6gkeY!1lxR}YiYP32#DjTZH5Y;eDY{v#9i!I4!?EgjI58x{NvWGhWl&j z@4FOOqYN=jCKH@<hNG)r#4Em$E1b!^Ys}pMRdsJ9oHo3h5<>U$VLqf9>+0Bk`Tu+olb{*lH;7`%GXyZiyAMEvdnQ+#dFU+C;Mk+ z_+W?b&?C#?KfM0BT)n-)=5PyRZR`1vFp3Dmkgu=)or{+*02nfTFFTVKVN0lTr73T8tGGP=`dud}+P2T%BW&ZrxXT0@;ZTOQMaN*`H#QA1YK}Zlrgi+XpV*4Ya`1ZRE z=I7_>cDwX?J?7`?uOWN%< zPUxhRMZxb*o_uH&Jk$YyTVG=^7&LoZnlLolU~JIt@0O)enzF3e8jXmeXq%ky;u|HG zQ6!NiFijYrJ$v?nnO7;rhaY}O636Y>8l_;S+W`b)%=R|8vpHZgDcZ)2Mq7imhA^~E zl!g&e6cGm@u6BI&?b=U|0F9!ms;2ku9a_nDC+IFIX<8$dYDm&Xuh$r>R6}Np7-|B% zD55Chz4zXGs4;K9{WhI6#k3vgAP7jiJ(M&q+jb0WYm-p46dBt#X+x`E(~Xu<9-apu z>Hq<#r6nF3AqFiOsdPh2bGJ3-8-}>k>5!&r(-w1{x+)36M$Kt$fQaz++iySAn0McO z7o`++U9mOTq$(?H5TZ;&h-O*Fcs#~$)A9nXK1qC|Q$Pf*XykiVgZ;6xd@2W^8p1(Z z<(GHhyl-F1z2A-NTXwe5>;i}qveA&Lsu&IiIPV!}8SlRP?n7UB_Uu`TqChLb(h@Fp zjflfJhf<9yRV&qsv+mg>-0MerY1rd1XzmRD5j^2T9dP2Qy%=klR1MKtmIYN=P?j}y z?eMj0RboOMN6gLk$+C<*&s%kdVrw*R)FZ89^2vlVXU;sZTP(nP@4ZK!=TuI}iyG&I zY&>p~a4XR(ih`MLmoNhIEQaD#P8bNIurI=PA4)KmO?XhQJfwi?YMxzl$QQ(|oGoRp`kQW6-Q8FHnIe-2< z2cLQ7$1fD&^y$-NSw>Yk^0LB%+VK-;AkQ;K!vR}^O|q>KlRTp+a`H(|?JDNy=D2zDCd1*7Nvqoz5hi6# zU3-SZ#wo+$kmcp&2fj;0ICt(G!{M+|m$W?NxM~>Zjg1Y4!y%*5h>eX6p4u~yQbJi2 zl zBZm*8m11*qlhJ6jy$u@upavQdlhul{m~i33g$Hi|5uShkdCIb+tSasdM$}Fkrdb-1 zMqSsGWyxSLz-Z0!W5+mpR;WnM?|* zsv-#N_X?7#IW}8y#GZvYwAKuUTXd2H0n$!NCr!C><;st~&vW3w0ja8rg9i_?zP?Tz zM-)ZLv17+ryLFRWYwIm984Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0}@F@K~z{r?U&n6 z8bK7s{WE+pF}{GvrB!KZQD`I3W&wx=L66X3ItFo-$FH|#LNd3bh8@h zbsu5S>xi^4%xN*FoyDwX2C8W#lsj)#Ea!WHf|L-#VrV=qR!7{_^LCn0RSkG9s{UM>dr}Ge-N>ZkC>PVv>2y5h_mT*Dop4x|VIylLVg@f@H|{F1 zfN;Qz{rp{W0eLTaMdy;yEx2tfuq=IsR4Qc)U@`jO;3)vQH`Gtc>;cxS7VPcr`~pDL3vhYSArMXW08Xa^nM|fHz}eX; zs+9@>kgx@CIh{zSf9?S^DJ}nFfM&Ca^5Fp_5=I9R4GQ2UC*R`=JO$9G*Ku@EVqXDz z?B?@%9zd_U0NLFX*$2XqvaW!K0OWGHz5rVTY_e-cXmkOn z1+7-=0isuQE}zXH8IQy7^RWk@UqLpTMZ4X`_0<)Zuvgz|Riu(}#3Nz&H#XQF$1?Ip zJM1>uX$nzd-%CgcjL!&dFS-(?N##pCA@^*FEe3%!>=y@Oe3ao0}V4cFxhL zl#nB3r^%^uWS@veB3Lvo5DORr(5Ly+rgUUvgiTZW;%)hh|Cqe^uh~By0|P$*P^ARY Tg<5Jj00000NkvXXu0mjf=oE~+ literal 2549 zcmVPx;uSrBfRCt{2noVyUMHHb3VjwXYY~wfy*wfR~J>6A%m=}AP z3Dc8IgtVETG?Jw%*T3qimwuk73fer_h(;Brrl$1kufI-jPY*&As|z72f0xk!TBEfF z;K$Wf-g@gTjvYJJP@|Fl8*jY9&aSSCHbT^NTyN3VTC=pg%-e6j-B4dP>cEK;Cm0wQ zU}<@o&h6XzVQGmyd-rlZlVSf;PjNky;g2IDWHK2Z>+9o(r6oGIZ^!q2PM$n@m&4xV zOE|ku!@8rRgIFwvX_{Ci-9#cm zEEYp+jcwcH9fzFbVB0pn=i>PRwrz9i(xqS3Hyd@}(xppcaNj=Nwfzxv;FHf~Q3aQr zy}?hnB%nbg;!sFl?xXx+{^ema^wgfeDDFgdv;I=OmtAdcO5o< zHjuJbUn?I3(qI?{r%t`Yv7<);SXo}e z&N+Pc`4_CM-Q?@bm+xuz%M1^v^uf{5ru5g>*GYf*RYU!TX8?dv;qPA1PWg`FE`!mhcA98l*uyX7SM{|KaM@t2I?dM^ZSBLqRKq zG(tDsP#V#+epo^qKuCjVEY8QD7R3{mRaIW@(7ygh5mMIp3HM5~`e6xe04WWGXxwne zwhj=b8EX+j+=YHfnmPlN-*|6zbR>~N(7NH5K2=TXhb8n{(LsRz#ol`5`8bCTR1dYI zV;k{!Jah*_A;f*t4{ZP;B}O#bu%4CNMkLx=18A-9n|}B+z=+gsxMzn2n{*k4&(-yo3t;Qqr<@OF*ljY5lN- zGJs)7RN!wOLPGG`-(Dem`v#H3!^J>FO3X-L(@LQc`qz zWtEp-ewjDleDj_hg5$@J>-XM!k6pdp7=}SC8pAXV3@IyNqEZSK1bBr4z8`@0SzY^y z%U7=4ds6iOJuTjF3n-FimD>XHiNqJw1(-lDWA#VzC$(FJ2@b zkF&VA*b;YGYt7i^O6v=H}**QZhX~jZ%u)*;x$JWPX00cs$N`*A}rX3#A%+ zgb)1HSerI&+O%oYrcIj%o~fxRol2$j@bIuce*AcgGn&PyZg_ZDr&1|BH8oY!{?ycz z9vmFhLqkI?*DfN4?Y6d?uabedhgy)`o=gkWT3gnT{^h?eUkOw6cRnSe6p z)((t~jp4d363xi|rz(}S)_nNkhfOWHzaDyqyz3wky!65#|Ni6?6q2#AF}`11touLd zbeaPP4j`1@a{YhK%n(l`nV+Apnt;s}AOz>monw4_oS@(mkH?Ev*P3@vpRW5R=hyfc zc<$L}FbtDK(jpp(U_|50&CRiU_wJhdLWrWa?<1wSFZv0~Vtjm@@4o%E)&K&Sn3zB* zg}we0zULwh$?1Q*U-wN;Bd%V(%16MF=bx>-=}ROMOiWDhWjbBg0CRJ596o#)0WH^; zhC$r2n4O*F(Jd2Dbq1U{bA}gRd=UgV8#nKGyHkFZQM{Yqi=!mC4CTq?FvgwbpWdDJ98dlF7+QzWDs}N_kaIaB_08bl3=PZMZ}d57+HL&kn0f zeEEh`_o^D;_U)UTI`s~^biF+}Iaz;Hz|71{G2Mo4xjqyR&6$~*s`9E8Ff%j5;lqbf zO3~B13w?*AVy&g`oOX*_3632-%74$#W7~Gk65Ptf#00MEf~MvAXV0F+b={gRSXlvD zYsSaN$vY0JbP*|}Wb(*F-MhF(zyAJy4m~|uc`)g^dGe0K`1p9;Y_X=e1#`Jv?HR*JkJ&*TcNX_-{7x{f>Cx&5y&J!^WT-PBMi;~Y} z(Lxe2BS-{Z-a!SW2hu`ND0t-ad8ClILh|*+FNjACe9t3&u_OK9g?+h9OZ(5w{XG!AO~{!Px5RDv5+u>71r~Ayd8%6q^Cq zFAl)1i?GEc$+qD+O%oY=E38CF3H$ZlyxZJ00000 LNkvXXu0mjf)SB-9 diff --git a/Resources/Textures/Structures/Piping/disposal.rsi/conpipe-x.png b/Resources/Textures/Structures/Piping/disposal.rsi/conpipe-x.png index bd67ab45e1cba8b14e82521e66231b33ee1d0906..927406793e144073d6b56e9fcaae21e7f0b0ea6c 100644 GIT binary patch delta 1509 zcmViBL{Q4GJ0x0000DNk~Le0000W0000W2nGNE0CReJ^pPPbe<1(> zE+GL2Tm1h300oXoL_t(o!|hl7Q&L+L?a%0k#>QSxQ_D)_`@>N43rz(<2?0gK2Wkom z8d5&B4@8kvRFbmy5A-*#x7RV7jCj2!XPSBQ?#!9X+2x|YG&JB+%1~QV1B+1$i^&LEs|8&hZRqKG2zyVLj853QJJH?Qe}RrR8!Toc zj0PR9U%!rIGI==wZq?SHugivkz8(bqUPPvXcrqJ>*E53HY#594Q6!gQmE)5p-1qKd9j>WLN=4Z!NCDiPgjuN+Qd=e0L9~Dtgfcu_m0ZkKB<2l zewghf9Bck%>TEU}Zr=P&e{K9^b{6SW3j2F|D3wY$K03tFn{E8{;S{H*r`X-y#r)hX zJnmuKxKR!5-Kq;9$O#hjo9ZBI$#xR1UO;eib#=93w83D&RA>^h`FX4^C$YViL9uv@ zzU1eg7FiY+(TbzaKiS26r3ppsK10H8sBrC#n=N`5j8Me+&S1&X;7nR?`f# z*$jx#mCxeK~=4;Q=$jgVCMC)IU_wU|a0HCFE3|id3cMpxX>rp4!r8*c8 zeWDBiAMzz9H8wWFWY7zM7WDPmVHN<9@FbFpajdVceFm_-YF2~4OQjR!aybQHJP?3h ztA$CgfkCH5Z}&qnf3mwuq71Sk0KTNoTbi5DE3z_3Hr!HAi^+f|ktw8>6L|IF1>WTI z-vCg;&dv_v@i-8Vf< zt#W^wh+*s13q`}QEGXJGe}mNgQwBJRlevhCxd}JhTwg=!ZBf`>!dsDG836Hw%8*6DqMJ;0J|nbA z5uE#1Q~@PIsZcVM4kbh>QBq5>S^Sw!Uik3WgYTl@kN_A}(xrqcWlEaTro_MN12hYo z2F-&eLNlSMgrpP;GvTu6zs>>;%RA~;=0y{unbFi}ZvWZ|X`8f9+9>UmwmRw@K*;aG z+#iz_e@l>FS;TbEkH;e}W#6=M+Bt2V_D-8WKi-uAV1wXGHVifnHV`%vHWW6N$8INr zVjKnayW-x;Try?N`{(Ww8Bv9ZBIyf6(U<(haB<&Q^ZD4_iE2JzM?{A66Uh z+{Vx&@$tb&NW|vPELmL9VnN@ literal 4750 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 literal 11576 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 literal 1387 zcmV-x1(f=UP)Px)B}qgKlffOk*DlI`3LIhA1KyKyGO67^R4}mYy zzE>iG6)IIfKtDuvsW$y02n1Gl}>|zfa)5q&(3s=z&Qu!(Y@peeXQsnFOu=`4AE{- zI#bi$%49NNjG?|zg#g8!KPmuaAOyH}brzb&kV>U+fBpeHr-}N*htPB#3kwTqv|8WH z&CT&{{XEG)Yl3_}Z}<1*KpBH+TJVEtO#A+aA8h~_9WC0~bQ)iNb;e$NPq|#SmwVn~ z){Ozm<+5EU9I$&*J#ZWs-%d{2FIp~zLZMJ76bgkxp-?Ck3dMS4RUxtea!6{`VevQi z4BLU{!D%}1eGmKhjo9(I(b1y)!Fz}8#n!}1 z4=z0(r=Q+Ebf}Y@EWZ6tNBN~RQ>iuU{=fw?)EW)3!&s=@qXI9tLh||4-B6ZHD^^hb+ngyIxlUi|#iCHRa1j+_saw9nxFeIvHxI^bc57LVfz?Q+(3?JuJQ zRMU_&lbs^S=Z(~P!0_-+Tf~th5ycV!blRoTX%I>RNyi!1KIiqsKsG1SYwDU8(`<^#%yjKxs7g#=6Ft1I{_>^@dE5`MjO$>qCok zaKX{yt;e>o)q}^U2VrO-TVDu&mHD%@z>- twM}m}H3Hzu+?*p*CWS(wP$>S#{0*=S4Mor*WjFu;002ovPDHLkV1n%gg&zO_ diff --git a/Resources/Textures/Structures/Piping/disposal.rsi/pipe-c.png b/Resources/Textures/Structures/Piping/disposal.rsi/pipe-c.png index 13854be256a6e3c95578ce74b3ac72ecfb0f1af9..7303ac5e0fd4e87413e6c8054fbb8247ce62fc4f 100644 GIT binary patch literal 1355 zcmV-R1+@B!P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D1mHi=aR!psbTDSfm$hv*{1$Wmf$O`Hg%7Ul2u+kWi*Z>IRZ- zj4>Eb<*{5 zw74jL=(>)0#6&VPC-;++lTa!kFu>ewhVJ87SeWM_^*+Iv{1FO;1VE({pjjxuGz>&0 zCZrNNU52h9WE!YeYWU*w&xk6TPjha-{2L%c0Gu&{Se(xz|0s+7Uk)%qAe2%BLJ>ti z%#aC#7Pi8cROac^FA1!?Lfsd{5I`!Gl8i6Pm*{jlvT%$+(Q8!@P^t>9(?`40h3EN5 zrV_9$lYj--+1a@_2%SGH%YsE9IOCPaOZfQ7M*=35OiGP)lQY(#s6qqZL#NwCy>1gN zCL)orfZf{K!uIyIx>p6b{bKRB{J<43t%!7Jf&egrW~+s00J#1Deb=S=hE%OqYamKh zDi%+%yu6I5sj0CmAr)X=`C;GpF-wYnOjVFU;#Uz6UMwIQ`hAD!X~QKDcB76K0o&i- zC%?!`8}qffxj9xP^r0b8$@#MF7Ii~S9LjZil#fD{GPP}6s=|6`x7%pY{jV=yVs35@ zU7|z<1ENGnF!09L00+N>V=A4%qwK73Z`Ugb2!Q8#l6|FeiE6bfIw(-PrjiM?TTM8< zE`7J)(i~k2keG~&Tm{hpm!6f+B`lqnNdw0+Sg+M#5Z{jD&>TbB)F4_Kb_4VIJbJwj zRZYR7%r)iX=;&DV5g}1GJI?4LWKNk+R`X0|nw)PM2M0>Z%!^xA2)^Ts?*xHDJRT!j zY9ik33~)#m9*st^Oirok1`dyo$D@Et+-NkU0&m_Hu>a#v#HEi~y-wUx|M&Ychucph zV{oqTZQ3t>dwU{T&*yUpxTV8k**lW4$&qLn0_gR6qV(uQ7$4+v!u^1R#lN|(hc5A~ zlNb18Lj7w)iqK;5Se$h#?Mp<6MoMRA*Zb^<6maQT2ONdd5>C%9kVqs6geG0!dajrb zQ^gUZ?6~|q#$BPYPtwNKcO4NTcLY~%r0tmcUu|q`NU!hh?U5g(WuVcpsUy;2!CVEd zQkXJk&$trf)%R`DYPCf#&z=?a=g-UPod=RkCZleA;I9V~;!>@yuF~SJjImWu6Tr-L zhW3IKbw~&vW!$o>Xpl9tCRn&k9W;YFtB3Q83!I;yYqy?=ZVLuM0EH&r0sqY27`|Yb z8qHzx@&wH~)G zcMyyCyYGKMi2UHytJm6{BD^a&;{oa5j7+NAb8u29qI_9_=k~<9>(vV}FsIu>({AF8 z+ZS!6Q#LgA6n=JTX-PWk-V|^~((l)Q^FlZ6 zSf_>Pxc)b=>=QiB7tg% z$#YxRmBxSfz7gXCKoB4SQ=$gDZMhxCEIU%Ax>BiBw-+c^rz+ZJlRqHKtg_B3OaB4h zWb3R_TBLi~m9nE)iDO6Z*cwPt1PBnsJig)HUOW(%9EqZBF;UuQMG_B>@1A$=8NTnk zf@j=o& z6h(w#$b3F02m*ZHCkO%nKK}S)dcEFb*J(cPgJ;2x7Ol0$G))qT1i4&}OeRArl_Hr; zqP3>e=`b7&@PmMEw@VNND5X$JA;j_T_?dUW_3PIu7K;E#DKQKKAq0kD04$vYFqur2 z3r|{t;VgV8QXXaUbeHh;>}PMTr3!^Sv&op%LY9PM@xq0( zn;R8u(_o{rMi_=6a9~8Itjl0c1ir=7gAN$*HJ10t&xTai+wEsy|`AX zh$xCsN}+YUecJ6d&1Un-RUn_wYas-tY0_%7mS3n;Dq0A^-rn9n#8GQ&YkI9*CY4Hn zjxeM_&hzlHS#o)gjJJa2xI|$_)ZEewLG$@zL%ZIvl?b_eP8E?N`67RfIRm0(kOeTHo zwMwbw+mE7%`FxILSx6}n2s+&^xts?;r_<$)H{Ku!0zUZQ1I%-qn?RglGp>nOTmvAL zN};tv2v{o>Nu@HJJ-Y#)N8PD9A7vQav-u@RTSBX70aioxzKreWYF z5(puXLSRUNWf~l|JG}WH|Bh)|$hZvY({==akOCnMY{$j1U4)Qm1VTy>g6V9IilSx7 z^8+8-vI&9^DKtt&{M&c0u)TekgU$fcG?z(o>3~!!g_M%bjVjgkGB-ZDNg|OzYmF3| zC<-wx6T>jD9UCFwhd=yJOv41wr|JX^>y-*CD=SQ=6UwDkM&l8~(U35VNT-s_eV;H4 z@dKY^A_-`sNMT3=DI)II>rAF|q?9BQ36xU6q6}J=MJ|^^2tl)Tz^AwFptUBQN+AVk zrO;^n*__dM!e}@`N{Q<_2r0OF^(wVmO&_<0uWHw>T@(G$m}awyKc6Fk-Mu4BEiKA z=Xm4w*APOG^E@;lO*;-dDT%^>@nk}`+s86ZT-QNs&6O)xPR$7bI*Pczx5v)z9{=*f z^E`j?B2FSnvADuYp@1I*c%DZxnZ$J+3~AuHE;-KwA=qyna?n0R2tg*3!M1H+u?0-i zB%R3s&}@6eN~M4i$63>H1R;9lwv-gF&>ZbeV=}>%Wyd4#*G_PDpjH=ZbU9$ zzWmf9;o7xpVlbYew8VB?(wPiyB1t-vrPm*@v9W<+TCA+BP%N(EIBuNSg}}=f5kRBa zqSGA!kW40*_g=QbLI{Kq^!r2F?G6I)XH(Fc!%mNWzYhqsQjA6;di_2h|K%^Nt*tSc zOwcOAG9@Ysp61#gGHF-@p+ZQ5WHQPA{yzWu^2_8rk90a6R|Pbl=dn`Afe_ek0u2<4 z1w1dqQ4{nx4wy_P02K0B*2^U{(C@ZUS`!2T^ZAT+`+&p4L!vNXcXyYZmt`~@Fq=*o z4Tt#i8B!>+Dfd*O;QjaC$1n^G!=PT@V{2=ROeTYu%VXO%sZ<)ragkCI1OWn#ib4Qx z-@Z$$)y6bUI-SnLWiSjw#^W(j6w%mkVcNF==ytjoron7BBMgnjIBL@C_t>abnNG(D zp|MSg&>^>O-NrNxT-#itv-kA+PIFzY(6KK%OlVX21Dkv38n-D z4ElXQvtB9?`ZMm{+ha5w5{BXD4)A@S;c$r7n$_Y8Yo!%#-qiH^eP**6wrvs4LO`RG zCX-2X*y&)JCgoN5tlcJ=OmhD020|KqcI)<2U;G!HaP{g{X0thlA<5@Gq!7$~AE6Xl zD^%zsfL_0k)|%^o_#>n71V4=M7pM^|wm=XB^m;v_C}MkOmm7cj5EX@Vx?Qx=_zS3M zJeeS*V7B&mWA$Z~9dCH|#wAS=`y(MI39ywq-oyJH?!r{3}g?76`q~Za?_XENx#I|h0 zAS4RoGLy}u7u{l9KA)?sb9i`2qh3GtLHj5Y0N#4*E!3h4g+Yj6m?#}5_33m92!8kb z8-!7WVHgYsgJmZe_pw?p_r&h~2KVbtvRMzM1!#>Q_*ka744ZU%QAf2#D}_L#wPNni z@aHqMiqPuRdZI5n0Uj98e(?S8v9q&Fq%>-g@r4kqS1JJX+xyIBvn5t&-rL<}wNzRH z2!%o(fX4nlg?t{3Mn#J0bcW+NXx}I3g&0Ph6pypvaKzTuYx*ZY*^}{fcRKck#%uY1 zVqiqlXfzm)$IJ5Pq!or?aCdt<4%A|?sE_)92LX|CxvVc;xiCj0yQ{}4c>TCHlWHT8P^AwVPyL$ua( zyWJ;X#>7rInxTdG9GR6eMr9v_rO=DID+E#+)Ef$~ zjwj*;48tH&iu!(w$#llO-91_dZ32HvzdxjV*rc)FVm28v=nvTT=jcV2{pF9pl{`Xs zpG7uMNX+NlFGmuq-(bPF~NVJux&r&(oV{&&C%&xoA9O z_jY&bbUM#$_`@^K48d2^2OQbm?d@-tKH$MEcr@&M^wCFjyWRi)`hd}Jh`*R>2ZI4x z>u;Vu;D{4cN|CbVKfgYp)oO{8>I2T5sbZT3XR7N&QM9D^p45Xp(-ClFNBV&K^*WoI zo4CmgFI>DpquHWZEMVDpSuYjX-)~Y~FSD~7m*l`&%O8I$`ODw#k00dc0dl$AQlIdk zq@`Rg>q0({Y03pjYf#AN$$1|6LLM()#C8*?C}hy@)9d#cjmOJeu)e+yppSFHQ;&cL zalp?$`;1gF$$qnm=VgJv<>#X);+0okAq>N%J^^4j9CGQ>B^r%7hLDR9TOy>ubzPz` zjtGQ6ph3ioQ44iQj0VB}{{FE7kEap=4=&nEr$B&SpvMW%^ceHd<*+ z+rY9+9LK>hZ7kcxaT91ABf^GZ5`+=Ze$-<>9S78EHGTQ=WmFU(g`&CN&No*LI`ZzCYemqXf(L6d4|ebiR*v*h(scR<2Xc-!nW-goVCn&EH@0i zTn^A!wvFQ^5lUgZ4q*^dsTR0>_wMO9pjNBtTCGMD#eASYpRsp8e(Tfegmf~=+>Bd{ zoaZr`%-Q<(t88y?^Xcs!a=F|RVTL#Y^7%YcN)Fnw{6$L1N+HkQ-rlnHH7ygRG=^a! zg+xHC9I+j;*$jqhkxnIvqKM!A*MFZ#x$>nOp<1n`uUxr;=VkG{EQv${!!Wsc@d9^t zc8S7>`}GE`gF^tkZ1z}w9>8%NY|A2 z_9%TqFpuxyy6!U6%d0CSlSwj}3@^R(5_|PJ$y5r2Ad1wHXzRpwqN{7Qntto8w~$g0 zh9L(BhlF9sV9+O<&9HOt9(gZI7>3xE#b7uh;X1K!F^uQ($MN$=_9%VAupj4~^Y0&Qtm`g3j)+fpqHU8g`hha;yNz< zejgzPT5Cq5F-j@ghi#%L;=T9(z+^gG^7Hfge0lH3=@a^cIA@erS8!|>h35R(4Q}1K z&83%LW;&e`gfY+eRTh6D2h?gc{e$m+k7i>Z(=zdAbF`HB{ybK2BT!lqMIllO#*+zB zNPOQXiXsj>U6fKhf8iYU{T93R{pG2SBm1I0q0{T5qL5xcj)3uaLJ%reR#x!mb4=5q z-|wQdL>dBt)YTLK65sXz2HQs3jR9uq~U(bb?_>#*@in zGK1g!{sxg!n5Id8q1reaUmvAU=yZB9$qF2_4iM6abqLKSI*Rz@=Kn5bIA2GWcOnOj z$3qM$kRsLtNYiFA9%5P6;-FGU7)A&gPw1v$F4|UWxyVwv9E%eUo6Kgjhp6>O=@W9f zJO~2_@k5P}5j#7(^he|6_nw9x@mL2`t5w}>Hfgn*NFf%w;ROhxK@$rol-5fzl~xNd zQpe+~W!bdb?T7ZflU7J6+1}Z~FpNj)6Y7lyYvnTI$%Mi9b87Kvi!hJ9S*23ZTU%QT z*?g=INT*WdJddpBAq^9MHl^Qf)9rNW_4{^CQPPhBefrZu8)g?cFbe!!$ zeZtS)Tuc4zSAU)?Pm5I6xpCuke`BkuEe@7HOz z4o;*Gc-HOMw^J&WbUvRaPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D1uscNK~z}7?N>`r z8&?$m=7BNzF&NAvP=X;{(FF=h3#uxWMO&#X%7WiP*HxmlPP2$qsjK`Ks;J9WRazvJ zK48J4mCC~pjP3DrJTsn~a}EzB3rwM@y5XQP_S`!@-~G;azIzSa#7*49{~Q{>Boc|V zrfD!u6Zw2TeKt5cIx6=M4i3`)834<&(lawNXt&!a6bdIdDQTrr!R+iTGMNm9hlkG} zSY2IxqhQR*R7&3Hx{g@bgq0kT&yh$3N(BT47#T{^=NKj?#(60HCc&8e($&=^01AZw zmAyTfhJkQTk1(OrW#}5ZOasS-B0l-}BPtcmr#WX}{tb|G0K8%bks2Sv*sWo#|GtSH z0-=;55Q<9V!|XC)P~uQ`NSIk#`i#KJSER2CLO%o0*ViX2&gGA=wezPWjxs1pq=Ep7 z{#>VpTD^faPW%LqD2M7C@nwmm?fB%)sAq;R``C;GpF+_^LLoCQ3)mIS^P8LuZS}h0ldJQgt zu*)S>3E2AjI{C$zv@u_Eb8}Z>LO(YIqMR?=u2MG?#i3lMNen0)(@JgI7FJjfwOS2j z`uxYn21Z6k(4dm2piL#w5wyLlYk-5lgrh$Z$F1QZsl8n)ARqvq=gH~|g(DmvABzt5 zs9pQ4I0>=>r^&*s!lgO779bu8zsADTr$bst4KVffdR-{YWb>qfT^TGDOE9S3j^ofA zLzHh&S;}@9<6~oJHtWQiLWowbDIYsKyP}UUiMmpE{<#Rbrd&@}^I&p-oNoY|n@VWr zL+1h&b-dwY8^MNX;d2DW#0UrVyGl2;c2FsOzLk!Vyz zmdoW(r}`GlWi+VYeWKcReenVwcUq3LESH7#(r7ke6L2dYL+bWzO3vQUBTP9oc6%bV z@c9RkAHI8$RUI|JHEz-aoTRs>8*hz{N|H7Si|@IvN68ulM2GMBXq_5TxVsy%XpD6# z?MsCajbsiFPxo2i=SrV-sRo#O)&a-feg^x8ImF`@fzYH2T+bEL;Zku#qY$G9sr z_DR~fTCO8PAch=t(~1>= z@XEe;2UFcCs$|*OSaju`c|7WPAW0^Z=`$aA_z+(|ehhX0KJes;_SN+CG?mDeF}CUf z0+<{~!lJ#ypk2|U6<6(Jl*yWHIzzBZ~TRq^oQ;o9+nUqWE^{uKvyQ!!HS- zl!Zrow~s6cwG8$U&S^oKC&TCD|!FDS#0nA zh55OA$mEM++3cEZTwBz7+`j8Ceiae__|tP(WK=6FTdGqIqtoECXARyX7UJR=?2aJ;?uETzW*)fU8@9xgM(>K&PTO|r-XjK z*mTYul(oUZF3M%%|J=G9ENUKq^`LvD5^w^pKPOFu!(cF64n8}?;&ItQ#gJ$pVJl}h zEt83{r|`3rlap9mTf5wfFA83f^!w?1PQ<3g?O38jO#7=~*(Z3MFP?w)+@-$@It3rw oQxg;CTlQ6gJ*HSJc03!r1O#KOgCWa0NdN!<07*qoM6N<$g6m?H&j0`b literal 4930 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 A>i_@% diff --git a/Resources/Textures/Structures/Piping/disposal.rsi/pipe-d.png b/Resources/Textures/Structures/Piping/disposal.rsi/pipe-d.png index 6d0bb7a1d231b9273fccd45bf8ff5aed180ed7cf..4f809c0636836d39c07090c78143972c7f1969b2 100644 GIT binary patch literal 816 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 WfAStxqm3T`0000 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 XMuk^M&FZ<}00000NkvXXu0mjfI645l diff --git a/Resources/Textures/Structures/Piping/disposal.rsi/pipe-j1f.png b/Resources/Textures/Structures/Piping/disposal.rsi/pipe-j1f.png index 4c200b67752ea6d7e50c05652126e6c3523f8472..8c7ae45c177726caa2bd38694f9899505db9a8aa 100644 GIT binary patch literal 1578 zcmV+_2G#kAP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vG?A^-p`A_1!6-I4$R1;0r|K~z}7wO31z z6jc;H_2{a8KdO70nFeHrfl(Ke=tN0CB}R0ikp;5xA1DcI-56qL2pj){A?)#t_i}BH~C7)9-iJ!}Fc)YDQ+Jy9VP;D)qW`?z!Lj&Ua2JG-aexsp7)?JUz?! zOmRoPfbdBr@K$zW^M?u5orNhDlxCad~Tt>RX#aZ$(vtIRLf;QpCJeDvcp46bi)_ z6HM1NSsc!|t|RX}j&nYrr$M_$s-})vKUX+NT_$07U{8&|IDkAys)0NpjqgmoUZ<6n z724R?pl~$KDW~(I4%ve~b=oa5!(kyC7Irz{fZQje%5#lKbXt}V9q>g4@dDdZxmmeK z%6Xm(Zpm)>Mhu&57-!q&g#_l|?)^g@-E#s4=K#b7laXq5Rxh227v}f^36&3xR|;_$ zd?(=0wJ*Q=m!S(6J{qT@Kek^_%mO%&OeV#N#rfyx)QJ^*F8K~4x~9mz88(N8M<1Vi zQ;}nc;1gAZLLz&DI50*43Wps(Ds76Y;p0R+Mp#>C$4pKwcpHgE1&OD}kPEKZ@b*zJ z1OaF}5kUI88Lq^1hx}0Fan4f3JbJ7pU=@Eqae@qkVq^tBBVopJ<)+= zBEG8w*!?gBPp$(ip! zx(09nB^ATUBx#Pd9iLXqC4pR3RCcBX3i3LDDceYAnZi7f-~b(D>{>e?z}@WmdVq1`J61qOOJPoFo+3&b$N|)FbTUBT z_xs$(RcmbArfRJwl3L*!L7p|vf7faB_GC3@6yoRDcJM5K18Ad=M$w2#hYAH@zcZ?Q zP3A|1%WRVy4S%Ok5C0iR}Ww_PiG~_~Lm{G|DN2;Pr=ih&O zys*FchabF0Qjul%j2^kcln{M8x6Vah2QFT$u3ou9-sQ_gSFb+$43nN;Iz}2hWpYLs z+#4!f5zn7}hZ~PJ_YYZ#yGXFoVwG6SW-#3*soS>zs3TD4aH*?&y7H@f>m z01M=DIaxTv*@3QUKfh)R3k$Tiw)X5Hz>fSMQ0xkeK$_9Olq(f_`0(M>pVMi5!PG?g czkkpF0h6l=gVSjEv;Y7A07*qoM6N<$g1)!lSpWb4 literal 5425 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 b?D78rg%pch2{ALm00000NkvXXu0mjfqamUY diff --git a/Resources/Textures/Structures/Piping/disposal.rsi/pipe-j1s.png b/Resources/Textures/Structures/Piping/disposal.rsi/pipe-j1s.png index 7ba4abd99443c07021cc1d88b0a612b9d555db18..4cb1f5a77417bfc5e6c1955858a451d51c749afb 100644 GIT binary patch literal 1608 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 literal 5783 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 VA-;@LeIWn<002ovPDHLkV1o2IUBUnW diff --git a/Resources/Textures/Structures/Piping/disposal.rsi/pipe-j2.png b/Resources/Textures/Structures/Piping/disposal.rsi/pipe-j2.png index 6e5b15a7f1585794945569a9c216b49172ed5c55..ecf734b1baa1a9cea802a24413501615c0b51138 100644 GIT binary patch literal 1517 zcmVPx#1ZP1_K>z@;j|==^1poj532;bRa{vG?A^-p`A_1!6-I4$R1%gRLK~z}7wO7k; z8)XomeRy}he#K4*v73~Hh)VPpAQA0>8$t*H7m5Tul=43TCxpZSkoW^Qa;Xp^QbiOb zAf#=S1Uoo>d)HpC_rc6~cX6A>yGg}ot@btE`OVC49-ja)t5hoaS65cxGV9U70d%`v zVV2CymkSFE{>H|}L{JbQl}hoUC<@539Lc$^3y$M}ZQC#&kE4Uu?(QzM+wF7p$TQIe zN`2pFh3Rw}=H})gm&-vWlL1}V`CY5k0;Ast8H2o3t)SDn>@ky zq9}qSN&KA7v_f#ShQnc`IHQQrx17g3bzuPYdR=&NZOvbMVFg4qB%jL$VUS5P2T%|s z7>!1(*dfqSf(ByXrDp;lpy{fng07}v>B?1DUS0uB)4;JuFzh!$FFXh3$`zKa z9Unu_Fkq=%0pD{#Lh!K$#sa{2iy|^#&qj*K-J&FN6c!g3QJKfjJwK_W@Qw&ecd|55OvQ`tZ*IK;>#JAUdI|@nb3zV4q=2j; z z%o-TP8U|gQE3(qf*EZnjxC)OB|7IELCy7E30tk=uJiz?GcN8vP5Ybwb)3m_k6QEXa z!9Vp=md#=>2}^XMIzX0_J<;`308p8xIv@x{!W1_vN&`ur#Cm;w4Qs#xcTKDV5vSxN z(HAh4JgoDcJ7(8nj-8RRupelu8d!xHAf=c%wl(CQ-)OXOHt4ev(;YI_1CxT|vhuNQ zfjt`Hd2|*gy+;B%;}I$~F$F~qNvBn3E|i~NgiCxO@1H97 zDF2kwT#o>f3SX!LN?C3+gYe1idmy4vKi)d4l0-_u*ZWtz$uib2M3GZ~f z?2-Gw?m(~GV-L{O6pm~OD&b^uB!>F|`N+~ISNP268>qYqMi6Hz+XQI2QUN`!avIa* zlo$YmAR^+2Y$VzH@4R^iM0owi>#wrR5S0&1Bbb^bF5UNj`WXvRjpZo*VJasAfH}Zc z0OdLU@8b{NjTDExrzaO9jYgD)het;VCL(I7 z4!R5D@6b6YE}z`K1s+<`ZZ|>0HY}i(imHK%t$Bn11aAb@>crxclM?}tXdt0MH<+dc zF=;cBWCia3_9tZXMbNX@%`_a#3nlpR-Y=l%N|4SJKuW0~DQWoQuZIY3jD4WM%AXu` zPft$;^n{Qw4S@%bF&3C>FI}5tf*?;OV_Y|G+yq(CSWrO#mN0^aQa&JUykT;JPJ{(T zOKr_8+$X464=~=B4*`8VEEwcsvW!Y7DVeo74fllPB|nA;u|fL3x99%?u0=N& Ttp%$B00000NkvXXu0mjf@qx3( literal 13610 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 diff --git a/Resources/Textures/Structures/Piping/disposal.rsi/pipe-j2f.png b/Resources/Textures/Structures/Piping/disposal.rsi/pipe-j2f.png index 8c7c6d76de07e56ecd910e042638c8334ebb5f6c..b5cfd3f149c1d616cb59d1009d84ba95586c141c 100644 GIT binary patch literal 1582 zcmV+}2GRM6P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vG?A^-p`A_1!6-I4$R1;a^1K~z}7wO7k; z8)XomeR$XJ#7+pYlT-;&Tc`vgh(v0IIG|oYfJ6ckm1yCNl)s=VGR+N+J%D;a9FPz~ z<-mapM}#Uxs<489Mkx(Rh>PR+xnA4reK0fLH3>=VjS-)<+V$@2&Tn47nNNT|E167Y z&P+|gAnW1gCR8ewOfMOs*Td1#(ahZ3Tt`q4AP@-fp(qN-vfP!kEDKE21j8_(-EMae zT5D@-P%4#91R?iC=PGp^hZTlGAs8MWhFB~Hkw^r>;V?fd7K@qhdg!a5YT#JW+wCG`LiIR zWIPsi!yuDpep?VEXti3b*d*6uI1HnW_nNT2u?bh_)Q@g{b6+3G16`{H2UJysQne2A z3k#sg66jhP9Lt1XH@4uZ3m3p>Hld|s7)%@1*ViFA6a*2y)JwT900Nq>22}{FAsC-H z1Cx_e5DW&vG+NN8?L&CzF-WB+ST?t_1656f@l+Zd+XM;0_cgFD0F1XNV&;dVT}9+> zQ4%={V`F2e%;x*HZL!ki$Oy(>g1W9lI-NdL0VtoL(oQ528DActKr5jzDwMh0Tm-1h z`6ts+X;ZIb4j2dqL7;390gsQ5Ln@V`H!|^foaNo}<|NK$vl(AGAmER!7DYaL2Pvj1 zGfj&DstDAyG2~8@y+Y3%$7T>zzO*WZNBkXHGt<-kJ>a4CuE`4)TKUPRw-3p^_wF?Y zLEZ_V`z6dB5fM-b>Al?UE|`|ZmM1WWY&UG89{`liUfp-R(z$-~vdjm|xz8wJ>7Oih z6cc&T|4R$c!R+)Iww}U4;?WasVlWkQq&^e^phW-K6pbh(#kTzrOK1 zXmy>xLE#|U_6>j)y6zWGC@mYG$D&bC(6XkkQPwc%#BhR@&Obi~+dI4PaO+Q&p?=~k z1RenIILQN?ANY*Ilw&dwkQjB?jR9_Z$j>?isHmXeJ;Z(D74E!Nl(sV4S=psKo7VFgG5 zP8_4z;D%Eu6md4Fu@MJ5WM2<-2*+aOZKDZBtAXd%QJC}`6VPn8P-z`YP~?!5i+Rq4 z)Z=52OvG7M*Y(piBhEqmn1z}9T&b`}?){X7YNg5^psC3l*?cfzXKbMiciiM7 zOaHyRdsyFC78lUB9sKEXy=d zxn9@YsYzn${^7^FNJKf7qxgHJ>#41d3lxny}Znn zknuf|EidOeR5WxI(rwULc2X;0ea4)A}mBHarEbeo86-#@Ve02y1L(sN6y@QMxcwayRB)Q{)5gztEdT%j07*qoM6N<$f`@YA?*IS* literal 14289 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 diff --git a/Resources/Textures/Structures/Piping/disposal.rsi/pipe-j2s.png b/Resources/Textures/Structures/Piping/disposal.rsi/pipe-j2s.png index efec527bce38ad352d056b7a182bd1675c21a147..e7f7e957532da3bc5ae5508083ec2606a59a3377 100644 GIT binary patch literal 1615 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 F1OU!3Dt`a~ literal 1441 zcmV;S1z!4zP)mqEH2h z2*eBpgLygu)a2)qP7)Mp2HN(RB|n6!=I{QQX;72DYz24+M+|ljO|wdrgGH8>qTO*s zVDE}vU~c}R6`-L*WEe?b<5#{`1v8JInE*BU%Tz!VAcAxqPNz1$1VPpG(LQUQ0T4wU zodz}e%e+9exa>UuBQip3ACc$l@;`7+{xTIHf~r75hgGwJs*DIJwx8Og^@l>KXy_u; zc07c^yx~^Ir zP=mk721roAo5g8Xwgdr-yb{tqGf+Bx98ihBEDmrEM4a{Rvq(%;b6<87#sL-i3*BJI z61Eq(9ElN`K0*~Dq38wX=D)fEnAxNcIwSrVi48GTGE|%Y>I#sUT`5Il1M|ynu*95m zqc%+!6QDMKnF?q>6AFNcN0F9@j@p0QZbMu#l!h~3AO49us zH^dATnLZh+#9yoenm+V*FS{YN41H=9sKsAg6XYn_QTTc0f72{5PoE3a;xD%W5&aSz z8k)0$L`6)^Un~FuK+&~aD@fE3LoNQYs)6=CSVRy)xLA-N^zLeEBT$RKa0L*+R+J!S zc;6Q!(hE3t(fHI*g?ju~1wi>nKQMu#%SkWL7bM0Hejl~@ud09okgfxiqAwPlPAx(( zi=39`xF8XqnE~UWX1XTjFi!(z=QCU(sB8vB?u>rODud6_BY9SIJfn&J& z(FY^as>sD??H1JLzq$ely?z<7(WKfNWm;>O5TL+hC9%2r7c5w?V8Ma~|6R~_yPYs^ z{rAB?J^ccKz)X;!VDF%zi<=FA5`%!g-8qN^OGU{xEu3?MSlm+aQAsK{rX)r4MrIJ1 zmEYetE4u*(yq&Ouzsm=b6bh)scH4o0S_+|*YIT~E5EZddG={GPD`MoB-Z!IujfPqI z{pRtfm64fq0>S6GHIO$XZ2NhThZ7G{QY%>CyhJr9Wv7CL0+0}Lv2!kdzh1AigmU9x zfKz+4qbE%>8X!qm2L!{mOa0D~j#Kvw-sP~4gZ#{Hag`TEu|?BvIM{QmLbA=lY~v|Q5R<1~!b z-%Qu~ei?bA@`f?K^XvrtU)~s*1gXd~@v-__`2Fi{_YW>XLJ08;A4OlxZdQK3-|y^^ z8w|+M2=&`lAIAtGSS=rn)2Ris%Ox#;=jY{re>>!d+V+U1SwU5CI<)|RRkMP`>;9;E zl5a2T&~+mpJq$i1`uRAAP$m242LhVAW>$WGI2`PD{BMk-9swdq7r@@*?fnf{pO< v){eZH1MI?WCrYQ{U$9`of&~i}{D1Km&P%?}M$D~d00000NkvXXu0mjfS*fL* diff --git a/Resources/Textures/Structures/Piping/disposal.rsi/pipe-sf.png b/Resources/Textures/Structures/Piping/disposal.rsi/pipe-sf.png index ef25a0dfc44513af1fce679b0951ff8ab1b151ed..83df48315b2cc92507f596d0bb1954057092691c 100644 GIT binary patch literal 855 zcmV-d1E~CoP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0_;gdK~z{rwO8A2 z+CUKHODOaoQt*X<4Xw!1lDw|NpRwZ8dmPS2mxF$8y;F z`TLR zX-f#iQAmqLc0mAh;(_5%2*5_q1FlWIPP+)fk-%>{@ZtC{#vIl_09e?l5pX!6gg_L@ zEe!#a1BL+BV#WXq8#Mw}3|8r+gmQ;^XIUa4`a-M07yPe2W}}L)`EUtu(~?n*c{ikxEF_9Q$iy| zz`{n)0~}A>$`Cl}z@-vm?f4k65^Ci@tyUw)wq(s zHU$BUF^4r^fQ5}30gG?b^*u`BSZw=tf~iE zEmz!%hI5pr1p$)-hJa~EfQ8LN2;h)g4aq|Y^mtQ~gt+a$8WLc236zpBeR-kTY$~@t zhv3+dKnWp4z`{n6fJ;8BTf{Ouk}}LLm9W&1KnK(ad;8NeNM+ hc(9;^_cf)J%3lQO@%wD`aKHcn002ovPDHLkV1nOaYij@i literal 1443 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 Tc0k(n7GR`rqWAHd!_)r&G-;AA diff --git a/Resources/Textures/Structures/Piping/disposal.rsi/pipe-t.png b/Resources/Textures/Structures/Piping/disposal.rsi/pipe-t.png index 021d067b7bc1a4252a7ca9f6d94f6ad9d1dd9216..c4767f13d8523313e31052bc8dedbf5435dacce9 100644 GIT binary patch literal 1164 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 diff --git a/Resources/Textures/Structures/Piping/disposal.rsi/pipe-tagger-partial.png b/Resources/Textures/Structures/Piping/disposal.rsi/pipe-tagger-partial.png index 49ab4a3ad90dd157358ca29ea7f21f46a2844a67..88235747c016db6225e510474eeffaa865706ecd 100644 GIT binary patch literal 1209 zcmV;q1V;ObP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D1WrjrK~z{r#g}PM zVo4N+{Rc*)e(z~TjYdZ^W|Fowoj4+>*eLrB0s;bxvR=DEHV3rbH$>?k^^d-Ns=PX4 zCUNHGPCUu^a&zmgC-qjHI@R)8w70k8*WqDF+1lC)QAS#HbaY^PdYY$Fsl?pe9JE?3 zj7B4@R_jxmOeW}bI%qT+s8lLUO-*5Pa*}6TTbp!<&dyHE&dx%uR&#MS@yf~y;_*0g zxg4t1Dk_xK~e6%M^{%D7({=6KhJ@I0SpZdVVIV8 zbaa&G$jAuB#>RLK4i55v*uTFG51_ZV7feHxlNLSQ-LROAu$lA-`Q1pYuR=(yV=EPd zkc=Udh@n(0AiteMG~|QVX@S+S2!l=wHdd689z8uhB=#A0vjN^^4~~xxP_JF0adXWx zolM~3{2Ui&XV~5nun`GEt5LzQqyZZ%%194|q6hj#4LlAz`8tlnZ@Z{po}zYfitDQj zOn&@;lf!+ULUI#p;SfHKe}GA^1sf~MNRLMVr^Sf%&@zhI43757I6bJ~c(;V@ObnI6 z7OJHzQn4_?WRuTrC)*720B{QoOK@6^h(`k`WYgHM~LB1SXxla2VgN7;If$^q&A->e_8b& zA)-Maf?g-=1S|^x^U-27&?dBDE1h^1fE`UCwLuUr`X&>A-D-iyX+tI+YXbN)`8%TS zp(cQx!WUGEUm>L9@&K@E#w>7?1?kPTR{>5As{E8hSA)C~iZarJ`Dmph<#AZCm1(ws z0kC`yz-q(!@jkLtlw{chy}b(9EM|D!E^Oz%HUT`(M}QyS8w63q7a>h6ppeG`cIEp0 zJ`@UtR{^fBE^%^n#7~SY7BFFl!+{mQANl;>HGoa}PZrc_HSB-eqmmrp-$WVd!9<)+ zCj!(5yj%gc0bc^Ji|JsmO1I^vd;l(&3xPlY<#PE|fMPC7%O6KHuq-b?kN`@hQWL=Q zd<4i7z~*|C_YSfEu#M!f+u`^5{uO|bN)f;s{L3zRHep|1-xC0{pkA*(K|D|PtxTPf zkWM2S4rAHv1RE>LNDn4%x7+wBC>D#jzP`rY?Jb}1d7hn~AWLUIogn`s5$c{~vVhfd zqizvCYR7hVb{+uk?r{6pcbp$qQKzDFL*E*W1`6bVhAdbO1z|Jm2|$+XxSKknc{r&Y zN5ZQd;Qsy|KN>f&Cq)w zOJ3(6y5e{Q+RqCRgbd;vF+>7htav^6M7`tE{1n(&QAT?F^6njGRZ7gOm9QF@s4+27 z&u8PUm(NWl+T-Bunu8h;3pJvwe_WVTVdjrdU}HrYY4PR{lQ(~wz4_ym#sB*}Z)y1n Xe9-Z#YIA?u00000NkvXXu0mjfneHF) literal 2253 zcmV;;2r~DHP)ekrc^31J3C9QR-;m>P%fA8-czsFX}4OW#?Wjw z+1}p9dyjJtA@)B2j)FhZ05@;mWPW}g04XI(DTELxr2qz<1Bjw%0Ir0RR-6qzsr?vW z()^K+=b5LU_AkA(g!GP?nJSfXnIH%dQs6y!50#mdSZmo_yGOUvA&O#*^L+I2CwzAM z_JMrBr1_&Cj}T-gp%8?mR`A@nze}lDLiH^B*~$uYbEm+2yfJ81V6$5u^AOzs)IhBz< zlWMKnJE?wXPH>X^@m>L~L6Cdk9lCa<$o=(*_y6{QRIOH!LckcE9aod&k1-8Otj+M& z;=LPr!D_Weu~?+t>WuZorp+JOB9Es*NQnx=UB}Oy9)1@~l^Q`&W-NywD}`n z0VxGSD5MGq!s5`ecm5dfzF<%QB+joR<-wi6r1@j`0D%`083afbjBK5nlq5=U)-c9W zV+>7}Kk^mu-sdYY1pcAO;@XuW*RB*FYA-OEq0{N?YQG;%nm?A85<(0ME;{`%Oz>YQeqqMp9AELNRd#gEC2d2#*dod(n*O1ER-(g4OfFw!D z4q*m33jP>zfWTRcwRWrvCUF7?GV2eN4m&FTSO(bn{p!`LEG{n6jiRB?;^HEgfAA^@ zfype^9i9Ou$shR&IOp)>7wab(fBDv1ynX%pP`fwZc%8NT_i#1?ArMj?S|Bt@{un;M zlSW;NVfera3Bg;xxJJ9NPEbCPFI1#N2O-Ah>-D(X1`Z)1Fk${!ae#A%wA<$Xy{~$F zfwOsty0*54koje#R9NSzZ*G!h_R!*hN%BW$gq+VEi-+|)cbGeMicl-M?Izx4e0uu} zo{u8ZI40?~NHfR3@84tYL=o=}!2lEHkL3fb7sN@*$(bsj-&r9DbT3y0r{_-a)#v}h zdrxKz##&}(YINfG(0sro`Hysy3kwV0dw-z9M5EDQZEbB|)4@^jA2|ZN_be|j@2fNw z$1#PfV|{&nKlgrQ{E-Ie7a6U!IOj;ylxDN}$l_#wx>8CV$Ppd|f8@~oe=m<8>sZG+ z*0GND4VHj>H&#FCxZkjKT=m0S?>!qE8&l_txw$$2;)^d51OYd1-lSHoBBjhLvO)j? zDJA`rc1rXrm(KZKn|$%HvsphW<9+_8xwXae@-oI4KK$@Q0H(>;{V1!y=vaK}97=c! z#R5_Wgrzc~7cj~l3lQ%;wwHqT-r_wdrLkECB45T@96rlK**sxU;G>Uk4Q^y-gf}g| z?pv}STT20jLVQZiGk(%A0s*x4sJ^Y~e;wSytp@2s_Xwk6NZ7)%;t(-a{j zQfs_-q)80Ul4XX!e)3PAedbw0l@HZYsWh}!pC*4`fZ5qulu`si!1Bv4^TZRw!}G?C z8+;x8`0^#~`uxrc?ZY*Dmt{NBR}ZmvXj=S%0s2#m5Qgi+4UlCS?N$rOEtJMNL`cb-Z@kWLe*3$x?SvK= z7rFe(5<>Q>IlaIIpxtVb?bz`(O}++5)0EU0q9`IWhNRo#{+D0koFy}9UUdALT6*C; z8|xc{VTju95C#S6jdh|ZA~j}c8k{Cy1DIYq*?W(%mNav0x7#Qw@y?RDE=w0KMY49(vP$IQ>oP%h>XSf91i0Mp_R4B)+|5=xRJ?$y;Ywi+80%T>H{C@IiNU}A~D)9!Sr zR4PanAcdsaY*4LLXl&MLcO$x;4q>5;a0zG6Ea05QxSSEk@lfr4ntZ)__bwMMT);U; zE6%9j`Fx_wQK=M#szWKo>fO5lQ{@YQlP6F5{)+4<5)xUK;k_UHJKMDR$2!)rj&-bK beM9wMdZXv50gEdY00000NkvXXu0mjfAFNV= diff --git a/Resources/Textures/Structures/Piping/disposal.rsi/pipe-tagger.png b/Resources/Textures/Structures/Piping/disposal.rsi/pipe-tagger.png index ce48830a50e8f73a57d173e8927f590c0bc92ddb..5b2fa54467bff95a2110be728490c32ea1fd33c9 100644 GIT binary patch literal 1206 zcmV;n1WEgeP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D1WQRoK~z{r#h2?( zT1gnj{SS;r{obvjMx(1)vq`O{iK~K&MY-QWKtMoIuE!SS=7QGy4N=-v|Iw%Kj7L{& z6T2s8k4cJ&wMtVE|ILrpD1(#6Bq;a@g!pVLaM>|DqrK2e4 zH&H2Okc@^9BAdJ}8`-9p2Y_3kUxdSAKrG@%K9j;;Ifv=#>4q$A35c%v;B{KyrhiR( ztvnVm5tCj=E1*Y=HsDU_esYCE(U9z$kXVP`ZG+RS!{WS3J^-^(52w`xA-VB5`SYsx z01*jz5%4%*BVbton2%w9{zSwz&;W3}U*V@DvJ&8xP?V7#%ts3yDYxB%&2*y$ zKLcR3;p}J+87fM$?1AoX1*~QhJT51;vY&qdVEGi_+t)flRPjkj(F!Q!v4CBCzs-DZQ&>-{AFA(i@@&GMo}NblW|2RCBO#SS zBoxAu%Khr`r8$z%bm=LYQp zywr|uZ*SiN+}`5mpRYJOsGvqg=bFCN>viPG|1?>!5)8m<(h-0x*KsFxM00RZISz+b zIKbWA9lq7Caei3g4Jn(PWs&McA|8i{Zcn3bfl9FqO=;)bw@|Alq0`JkrJSbsK!&`| z-FL;YFff0(@b)9lqBr!4;8=Xq1pcYM(C Usv5qmhyVZp07*qoM6N<$g1lik-~a#s literal 2383 zcmV-V39$BwP)u(&@6~KS@F|%*S+1M^gNL!aAl!%fh5JYGr(Msh5ph`_8RQd;!iVykHr;3UyA(ami zlqjgQPEscblGcyiwf8a4dv8C??#7$f4z_n!qB+u9E6n*a>ycp|z$|DltDlPpwv?QmIfbmvPR~Xf)`w+r&vitJPwA zdmHB*)>?$v{REf>f2;wnT)D!+!U6zNN|aIvAy7&I3nY_8p**X5Z{m3#>|y#(i!XEV zan|B_1y-)FVAB*_N)m@ylkm|;eiomr5f#g8`jfK8BDIGk$@|EtBMrHGmL+qwiG4`b?^| zYX79hzB$23^7Fj{T7w|-z~cr`tssSf9D~g(ljP@E1|`O%IAd_mjvRaY^&%I}jCz`C zwMMa6q|@%^dSbKYkJZTHX%JGPe1Gf(OO+a)Uu1s%AlBNk`m^SbHGq@?Arw-1cz*GL z)?LMHt8<{jemzNSk3_s(<8iR0_YNe9r(z#@k{Ct6s5U^tp zK9CRpE`V_4f17LnB?x6d?)S=yh5+lk)kEFL*8ph{KSm*CtLa|G9gI`hgf_1NO%V7XFC?a2{NgFkj^e$&h2c{W4)m)_l-Oq4&aKY)Fz&+lq*)8Iep z4;VLqC;b7(kF&@6{H_f!4gQn zz3yIo@kKn(*Tbw(0 zjwDI=_~VZOm?d8iqO8HDWBEJBP{L6t7Ld}zFO?B}UnzHZUgsR9pMrMI;2bEWF=+}S z+r}C!F3r~CEMZaL)2r8pH?lLrn-yOVEIC*%q<})9K)F!DFISOD4^L1^WjU7q02~gR zBv_N+tVJk^r+ln6IBP&?&>E$Ek|Y{FA+7aDl5>`P4d8hmrBVqgC3CeZ&FwBv9sM?k zj~vAqGn|5h!5WigTe8edLK26VI7SGG)Eeh3aTJ0zq-nw@pZ$xICr;w4Y^s(@rIEe* zEcrtN%+JrGl*02o&b|CHPd`06JuhFr%-4~hUN}z}1qcMc`1!L)t@-lSO_Wm1&(9Ob z@rVIt#n%A7?^CPQ`k|-B*NS4Xm|5L9-o13`p*=Z|lMjHOy>=d@H04SOgw6sOA*j`A zv|6p9?kxElvUj3Vsbt}$bM!hb(l|mY$)(@C_t2i4ak9F)%KN~ZufK+M;CUJ$vkiEv*Zs)Q7)IWF9MuN3EG>FY%?2lW!ztzfA7!X1G+X%cf{@Yv3AI;_(KB>mKGrt zpWpa`@_|K`mX;nmfcwGs%G3|WFwN#Bmw)?5&Yyo3;qGznms#;OWc%qxqk-0%D2jOQ z)F}=hIf{EkR`o$kKRV_tmdgC{;zhJyq|w+!YfYok7+D5q$=3jBn$l^vfy_d2m;r>8 zy!GZA{O03yp5W?YmK4}sWblY?~Z91JUopy)D#yZAY3Q2++&>@u4;6gmDh@yZ(!6)o>a6;l~4~ZZS z1FT8=4T^#!i3!6HDI}4Q{PQ1IS*XuZE@lzffVI;Av*Hg8;GCo4OQI<3*VR(Cni~|$ zRh+dbDbPxggc5Fr{(x_C&X%QYi{mi&Bc!Tekpa$`=3!4<2-b9ohW}iIXQ! z@WUTG&)k7|mY+G!;^HEOLIG#f2kP@*eQ}#0jM#2(v(?<-$|qM@S-Czk=%uA4m!>Js zx#7>*X35vUV}Dn7e|>&&ak0N6yH}q-eB>xFTAz3J;r024WqfAIf6^Z?PT~K(KVX=u zf<4vecXjjA;6LdP7&m|?{Q>nld#umz>fCAZ{|A;e-8Jy+X%+wg002ovPDHLkV1n3I BqR{{V diff --git a/Resources/Textures/Structures/Piping/disposal.rsi/pipe-tf.png b/Resources/Textures/Structures/Piping/disposal.rsi/pipe-tf.png index b5730c8a54e62678431fce931b9259880bf7bd42..7c97c21e3257ab6cfc2f096f48534972703ff7d9 100644 GIT binary patch literal 1281 zcmV+c1^)VpP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D1eQreK~z}7?N-Zf zBSjRwRo!j3U-67h%tL?%BtqCB!~&QQK&(arBvv3rij)tTkyo=}m5;~*2|ggo24#lr zD4YBMA%r-wJxT1ukM1tcxowYT!8l0=R!~XD?e0|FbI(2ZREhjQ{_DeJnY6sT-2A)e z+uPgCe-*$q@S|TJi|<)+i4pvj7^}EAk)@@jYXdRY366!u^Nj>15Nj=-;_|J6xm~X* zpv1-U_MJOd24Suf+~55ypt0SOjhJhFlJaTG}$$N!uLnEm5N+Y*LF35x|OS8n06gsj1U=L8jz z*de&XZxTxsM=~CdB#E88`TA>;&*y*G+S=;hhyjCa6Nx3jrwuIV7p2}q`pzXx93T>6 zkQg8m2r`PsI@dWjb8S28<;u#6;R0bHgw}GPn?xfhYHtwEL2wSi6Xz621nM0!X9<8o zwQwU19335*@pufeg^~{qGWT(hx+5wRbNoRhY9WbY1;n5+FO-3Eecz8WF|f9_W^%cl zJwHDe>mu<$z4ZcBzL4%DR(csQibkp?m$+8-<6!hT-@9V;%6hrB(Hz<$rOc}tlG1Q;n za?Bo}Kl%701z4}wz04XQ12h~J6&6LF8rXnpGihLDAW8MWtjP@9!cGinb8~Z;iGkJC zRnzTut5aIP{QQfww$Ou`%^25c3~*^V*m|)`t>x3ZcctI&U&)YO$N&sPAVR}MMx&9m z+im&k-aRRo%ktw-KMO68HxE?liv zW##+tG$`$vN(WG-e0O(OzfUt)-DCx@v9Uoy$9J%^5da6Xng$>sf;c@r)z;*9c1*9= z)BoeU8v&RO285Yt5Yo#*VNQ2Lf_okigYy~bXX$PXfQyjo=_r*-a&mH_!KYWf z#l?5go&#BYXF+m7K^7L?!!az7S8G+!Z=_MH%W3aS-e}Zi@8D31IJmUionJDa2kzfb z-$&S5DKu=)G8&BJ=(r6)Pi6o2J!yB^((XQ$-uYO%y`c)oOZQN1tP7)9*P5uUx6< zJp<4+=@DmVXVU3(v|OA^z&krT*?oW+O?#V*(PWT~KI?S5YR%7srDy1QKs&(byvxpn rm!67Ig63PW<1FL1y*)BAvkU$Lm5kORtddCN00000NkvXXu0mjf_Xb(g literal 4295 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 a{|5W%j13f;f-nF8002ovPDHLk0$_r9=0%wR literal 5868 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 TB=Y(9Wh*cJR;p6MIOu->(G>eF diff --git a/Resources/Textures/Structures/Piping/disposal.rsi/pipe-y.png b/Resources/Textures/Structures/Piping/disposal.rsi/pipe-y.png index 71b8e71f8fda2796695061509cbd186055aef3be..10c9202314ded4e8d9756330e19ffc2bdd4d00ce 100644 GIT binary patch literal 1578 zcmV+_2G#kAP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vG?A^-p`A_1!6-I4$R1;0r|K~z}7?N?2U z6ju~I_0iwmGt)CYAC4F`K_(iF5HS$QB3UJpg+dk*$WrtN`4bWdl7)dR@)rbA91sK@ zBQrAN*xmN`RCje%^~<@px_YLgI3k2>Ea~a0>i6C`_uPBWdjcP>57&q5f4(gFQ>j#p zWm%9~ z>&AeboXKX9PUjGX!#GKtVA-U>k372swy2Wrq+nAy3uAC0!Qs)EfV|75(-?X^B|q?o z`rg$b;xURU^5=3n0@#?DDIju-c(Sp9FV3!UaEd8$kj`Xd>BEqGMsT=rDxFml5|Mz3 z5=nGP3gq33oo&>fKE+%quNZW6XIb<`OL|_$! ze}BLI=TzRWUAs1}3tOL)w8*u%xQOz68P6WA!{P6OH5?B238WcKsZ`Plszx?P2!fe_ zX$Vx>R4Nlkr;*0#`sq?$zkmD7LzZdVk31rfv!51z(yl`_ZKW?*tyW9N+euCeg#s6j zi%kk`Wa20^8asY3RjQmkeaA{_egdM(~Z3@k#PDknAPCJW^A z`Kh)OaG&`WPz_wB%HkwoU|u5-OHTrkfxp*6FzCUOB2^{$3&|t}onTE7NForhCyyWF z&Ye5>_UkXT2t^TF3XD1a<<{*t8qCd`H}(6*jq7BeLAsPtfrZ%1m%Dhhv4wKpncz$j zkd|mP8gVLS%2+&d97k7I;dL97G|qd-G48m)lH4cP!CDA{P@^`QT1O*ZuFT`~r)$`H z@(?Zq5v-&Qb;XcU_qttWray>WQc%+Slubwo>0uBaYPDJiTtmM7!9e}Om^CXfV70Kh0;O&#TE>0GO|;M0w0023n%3YMHcFQr2key-pSSNbjEHNDyXE-1buj| zDnbU}2N8lWnzW%RAigYZAq>4e4{hG}x*c@e4RrVR(C_z^^&ankynJa2@ZkOBA1*O! z51m#MJ$k+~XIrEIiVneb}!Z!|i6oL)PnRUNA!HC~Xd z2R~oEf?sd_F-79)mG8N`RpHZaW#fqq3y|I+tytUL#_o$9x@<|!sza5goKOfz^u>&e zfDmF#t4lfVT&xQc7!Law`gugYhp4hZHTLk`H($lg$n^DKrc+8??>YxY}~(pA3Hlc*1-cw(gAEo z>(JAWkXT--#5pq(>1d*ch2+>U8n<9_CdjA(Rjc(W@HbuVVFXI0A~&M6rswl>pJ9i^ zbn4@iXtp|7J$e*1x?Dar!mCyr`CI{;+iF3n1OzRm8DxkC8C zg9q=Q0*OdGK?+b76Gvn;`mWJzVtadgimcdc;wj0I%p8)3L%TqH;^c`F@AZFxt>@3R c)!sJdAE=Kz`r%b7uK)l507*qoM6N<$g5Tip@c;k- literal 13801 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 KMNUMnLSTZKUEtRM diff --git a/Resources/Textures/Structures/Piping/disposal.rsi/signal-router-flipped.png b/Resources/Textures/Structures/Piping/disposal.rsi/signal-router-flipped.png index e474e65092bee5ebb816589ac7c131cc082f120a..da91ff8f38a40f0a487b7201486826ca6c87e945 100644 GIT binary patch literal 1593 zcmV-92FCe`P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D1mkNQWyd(O{= zF=uDGWwSAJ=5l{??>(P;e&>A8xh*Z9`CYkk1&W@Yud+**E}`WjzpGcTVsvy=m|m~P z*w`2x4hP(BH+(){)261TFgZC1tJMml(TL&UVd!)^VV5so{(6XO*RH{AHp65xiHEb} zWHO0-K97}^71Zl>Y;JC%SS%uwP9qkJ2@nPz92|sJs|82!s{yWGzYd1z>gp2K-Q5kj zT#g40m%%+bj(9YJjg1Wf@ZrM; z{QcJ-*xRn-==Vdsr!@vxrRXdzEMO*+hTr4Fty{Nn^X5&Q&nr$$$<@)`-i|=Pk7Oc& zTCFAkIMXL4#$mIVad@y#Ye(4Kd53ao5sQU9=4NLRi%z4rw-*+RML=|Rc8a8A0) z34m`3hr>vxQcVDbLfHi9=~0L^o6RNws+0$Oo=HqYLlJPfoCKhxvh~BH9}zmiTgcD) zB7hVDup;ugQmJYJ@P7v4bymw70dN%NQc>L3^dcGw(=`g{v=5+C^a!zH#pG)x1B5~$ zq)37d27_?Kd)fdvRYO%X5_XEj)~h<{#8dPW0P6!sAU{7t)#MP0$+FE+kPHwE21OM# z0Mu%Y0N~@(^`weY6F&)vAE>c|G`r1d0K;cW?ufoP^x*5{Y;dfFHsD z;`nbg8rFaq86FZz$lAdG<>eAwlXlTNxPkFAB?7d=PxP_rFbvd^&qsg(&PQOJO7%Hu zLZ4cVN_iQ*1dvImpdT3$Fx*8Y1IS2DeI&z?pbw)X!=K~;AJ6B&IO)RP+t(;RD+$N* z*`&CpRw={da)|%j%D*529q>-MFzxqXWa!Z+RlvuyRbaD@;oVmKvh^3rEQ_``vhRr_+gJ>I)mI&&7FZF)zx`W;Q@Y z`(Ai5Ct5Yn6Fk(gqDltvx_Jxy%`IRhWaoT5>wLZXys3ogSXemLY41ZJ{~1G%bx^Am zLWub7dAyUH1H1)c+JX|*w%KI(q!%=tpX~+dSO@_cP#8e_Ktqn?2+{pIZNHFW79pN7 zB?EX!PDAuS7L(QTA}kbEtJ#Rhx`)E~i`8dXuauCRNgx#oAnbKw!e%1nQ$Ra#Ux3_c zy^Yo%e-HqysN4@E1GrohV(iM#rBGX5#OoIoVcYd8)|QLdAm^J^0?5R~s1~7XJ+4Wi zfb8VPjT_){W@`+(3?OM>!{ zk)(`sb}bD20|AuoKcaf0Ru rbY2YLyMLH`_fNC${&D($e4hUU(K+l^?jWZ500000NkvXXu0mjfffeuZ literal 6037 zcmV;G7i#En+!96JK`u@*}?-x#?{u!<^W&gV5H2x*}ZdnT*LHib5T$eR{ zA1=3{>&c0`@jt0vb|9IA_j71lf{r_AUMXf(I_K;W<~QXR-NL~k^vV79)n7{BXe=a9 zt)u_|72-)mK~#90-J9EY6xWsiKj)mPzTeb{MiQ4GqYIF+0SRHiI3Zlew`9%ZT>b!O z^60;V$4tED{rCGl{?^1vW^5)N5_=3m2m($3A<19^l4x4pt-g0x)j9J}-Hl`$Nx_$R z&0dRDi|$hG+TXL!K6~%)ZoxW|PN&U|?c3M8?MvnEy?ZP#FN{y}jnZfdl@HLSWlAwrvv#1h6ctd!OfdxUNg9)xvR{?mvK!KmM3P zq3}!~^z`(Y=bwKbpsRbOex+3R-p}hd#sF~b+BI^y+*9>iPy1q}(Z(1o%OV^OlS-wC z$Kyn!Q6iBD#u)PXJe6{pmg7(?7AciV7-P^{BgC^ifDi)D^N>;^r6d}Sl1ilr*fz0v zoOC*k5Q18*Mzva{TrN{A7OB_kxUP#3VqN{~0x&r_NpEj208&bnQV1cs=y$*YsMqUV z!=nL7x#6zzl)qFg%OaP{5f549avCWmLI}d)FhJKx@V(F&gXei@tpUj8a$gOAY&I*N z8yqx)-`kE9kch|HZfJoqAV3I3v)RNLgX=gro=2%$Y!%*Q#x%1 zhla7GARG=6iALF!89*sTwNyX|5CV)gIF3WLR-;s^poQehm8;Cm&aSC{-Q|%|qJ$wB z3{ognnK*QafTgHaiWtx3*6e5O*}Iokqd~J)rsZnx+_^(K8A7huqt7bF7%(2ShQpRE z10)g&Hur7@A*htg42_Hc;JGgKMxBp8{u4q7T&L+HvyQ9_fRKVmg$EBPRVwuL4`8&5lJYB>@7o}yB9~uc#|}-)Y5K+i7cYLq zu3dwEoDiU0mpe0e7}_~VquJPq{Tl#42&A+LL}Fb-jWI|iF$OZ33`T2&lxXdtq$Is* z6U&7h)mn{#fdMl=Ki_?oOeSMo*TopqJso;`drc=`t=uwweSM}-Tt-?pyN92{Yt`{= zNxiy^(H=iKc8J` zzJ`#JMy-nLv@qI3DT`1fMqgha{r&v_CXq;VkEY(eV3V;Spd$SKJ9yj0An=${r#j;DFBvpi^%rYSef7$ zW9aSerBSOQq-3DKpKv%xz1E=BtP!-L1f&EZ@eD{Q*wX(T|L_0)A7Zf>2E)Yoevk@` zL9wyzw=Mu?1&kkl_#vNs@(H0(1p8;#n3@7EjA9JD^0%+>($NzC{n3B(?)mfl@YoS# z+pUc;EX>d2dLBwCdP1S@Q3d`s>l~NcxAn7g=O8!!bQ6pRLJ*0@2uH%a|G^~yhKGmv z$s2F*-hcjZ|q(VsV>jOY4wJPh9@=0_Fha=p&bqiw*hhKb=iScn} zW@fRJZ@7PE8;%|tU zyn2YM2dCPf368%t&8^$F`LEx7K&4v67)Yj4fM6k;=TY`C0I_&{Rf=p`7SU)Fr4;>r z8AgV70g&F*gX_4YQa!wK`UDp~xXA748N%U6JI{Zz7@e!X|0P1OD$YDJ0G)!wuo8eL z*YT-?$Tz1@KfTHnaQv-l?##?^^Y#n~fwFv8-?eLyOr{stbxEhwt6~a3BoYB2UnsHg zD2o76=?qFrw9)+b!iW6%<}HrDHN9#pb{3;^l~N&?PU=T*59f!`r+Hr=? zRlhxs_lq&cfeYtG`TpL$ym)8=473_`1dz++SzazbwLOOe0--Pn_`~H% z{(SQ$$KRS}3Q#}2ihQ%w~^`_b?;F!(2Ew z$~fTtVhsKEI8)4@{8_0y#1wcwaE|tI-`ZAl?+`9>54CQi}R;$(3(Q375IS%!Do!Pm&OkTO> z*9ye~0w^yRdH;96XMF!YMn^}f*K6%9^W;4{iz20juM+_9OHB-jb_#px=LZ;XU+eW6 zFTC&qXHK0YyZC^QF8k+kA(ulSC@wFfJ(sJ0yw1H(@8fwM#bUABG6Qhhog`xnTQZv& z8F~&O1m#K<&w#5nGc&Vj;K<>_?B2bbTCKV&%CFpte@O#k1DPNoKx>bKWBagei`lum zTsSuh&^7+w-g&263!HfQFqQT`_q3nRZW|cjUaLv9-lSfye*u6}sf5;=xqF}S>HUX< z!eQ$5x?kISzHyUNQ@nKaCC;2ajSzxcw{CTx(eVKAV~X~?4SB(a(j}t}MtiiH4PHFB zA1VAmQ>j!qbLu3yNB22$a390p+e*D&r(Ua3t5(}xBZZWT4?ntu(V9>sN~auN34k$% zXh4$e9RTQhgf<3G8_u3S&AaE%Gcz;G@bD0?z4p2v`7ex8zTiJ+@7}!}Ja~{#@7)9V z`T+3IAS}=x!ocxkhXFtNc=X^Cq_R)~Fd9#5q>u!H5s-pvwa((BM7#th~ z{I<2{dFaBDu|yA%SOPl~C6Y|@Umsp35>FG3CQ)_} z6$o>C<`cB*(348CxVX5=53|{MUWSlO#D6bd4r&x_ADQ0M38MKlt@bv^P+OTKqW zKZ6uflFerQl-GOGeqWe>NUK&sYiC1wz=ndLkP^pfGBP}Zv@8&o-x&su965>=2!SyK z>>v%%q&J;FYi~mxnf1ie8mCbrzuX`Zk5MldC@vQXghJf9d6PXuI}mD-NGwIm^_ZKR zBO0>(PPP6T0Kgb5JBTrwfHFL|H-~N82q}DU4CM1mel}NlOs!fa5(?vJ^OZ=Ej%d%L z+VDsu;^gx=Y^AVDC4>-cPA7T1l=nS7`xwV@=}AN>l`Ci?HWUNae8Ws8V>+!Wcs63B zP$)bzH;~C>Oixb_@sLHe_3XsRTKd=Y0Amaj6BExwjWrq#f-%kG$B&=I_O5}wy}d{& z=?R5MBocoSH8wan$mHbYnmX16pp&q4kZrYE6pO_*$0j41|F_fQ>juFN7w|0d`KHIS$nx^C_~Z5KU->ytlQq%# zHu(9!wyaB!f7AT@Ut87$;M?Hm|Jt%doq>S?JNJVT|tX{dg=&PpXGxDuuFaT8%oze3txDf#p(( z;_`C43#91VvIW4b1mQ245BMgelinL+$mMcEB$G+AZ{I#V&m))1(P}n*GE_>cwHkeW zeLe%zW_gwHSKM!v`Ty~>#x$0u7 zW-zqsHMDkUHkx=waQD;uUBGs1-|lY#+qRKXlFMlZf+6zDW%?p%l0BPH%AW{(_xyRl zXMRuY8sWyDKj5?b4~WMToIHMvtJkluYKkfhQb<%F!0nlb^rjO;+Ev|J^8wOmf_4Dg z4&u43c91a$>Gu{9U9^u7>&diB7l3Hg zXIldSn~{+b-*_o8+T;KK@*ReUhnN^2M*_e9@FVWb%y9gz>2`P6aOT7hIC|&+A6>r2 z`yX85M=u@1)0&`dF}8mnN=QnjJW|Rv=K~Un7%fk5XXXxLe>3WjytLbGSFT=fd&WvY zR#Wwz)jf9X7+PzTQY_3rf z^d$f;Ub@8e^mLb}>ww^SF0a4#I!7j8W@gq;mW(D44592G0XvB6HM{cxD~XYn^8wLF zgwdV5`2L>VR7wRf1|#4PSN_PSpWSDp5(b zdlf9(CK!p+zik@;^_tJkClU$XJAa<(>1o2@2$z2`hWhDMF8^YTa5%#4=@|mS-*V>E zNrs1q=-u3l5+IaCIGV(=gNU|{wdMnC+a??egK-hY!E+rhe0Yi3xx3wIkjb~lk| z{W&C`!Sbm(gVu(dH*cbp;>SP!F+vCemcq6zgb>8zaf-#_696pBA{LK#_e~%a0(?F& z7z**)Yp?U}yYF)Q_H81O=&JO#6MQ0(C^v500N^KYyg}~KeY7^nHlN6fE>bKWCtoOZ zpRsa2KuCeIES#2$QVP#?x+hC#8l=Mv8&>yyJ87)~8s|oR@>aWeo~BkQ`eQdr5sgN> zF~cJ_-|MehJc8(!`N~8nA znNufu^xzX(O^1I!e}N-Mjv|cPoex;q%z!8J0i6>~DMizDk39&Qw#<9)|DM}-X1Q~GdX<8MR}UfD%rW>h z`HTPT4=dfcaf7AoB5%BU3Mmx-^iThYR5o*WZmv5YU<}OMxx>YaAMvAOhp;T0zyF7S z?9K)K;a?7{2zDA{U~2pdV^_v8#_t@}>oxZ7-NV^4XOQjo`K{T{*qly&VcMk&K$o*O z?R^{Hgj5nM5CmX+eAWA6#xH-t{W`-+7tW0mi^b5|Ue6yO8jS`3XV0F+^So8lp-+Nm|W1x2I>iNAaPb zUgg5MQAS5cIsD>_lu9LLW@Z_C;dv}OfRu`6t&H2&(Q=&C$6$w__dE~BahSY(nf%fc z{R3O^JdcA14|V~0l4G~U7@q~w9v~1>vhVrtQ!14~d$_K{`3oN~GCV>+nRVv_YSk*1 z3gQ`!*Q(QOwYpR17bmZA^bnjp{xV8gTsSw{%|rI=-p%;_eYBblCa3&UqUE?ap25?a zmaB2vO`Dbay8zVdb+p!$$`zua0HvkJH0pJvvM|Q5ecLv_&D}QI7~?arj)V3be>PYt zFfjjc-Up;zEDh}(q*<%bXp<&u%?H%$4VDUX>WmD48x z!G&|9j0_L+gJVZ||98J%HLqN2H1Rx_{L&JO3-crrao@(at}Xz^nC_m?2Aa(#2xvGi zfpDaI4$Bp6P^bMRjK&zB2UJG*(AN?`ok5!It08GWw$Y~xVT6( z62a3N?Rf-(L4q;AM!0+L9)IkX^gai43~2_aZm zSXgEJm&vpLrtMpjWHLdqSm4;v!#tRuXKepI7PCu?4DDj!QI_7`G;?!z>CdE@ymF0^ zq38JM@>Ti=2B=o6%+JrS`TXxZ0N@v8_wL=LR&R3e-aQ`YmT+4&@`Vz)$8oaR9B!*Y zrCQ_R!Xw;HM`#1Y?00$#d>iu#-)Rr{Hs%w)^8kF)^9kSSEdbyAe8T?#3AEVeq|QA6 P00000NkvXXu0mjf@ztxC diff --git a/Resources/Textures/Structures/Piping/disposal.rsi/signal-router-free.png b/Resources/Textures/Structures/Piping/disposal.rsi/signal-router-free.png index 672aa5658d0419ba02ef06a226b7d7bd82ff8e7f..e088ec15f8a47c88ac9c440ba22e5b790e53c166 100644 GIT binary patch literal 1337 zcmV-91;+Y`P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGf5dZ)S5dnW>Uy%R+1kOoBK~z}7?U!jY z<5?8OeGD%YrKg7$5!p8h5@g@^hzJo;mbMF`&9rU|+D?b2O3xSY8J{`l>gecxF%_LE zRa29yTbIATy1)C}=REhMuI~TOzkKfR?@?c052Zo@l~O5&TBU+Ut$s4pJm`7(orZ=6 z@c;fYKx=C&%x1HIu-R;4j>TeP&gF7q&StY>4uwKb-jhfqzYfsW)+Tmm)a%gQ-3_PH zi7+jcN~Ms`=P@xcfsv6B0p)hPVYOPtdpeyC?d|QT$uUUVCFr-9Y4pHlA3!t`#t;ES zBO$~hLBzsAgabZ!-A)YjSzzhyL34963WY*#0Aw9fL_=PrlTj?boyN|`EgT;mqPSMT z$$8> zkB%T5re`S2EI4~HGJ`aEu;4)GwI^l8*z@XEjORs@mt3_^P2=D*c6aYS- zPb}8iDSrfz%N36RsYDD?X_Ww+VjLt~%X*!L4Ch6c(SW{QGYopYko^Mzc)eb+5HF}u zC?5g%XMWB(F_cW8qiO(>xtwxcM!hgy4;@F???JJ!h@*o&_$zkK3o4c00aUaB{+r!y zCxAFQsB)?T;5_F@AmJpfk$8<1~028f3PG#fFV%c6&7u7b0pJ@~xtCsiPnsHlQ|YcEF0M^yuqbAZc8 zty02e>!b!AgdODTP{|B8xO5U1(V4nob7PfVI+Y3SQd-( z^Z0Y~oj8t4i1Khb?O3PG$P5pQO;iQIi*xJ6fh3_Wh_jrV3RcBnFpw9LjYRDA?|9drN3Em&nIW3gE9`t@%ZP9-oqGlO?j zmgi?@xV^m<*Kz6e6aM~shr7Ew93LNJ?(GbczrnLngy9Iua6WQSuCdad+#uQSN`3p07 zA$wtY0i&5T0$vv#i4AW^&6)wUlEKVIEtR7YmL4cs>3T00000NkvXXu0mjf3OrQG literal 5017 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 diff --git a/Resources/Textures/Structures/Shuttles/thruster_large.rsi/base.png b/Resources/Textures/Structures/Shuttles/thruster_large.rsi/base.png index c5919ee6a40e54bee1d79b27cbcab22d5a270c67..a15274e9575d92b85c320f74251c52342a03e49f 100644 GIT binary patch delta 963 zcmV;!13diENy`U5iBL{Q4GJ0x0000DNk~Le0000$0000$1Oos709Z$C?EnA(0drDE zLIAGL9O(c600d`2O+f$vv5yPaJP)t-sz`(%&|NjgO3>6g>A0HnhBO@&> zEjKqeNJvOiQ&V1DU1(@%e*gfhta^k10007XQchC<0CtnjH~;_xA4x<(R7l6AmCtV4 zKoG{=@&e@zDkGd65tbJt^@#ESSSIx94TI0Ik_|n^!dcEJg7phjHg7KwfWI8VXdVfFrF&%F@C z&l+%mH3w%Lnj_MH?OqJqD8y23lz(>k14H{%dnq%cz(7i=w7~-bM{QJLBk*?toi>0f z!P)?lU~MKf(AG_(aJf+LQRslvm^2C+{KLB#cqsVfWq(usNQAm{f1{J9N zF|zCg&BXH!O*;tH;iy8O>9${IXnJH@4uce)=NpFA$od3K@do&QeGNWvOn<@RG?oZR za`iPYUdgjWKxRIguxuvN_}Kss0g(Z&GhcE_AsdB^fVfeRb&5+0RSLMQ0F(l|sTBYk z1<<|7u$!1dUcUV zKu96?o82Za_N)B{AFv4~cUs{FKnPK-&nKl`s&$D?0C$zbIk4IP2B1Pmv;ksZb?)1M zEBuR%+B_um8*BsghJ4W0&FW9vQmAUfndrh|tn%`3EQ?+Bgw1Bl@e(mggll`DiNJQL zWfatVR&eVjw>bQ+2e%Ip;2caJM!|!3+82AF7fd_upy$mNvqdn(+rAfs!_&5Co6W^` l!^JE#xAlJ0{YU&i@C#d~2ouX}6ixsD002ovPDHLkV1nL*r&<62 literal 9425 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 literal 2082 zcmV+-2;KLIP)Px++(|@1RCt{2Tit8hND%+|kZm~$u`Tx_1WMzWga%qlpnmT|=^uUE!@cJq94+KX zaFS98O&ZIVv8^wI??IXM>}qANnl?71zZYBb?(EEHG&>*b0vH@;Ys#jJbkBp zrr#f+Y!}7#a2zDGi)F-dm??ncY)y;BGD@X{7eM9(NGqT7P_~N*gBU=fjC!?-Xfj0< zg>am$sj37^UG!Ij*3dDd3ZEsos(clyH6ri<=-2(@9s@ zSF#EijstNW$D#C2I?mR#`SJzAAQns?>^ISMU4%i5vRy>KKR~;E2)Elq*LAVC*8%{X zopsP~95{_Sj*gB|t8I!o4adRB=>-6wy0M0`UBtzguVQV<0!pQ_aDLT|H6c6zY;Ql8 zK523OT^&PniPpxNZTy;%@b^X6b#buY%>3QT{ACHa`0^Fx1O7Sw7eKNrks<-$&%gc# z05o5|kmk~O+BL`mN238QzI?^{`X;`+y_5r9X&>+q_^p6tGq7x|ln>y$z`Mh@!U>W` z2Y`i~4%+QQp&;6a5B8fvkx!jEnlE3ZN^i?VW*qQP+1Ron zy#mX~#+HqhjRYSGzZI}-29^!U2P`8STQ)K+;GwcHjwlL6;gkxa6iZO>MW5<6tQ$jf ziPmr&Ac|xsJhv|YvjQQaH7^g~>kh|(h)1Xz+}hm{<9S7xD}g_-&iSRN4gi#srnCb@SEGc$FY2fMW$Gh@S~Ep+jq$ZjIh>EW&Fb*(!Tp2us~-`2-V`tb!eVV-_nY{x8@q^3 z#jc3H!6Mw;da{g2tiYl#JbE$}o`YA9)%m*nYP3cV;hAklhuUR%_|wg?0H9Xelu}9R zu9%?fxNr4b!I#{^EJo;uqI+$lgMbavKBm7Er#-98ixs7(`6u3ARB z4;}S?U+!%X$UetU_sPR&#rb*Y zsB;!U4en@e<|~jV5CY^QY-()JnF4Zn~vHA`cYVXagMy9aMyKH|0~js1t9(R zfDi_;_}zpK@qM2_NF+o3{y<6;YPC&c^WwtLcU7TT_ZQJzM29PF5z2N^8)9qI;hS48 zcSgwP@PCQ`knUGE*0ilMy5|kYMs)I2f>i#1SsE|WVci51a7G%AgRbj}zs3pNwa7V5 z-mK_(p7g$(((wa7S3!hZE6HrBixW&sVo7N!p>cA0frI^Ks+vnJa`n(8M>Ls=!ot+7Yn9DVfoA0>q%?#L{wpa1{> M07*qoM6N<$g2I#Ja{vGU diff --git a/Resources/Textures/Structures/Shuttles/xenoborg_thruster.rsi/meta.json b/Resources/Textures/Structures/Shuttles/xenoborg_thruster.rsi/meta.json index 64118c3f59..efc538f50e 100644 --- a/Resources/Textures/Structures/Shuttles/xenoborg_thruster.rsi/meta.json +++ b/Resources/Textures/Structures/Shuttles/xenoborg_thruster.rsi/meta.json @@ -8,34 +8,11 @@ "license": "CC-BY-SA-3.0", "states": [ { - "name": "base", - "directions": 4 + "name": "base" }, { "name": "thrust", - "directions": 4, "delays": [ - [ - 0.1, - 0.1, - 0.1, - 0.1, - 0.1 - ], - [ - 0.1, - 0.1, - 0.1, - 0.1, - 0.1 - ], - [ - 0.1, - 0.1, - 0.1, - 0.1, - 0.1 - ], [ 0.1, 0.1, @@ -47,29 +24,7 @@ }, { "name": "thrust_burn_unshaded", - "directions": 4, "delays": [ - [ - 0.1, - 0.1, - 0.1, - 0.1, - 0.1 - ], - [ - 0.1, - 0.1, - 0.1, - 0.1, - 0.1 - ], - [ - 0.1, - 0.1, - 0.1, - 0.1, - 0.1 - ], [ 0.1, 0.1, @@ -80,4 +35,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Structures/Shuttles/xenoborg_thruster.rsi/thrust.png b/Resources/Textures/Structures/Shuttles/xenoborg_thruster.rsi/thrust.png index 96527263fe30ecdc62a76f53b5236aa4fc329957..dd0cbf0091d8046e387fbf923e77d3da004ad83b 100644 GIT binary patch literal 250 zcmeAS@N?(olHy`uVBq!ia0vp^3xHUGg&9bu2j(3EQjEnx?oJHr&dIz4a#+$GeH|GX zHuiJ>Nn{1`ISV`@iy0XB4ude`@%$AjKtcWhpAc6dEyUfg$a~XO_t)9uCvWeySq2nh zED7=pW^j0RBMrz&_jGX#@i_kW{6^j*3IZ$#Rx*Y&gd{9r{`LN)F?ZwA>*?}$UQBY8 zN#ay&5%?DtxYA@+(X%Iy9zC1pDb(pR?fmbyg9%2yuVzVye)n0tj(ZMPYxUEL-N+G88Qp-o+(yuY#1AJ1l2 zf8AD<|JveB?Vi%79owDf-#Y)}FMmdK?)BfyKPKx>C@f@~AKSFCv^IQhQY9zQ|3bDg z-WP?%?lwNqoGoIT$;$BJYPN~#jU(j_Jlh{$(r0A&bs{ctW= i6>1YF?K7#4mtVEX%v0t4oo~RvV(@hJb6Mw<&;$T%N!8#0 diff --git a/Resources/Textures/Structures/Shuttles/xenoborg_thruster.rsi/thrust_burn_unshaded.png b/Resources/Textures/Structures/Shuttles/xenoborg_thruster.rsi/thrust_burn_unshaded.png index c2678a40337d13ec8641c287fa4b9dfc0e01d137..0d937baf56e91b262c8821bcb898f1d3e78efd9c 100644 GIT binary patch literal 432 zcmeAS@N?(olHy`uVBq!ia0vp^3xHUGg&9bu2j(3EQjEnx?oJHr&dIz4a#+$GeH|GX zHuiJ>Nn{1`ISV`@iy0XB4ude`@%$AjKta&}pAc6d&Bf&^$d@U^-LJ@d(^dD^+2bdD zBeYe35{xB5e!&b5&u*jv+2Woqjv*e$pH8~S+oB-gvXwcRUEJE@4Z|CUHx9q_AC@U< z@F*zWQ=NX|{<_1r6R)i+UM|1u{k)G~O%m+)wzo67D?Sp4u2;VD-*&_NmJa8fzr7Ck z{Wt&7HMm)&%5w{lpSWhENb#Rw zm~Q$eM7e=+#d1|)gBN$$SEce=edTz>*g3BuDxUEoBaefv{>(;qcG>6iSmsX_7YYz- zG(9f)chlSFv!dBkzVN-sf6@?m%s?T#p`o2AdryPutF?^DC4w^~H)QM;Yb-k{_Cn+u z!}Wh`{CB=RI^c4?_w0Z8 literal 2581 zcmV+w3hMQVP)Px;&q+ikNF_==2ywGtr>IvoFN}S4A8)4vpZ}yyF<%o7`m)$e{r+f z9WK|~UthpszkgU!Ic3Okq3wX7iwR)iRFwcs|EuR)006jLgO!0nu?(f)Zt7ej&SN5Pu( z@*LtE2BFykNTq*7Yc^oiQ(Xew)Gt{E;?vMA*ve!%LzaLZIF~_amH=|nKf+lCd_OSr zeEs=;k>!VC3{sT=LMi|1;vT;Kd|&IwQ1mberOH4}C187f0{{SzpPyPjCW~0_$JbI> zpod4{lmeU;KuP*XmY9x5rFa&Q8u4?@22#D>x6L^t2>BslH|0aC?doYDrhotSxiVLR z0Qg0~A;6>nYSKSK)flOU-(KGwiBGyWO2Q?;q70Ce;?HqypqCQFK~)LBUibFh2YCDL z!_j+`%=P}zYwAGskbyV_7!^QE`bS3V4JAm8fw%>jodHTxJ4G4D>HV<`MAZ{>dY%tu z7Ldq*#U;RPe1x+MXwicJV}#ndw(Wxgph*8nO(WzsJ|Y=}R6|pCfSl~(3ectGZ_mmA zzVVPz|GklC1G$YKdX2OQP_hFQl>jvG=GDuS@8Nr`y&$*lxjwkBTeHB@?4PU!?W}~N=0`&g7*7|6>Q*exrSsG^6PFY8ysGIf^R<_$v1DJ4-%OuB*2*c5&;f% zFa-aw)F8CA_wDx&t8YIZ;qc-U032r#_p@VzK=)_xcS{5)ZGQ*>_^CWK2#x*DNTfu7 z#0G&#uK2nXfZqTu)TIBMUKk2MYwyn?mEmf#UzY+%ksE-~$rWL%_=XWcNlK?k|55>{ z^&v*7?IrUwiCG&MR4a@4Dk|l>uC+YTziOvOtUQhPx*)wKl+&{!>}Nx6Rr6 zLw+E&cDo-0)|7#fQm{5dUlS*p`cqjzvi65MM2p?-GeC$`3SI)P2mqi-bWOK}NuAFx zDFdU`U~PuX0LE`IPOmG;o(A@CIMO9F4U!=Ahd_qIFgH0&^7$<13&pw@OU^SOdfL2KX<8v}Sq z1pV#157jHFRDnmD=jZ@(J94p6pu@4+1se z6o79BUvr6}Q~_N~{ITF|g95MX<8Ncz}L8>1Js{Ip_ zU%z}pf6y27A!dKr3;@u_`TW+*K(!X&`;(gyECV#sni<&q$;=2Q077cS!0yY85QY{& z&kuci5yPAih8Dmm5~ zKokI|CBC^0 z8vc9IVh}ma18~~#xFLahM@-BIKLFhJb9d&XHix+Xne5w-$LTet7+5nvtkQ0;QCSGgZBCS5Zpm` zA%6~DnhmH05c7e{KG%aF7tZwp_Jxo+5pW0~*9S`b6pw;kq!x+TZ`GK~2HdNGb0tCh ze7=ju%AhR=+j1~3?qNjtXfo#|2|*v6Q?U~EbI<4dNCe$QY)4Qi2$J|h?B${c0QsQ1 zi0%mtWdmv4+eXFh0-Oi|KtAX$Dq(Q5!P4x9&gb`h(}`gihG7_nVHk#C7-z(0vpcw( zAI<)Pr6s%(buaM64(K01A(SaZzG=HZAPPk$r_m@a;blk*kaQBikB*2#HWC6KJ*n>gLbC zgCkIX#|my*z_n{CM|OAL5B`qW(0>G_w3)ImX&V4QyZu+YyYB~p__kzjM`HH|k#7G<0Mdqiq zzLfA{_7SP}U-uSxv@IQYw67&R*9QQ(_Mb9$XUVHk#CESdiRSAMuoaS$$-00000NkvXXu0mjf1^MJH diff --git a/Resources/Textures/Structures/Wallmounts/Lighting/emergency_light.rsi/base.png b/Resources/Textures/Structures/Wallmounts/Lighting/emergency_light.rsi/base.png index 8b85bd6141c3218bfbe58fe8a88088545234b8c3..3df06a523f4f117adb6736d28dcc8d44a00de2c0 100644 GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnH3?%tPCZz)@#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6;>1s;*bK&6L4nDKc2iWHzAPk>K|E09)FFo_Hc%FN2zBB&?}yLNJwgEU_QgMn1P2u_yFSv3!TL?fQlGAUHx3vIVCg! E0FwwOvj6}9 literal 262 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|4tTmahE&XX zd)tujkb=mu!WW!YB`;Dq(iN)s*@gQV*jJ@rs$ff=0~F*fC}3k&bbRxFdtKv%?Y43A zL^`(^*-f*bS3a{UJ^0-6>^OGwhi8cliJ*))jvn zZfQ8YWxsNb^W)7gCw>OzPAxsReaBrUpaBc!n9I!6O;+(e{ugAOr>mdKI;Vst07EBe A2LJ#7 diff --git a/Resources/Textures/Structures/Wallmounts/Lighting/emergency_light.rsi/emergency_light_off.png b/Resources/Textures/Structures/Wallmounts/Lighting/emergency_light.rsi/emergency_light_off.png index e80bf61e19f07c72007b4455e351c8e13226c39d..4c64811de9fa30cd9e4f7a52b6ac2e206cee462e 100644 GIT binary patch delta 130 zcmey(xR6n?Gr-TCmrII^fq{Y7)59eQNGpIa2OE$quB!SnQBfn}5Ca3>Ax2RRuLhu? znWu|mNQC>_a~nAs6nI<@zOnahJ89RoKY3}}Q_i6Jlcl!p8<5A~>FVdQ&MBb@06y3%C;$Ke delta 221 zcmZ3;_?uC&Gr-TCmrII^fq{Y7)59eQNIQTq2OE%Fm05UiqM}CqVFm`i!;HuCSEK+1 zCwRIzhE&A8z3s?#SV4d_;P&PUh5lEKd%U}a7K&`@h+Oh=54%x{@P!oPI^T=7+p0X) ze!ZG~uF|G_?bZ;l$g2BO=S9a}QnzIX8U+M@w%tyxyn9A%|Jszv%Qqcd{k5Qs4=8N0 z;`{Y#+i&*2=DfebZ`^Um|9+M8lb)X!59=K;5mWe7_6s0b+N?Ck90;{#;(mhOE3RL4;g%1$uq||-7i7GaqsIq1&3`5WH=_6E@5Qc#3rtga6q?z-TZ^5 zA{-NR86+Px%6};^+sVa$3PDAboFyt I=akR{0OllH2><{9 literal 1329 zcmZuwdsGs36b2*>m(s&Lr5QQRl_9ihnYIzW5+9(EZIK#1bU3Ewz*igi>S5^sEzJ_m zPFZFdEN3Wr%q$gKg*gn$LLvfG4k6+Ll)-ST{_37{?|1Gw-}#;UefR!O$Kt}B9NioN z0Dw~jCKPYOOY^zV-d0QdNq#l}Qt{!z0FH3gsI38$g0MjVz-`tS=7S4tJtPA|paKBS z59bpoIC4G7#_5d+4T{U%ua$O1dPTVu$fwhbwjV4*k5s;~J2m3FJ#p5)usl@->~?5_ zu0h?Gf*mI85l;~}S9UwZCM@vmL%S9wDJMs3?uk^{L!77^%m^#&cw8kzFjf=#w=^pd z1Wy|=6wm%+5lW>}MNd!IV0x>J$Ky?YwfXELZ#U;+cePqQFg!erYY-hBg!y4xUon2| z*#DC`)g3mWcW0br3ZolDTkd6dG?x&QEu1+klFq4rPWI?Cm`jn(w{0{gi_Igk6ISXzDo1Cv^B~U4T?gk zbQJ|dO-YGFu+7)c#wB#SR4hKUhX>q*Q@+g3$q|tnp*a-F#Cy-frnCaznx)U~qF`dy z?l5d)Su&vxsu2VL?+{ABpL;P^-r_67KVN=y<@c&vCo3cG>vPRv?N_Uxs*o^9N(Vg4 zqpF9K0AlXE0t<{=$5e#WK~ne|i8Eb4Xk8;!7AXmoH|dkX=)gnHV{znx`eRfMm+Ox} zBB3@(=HX_esgwG$NkL*VnT`smy`7pyx#4tpRH;6)mKXIbZVb8Vec-t<^R5IB7Fq@c8tzoM%uuM-(#>8A`}XT-%$|!`iSD9$hWe+J+6;l zTb(`flM#Z6^(GgLE~i2IW^7d*INC)zhw#=I89PJb<>dt%!$1#QAPaYUAGn;t2*)&^ z$FP0i5^7n&X?aH5!CLS+y`Q?jFvU5P-OHteD8A0~W0Jc^<1?N|Wzp!zT9_;)6^DL2 zo4HihjDnr(4*)8AZv9687S0kiZqv+Wnv8~EvEbN}fHXt7?<+G=tOtHlI!5kX*NAxc zrBj;fyX-)Zw4seLXiajVSRYajej+z6LRhC!c?T=r}>&nnj6(%9|$<092{2NvB3^Wq8T45Q5a*H4rKo} z6Fq^QLznt(yPux-zh@ssf4~}W;_@oug|$=i_c~oNmcwk?p)pD5)`sn9GJq`UE>fNj z+S^Zj+b>c7`6J%F_b#e-FxU*A(!=)(`ZsUD#m!V79}KPeItq<0`)`RA1dzDH$Mc&d zr0Ds7Vq>@bZoM#OASlq8Xt9AiXZdtt0J2v}o*h9V@pi)pt(hMvA`BPG2|iHtFB491 AqyPW_ diff --git a/Resources/Textures/Structures/Wallmounts/Lighting/emergency_light.rsi/meta.json b/Resources/Textures/Structures/Wallmounts/Lighting/emergency_light.rsi/meta.json index 6d66dbed45..bff673c59e 100644 --- a/Resources/Textures/Structures/Wallmounts/Lighting/emergency_light.rsi/meta.json +++ b/Resources/Textures/Structures/Wallmounts/Lighting/emergency_light.rsi/meta.json @@ -8,55 +8,14 @@ "copyright": "juliang, modified by mirrorcult", "states": [ { - "name": "base", - "directions": 4 + "name": "base" }, { - "name": "emergency_light_off", - "directions": 4, - "delays": [ - [ - 1.0 - ], - [ - 1.0 - ], - [ - 1.0 - ], - [ - 1.0 - ] - ] + "name": "emergency_light_off" }, { "name": "emergency_light_on", - "directions": 4, "delays": [ - [ - 0.3, - 0.3, - 0.3, - 0.3, - 0.3, - 0.3 - ], - [ - 0.3, - 0.3, - 0.3, - 0.3, - 0.3, - 0.3 - ], - [ - 0.3, - 0.3, - 0.3, - 0.3, - 0.3, - 0.3 - ], [ 0.3, 0.3, diff --git a/Resources/Textures/Structures/Wallmounts/Lighting/light_small.rsi/base.png b/Resources/Textures/Structures/Wallmounts/Lighting/light_small.rsi/base.png index ababfbfe92dba8c0c51fbf94ee5685b5b4520f4f..1bfe20b4a0211ee9e600502e14494437bb9d90f4 100644 GIT binary patch literal 212 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfv#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6;>1s;*b3=DjSL74G){)!Z!phSRAh%1o(|Np4aYXLP z%iix!lYojDm`Z~Df*BafCZDwc^2|M5978nDCkwDJvWY3Dva@kCaLr&_%w^Cr)$oCM yg0H^6gQ$nIZ~}+7vvIR2qb~!a8!KBg1H^VDNPHb6Mw<&;$S$892)T literal 618 zcmV-w0+s!VP)TA`6`rBPMgVWHdASusw7GD2FGwt5W+RCy(W@x z?+)}9H9i>t+&`SCr^k_6eq8H4H4i$;fIi@50DSw0!!L1ke5D`5o?;fb&?p0zZ#SI@ z-4@bzf7_5!{yK|UfSjfa>2#rvaE;451J2K0<@;)1A5#my4&E6+0n~2Ow)G4MjTxY8 zu)Q(B7O<}g{5ybvhT7QfdEYULGk}1G+VB|AB7+!3xA~i7=QDr}AfO>AYybfbL16<3 zXb4Kw20$GWDpO6a5v>7OgoUzP6BD8|0D^}~G*+dXm=OIKfF^k3yD}6Sb5+Xr?eofz zBT*UvE75r|5--nl0j2rrWGH-Br=y$>BbOJS`e-~JdS4^zb%9OveqEp~*Z=|=g2Dz6 z&=3?hfPjXeumJ=#1cePCpdlzbZ-B&UWR_)mwu7}c?EI=uDsWP?sX?hrsyhDCTa63j zmeA=92h+(yzYt4I&;$uDc9~U$GQm|F))0l!+zIsrU{IE&?)bLV)_z?3H#!i~wF$1% z-D(Rj#+es$T~An#0pJX}gL`a*j2Vo$^ZZW07*qoM6N<$ Ef<2ZHTL1t6 diff --git a/Resources/Textures/Structures/Wallmounts/Lighting/light_small.rsi/broken.png b/Resources/Textures/Structures/Wallmounts/Lighting/light_small.rsi/broken.png index b44e814ffaac11ab1849b262e466e2c05df7296c..36a7bb07216cc0934c417ba87e71647246eb8909 100644 GIT binary patch literal 199 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfv#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6;>1s;*b3=DjSL74G){)!Z!plEF9<^v45D+`m5Z_>GdX+I$ kMN!0;+nM38h6K=o0i`S%AC7lh0(CNYy85}Sb4q9e05lOd0RR91 literal 499 zcmVd*67DtX2+-b>FvHvQ8J(P z&GPxiaDM-Aq;m8buNklnG%^5>dhhUpmQNGn{GjtnnrA^Hc>2@E7@YJe2t?H40cam% z{8pgazrnI_A0s4z`tzsM2~Luq%TZ|nau}hBcqaNc!RVJj^fLee00000XvNnhr}kA? zoU-I;1eFF5!Q!50qI1iKicH}&s1b=y^T>1ZiB9ioHpKbai_HgvPV0RE0000000018 z@G-J{l&o_vaY#DUwUpnW+BaAK%8nD!o$y(j3$CvgwnAJ?z3%0QV0*}zd}zMYHyPN~ zdXEad#SuE;>+XEx`*?V23;6o$Nw)Z;%GJn!7Eh)AiFmo*OB+M5KjGaWA{G3l`D|hz za2dkYc$000000DyQPqBl&m|GQP}#hL&B002ovPDHLkV1g<4=(GR; diff --git a/Resources/Textures/Structures/Wallmounts/Lighting/light_small.rsi/burned.png b/Resources/Textures/Structures/Wallmounts/Lighting/light_small.rsi/burned.png index 1ba972629ab328f4ceaed72eb112f7dce7b5bd67..4c3ed0a11635a11a4f39c8959a62dfcd8999d5e0 100644 GIT binary patch literal 228 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfv#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6;>1s;*b3=DjSL74G){)!Z!pkjbeh%1o(|Np^xl@Lp07O3$QS@~ literal 755 zcmVMp2(6=$LZKis znT$xKQu4q#{znd>tLwpCO5T3oD-WLu!cX@mf*@$R^6krjc(>I{6O%Q1(oZxq^(%16 z2VGspJpkfI#?PoyxuD$-3Dah*W7GrI^G`*0_aiEo67=WqIX!>bgO;v=VG;g10>&D!eqH)jMxGMsW{tpoX^LF(5*WehS+r%HJd% z-vihH2Wqei8{j|!OKJl;?=oIrV+~SfBaD| zGS-O@)*`4uJYxA5uWCkZd7B9$k;cLd`2O{A)6=I;$OIP`PNi_HQJ6k`;H3driOww# zNa0wK%5NmebamRx>9At%^{G5dr<2BQc)c!g8?he)qJj-@pa!e30S?q)6*jD=uu8`p5U6QnHk*~R9kmHE`}S(nV|Y@bCPlYxP`XdTb=*`h0u)T2)n-nm zJHSqFoa8r-N$verzyzIHl`Ru=YeQ&?@D$M*Vl)_m3_)JUc6aRf#(rN!Oh{R-c7P`2 z-}yH`wbb3W3A)qWgU>@!JVI0Chtsn{rbq}!lvI6;>1s;*b3=DjSL74G){)!Z!phSRAh%1o(|Np#00nwq1Sx0jPn&)78&qol`;+018(&i2wiq literal 456 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEVC?sFaSW-L^LCb@*AWMiwsfbc zgMLAgJ}ccl5_g(M1XPEsxPK6FjH$kE91&I3Ai7#4`WEN5LnmgZIyN6t+5Pcv;y?a2 z9!{12zl}LR-|P8!&wcCrE2VEwZ~EdI*rHZzncmRRt9{??)8VV>7IF4Ut@n6u*X^!P zT>G~$wXE=&|F>%s?Q4C`{K-qSwy$+q^!QaagVn~u)Wuy{3>gd!Y@ukxwo|MondiU! zIv3(@$y7J{*)hM`+aH7(E?k%ytCn`MpFxUYfukrEV(JrKiCo)+aPQ*9GK`yq_SQts zZ2qfb^74D^T)DR#0)F||KFxhy&#%|Vw~j>yi+-?~KtndnHrcdl)run=wwhhNiNf2b z&b@cZ($30c`{&;)UIh4doMq5Yf4*>@!V}-iEwT6W->+vreb`aU^RlPdE6$VunTwvs z+<31)|A2_Yg?a_kBTqkTg-n|CpHs+*L$O7`$)idlc^^Z#!#2sww?BRY#t?(2tDnm{ Hr-UW|Pb$5! diff --git a/Resources/Textures/Structures/Wallmounts/Lighting/light_small.rsi/glow.png b/Resources/Textures/Structures/Wallmounts/Lighting/light_small.rsi/glow.png index 0bfe0a7ddb6b9e6290372efb768e2eb52d072eaf..07776ac0c09b20ae16c2c7a17dc0cc11264f3ba4 100644 GIT binary patch literal 227 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfv#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6;>1s;*b3=G_YAk0{w5%g+mE%rX}?xZQRtkS#VYGlwJw9g9jKHzNm98e7<$UG@w}w Mp00i_>zopr0Fy;fBLDyZ literal 9382 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 diff --git a/Resources/Textures/Structures/Wallmounts/Lighting/light_small.rsi/meta.json b/Resources/Textures/Structures/Wallmounts/Lighting/light_small.rsi/meta.json index 09378e1ebd..4c4fb2585e 100644 --- a/Resources/Textures/Structures/Wallmounts/Lighting/light_small.rsi/meta.json +++ b/Resources/Textures/Structures/Wallmounts/Lighting/light_small.rsi/meta.json @@ -1 +1,26 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/blob/2b969adc2dfd3e9621bf3597c5cbffeb3ac8c9f0/icons/obj/lighting.dmi", "states": [{"name": "broken", "directions": 4}, {"name": "burned", "directions": 4}, {"name": "empty", "directions": 4}, {"name": "base", "directions": 4}, {"name": "glow", "directions": 4}]} +{ + "version":1, + "size":{ + "x":32, + "y":32 + }, + "license":"CC-BY-SA-3.0", + "copyright":"https://github.com/discordia-space/CEV-Eris/blob/2b969adc2dfd3e9621bf3597c5cbffeb3ac8c9f0/icons/obj/lighting.dmi", + "states":[ + { + "name":"broken" + }, + { + "name":"burned" + }, + { + "name":"empty" + }, + { + "name":"base" + }, + { + "name":"glow" + } + ] +} diff --git a/Resources/Textures/Structures/Wallmounts/Lighting/light_tube.rsi/base.png b/Resources/Textures/Structures/Wallmounts/Lighting/light_tube.rsi/base.png index 68efd66a582da1c4f129ab15e03aa748ba2ca60f..1d442998b43be99989869ca9754bdeeee29b72f4 100644 GIT binary patch literal 238 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfv#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6;>1s;*b3=A4GL6~t@GsAtLpl*Oqh%1nejEstmii(Pkj*f{*NJvadN>0zn z$ji^qFDR(0u3oV)cEiflotyFw?kd~NWK#sxz*rLG7tG-B>_!@pW9#YS7@~1LIUzwr z#H7%hxk)75Ihm1-jqRJ{#_IP?2j8xiWmRYlEqs2j@!;&`s~wnlo>mz&x Ypq!x4QCgi3bQ=SMr>mdKI;Vst0OIpV{{R30 literal 1631 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|_);T0(|mmy zw18|5AO?X;!IOa`XMsm#F$06fED&ZCw^H21z`&fA84^(v;p=0SoS&h?X&sHg;q@=(~U%$M(T(8_%FTW^V-_X+1Qs2Nx-^fT8s6w~6 zGOr}DLN~8i8Da>`9GBGM~RsBTId_|A5Z7NlCUU$t=l91qU45Kj08_%qc+?1*r!G zK~5$pWUX=%^U`gVDs)p)(-KQ_N|fx95{px9^dTxxbwWf@4Ybk6Vz&**$5xR+sm1v@ zrJyjkGcq%=0fz&MC?fPBIwG*@Ko&*U5s;Bzk`GKxMVZN-c_pbu1x3J=1+fuoA8r-s zW+5yO&C4vYGlCj`CXA#DDQ2u3i%QD#i?Tz&u>c7|oYGJuAi;^0G9k$x9Q43+Z^vb$ z56?q(T;7)3y%-pnDm+~rLn;{G&OVrT%R!(meWK_Dg^&*Em%&fn{CBpxFWUZ1=!*CJ zRm+#LTz%G1+%dU+&O&Lf6KaCn%KlHiwr1~}H|L&DEZ?)a?9tMfU%VgA&AM1R$Kv^x zJ9}Te3wv*SUcPv5oXFB0k5&qtaCEBNxI^3ji`VA%Bk${eWNPe<^EdeLC130EYwyUl zVMbEDfA)uJeE({Ht?Z+*@Cmn5pN0D7ZF%s4jp5kk_tTr%84hfyITi7L>)8|oi4`5& z7+?J8s-1iOZqZJW6yxOm|E?IN%#8U`xJqW5GNX_Je$@C~AR~6dqcXG04N0?>8SVaA zla#T}C28T#pWEY&WTq|LdH2AX*(WYkd(^o^YuL;6v+m4N*ygo=LTVB3hONK#%`!xN z|0rqfj$6MyHs4HotrW$o;JsOwq2=QK{}op@T76%zKXmP(N3$5B zZ2n%{_I>~R+P#r#j6xcm7CGG;?@I3uc3CkYN9};x1io+YN_IarNfceE#kV(SRqMG6 zdqe9SgdYg|m>aOB%(j~)aboAMmiC$XapfELzL((@x z#ok#~@y8jq1v3-pt`C3F#lqmhdB^z;a}R67+e#LOiWwK}S*%044K^cM$T*Jl51t#-tAHndHvd; zNo|)x)B9g8n>3~!5zzR0zu~K7L+ZzqS5u@NZNFULcxbig$g0<`+vjj4#9uIAN$r1` zV5QBV!~gK`F$pH+3xd0D&3a(yu|~O(gTsdT^r8=^Uu?7Z4=UU}UHx3vIVCg!0Pb*8 APXGV_ diff --git a/Resources/Textures/Structures/Wallmounts/Lighting/light_tube.rsi/broken.png b/Resources/Textures/Structures/Wallmounts/Lighting/light_tube.rsi/broken.png index 04872006575d7af1175a013cc24edd8be262520e..b9620d2073c1e21fc8024acdfb476326fcd19594 100644 GIT binary patch literal 261 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyjKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85lHXf-vK*W`_GfLE`|Q5LX}_85tEB6%`d79UT*skdT;^l$@5H zo}Q7Bm!F?sP*7D}y<%bPhLx!sSEcRTly`7fnMiTcMxZvvk|4ie28U-i(tsR4PZ!4! z3CXty4>C3=@Gu{6a_kP6{CByi%iM$P<(FC=gKybsu4KEaFj-c0G2;aB3lqEzXMT$^ yo-3Qe;F-Se>XSsVmwV=3vV7T-wn^u7eyoHTvu1wyoyS0v89ZJ6T-G@yGywp4HCIOf literal 1801 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|_);T0(|mmy zw18|5AO?X;!IOa`XMsm#F$06fED&ZCw^H21z`&fA84^(v;p=0SoS&h?X&sHg;q@=(~U%$M(T(8_%FTW^V-_X+1Qs2Nx-^fT8s6w~6 zGOr}DLN~8i8Da>`9GBGM~RsBTId_|A5Z7NlCUU$t=l91qU45Kj08_%qc+?1*r!G zK~5$pWUX=%^U`gVDs)p)(-KQ_N|fx95{px9^dTxxbwWf@4Ybk6Vz&**$5xR+sm1v@ zrJyjkGcq%=0fz&MC?fPBIwG*@Ko&*U5s;Bzk`GKxMVZN-c_pbu1x3J=1+fuoA8r-s zW+5yO&C4vYGlCj`CXA#DDQ2u3i%QD#i?Tz&u>c7|oYGJuAi;^0G9k$x9Q43+Z^vb$ z56?q(T;7)3y?{AR$ezVZI=Bfa%Cv94|s zJaVFLLGGc8JT#X+?#<@?UXp8Nf4a0TaLQ59=d255SdOSqUTn0m_)y)Fw6AmX+Gm|r zJNV&^yIb?`>zQ`*gV$eQt+%`Q`_-k#>Mbjm**>pUm!H*vC-?L-6%|-o8UzHGoE$hf7;$m_@H0iL2g&fX zN9CN{)YI0VA9YE_WqLJ#e6(4;OT zzgrgjb+j&CW4)=Cq3HEDZ`Pgf@f7X!yjVTa~!pj)jPNRX%ol4>+V~6l012wR<1O7SuhHu+W_wC-d@x0W5s=dozmUtO*D1Q*Fe`K=!h@OlmcVh>~ ZAC`1C%kVuP|4D+XAx~F7mvv4FO#q;ZsmTBU diff --git a/Resources/Textures/Structures/Wallmounts/Lighting/light_tube.rsi/burned.png b/Resources/Textures/Structures/Wallmounts/Lighting/light_tube.rsi/burned.png index 250db2b70445495b8c01dc7a867263daaa62b0f6..d54b8c8e950229681fd47c332a291e13b39f8ad5 100644 GIT binary patch literal 355 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyjKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85lHXf-vK*W`_Gf!HNK%5LX}_85tEB6%`d79UT)B8zvMNE}W2% zn3R;95-XXOo}QMGk)Dx}o2HbPpPye)P>`uwS)^B0U0qXZSXXY`SY_7PWY^Vf-`(QS z+ve2Y;WDY)eR7Y-lwQwi{od0j_{^H@KX+Qtyy?O7XM`-9AH8aE{OTnM+tz3AeDz!x zXg6a?kY6x^!?PP{Ku)@+i(`m{icgDdc0*ZONe-dwZkaB1my64z;d&1j9@xtZ}lgTe~DWM4fpS6Y{ literal 2107 zcmZ`)4K$N$9Dj!xeN2v$KF-}%p}O|YxXkPwtNECjF_A*qC(CTJy<>FCLLsNGtI`og zS2ul-K7~k8M^WihO<$xB*UhceMLOO4ZgZthJ?A{{`#k^W|NH;`|KIa}&zl<(>_6FR zrWF7HlbHbwF7o!#PqaDmJS<6ijJ!}PuK!}7^7`yvWHUt+$rQ8Mz(Qn=My7t;3d={H zmWqJoDgbaQ)K8Qh1$P1fOvRF=k#HnCh$4_D5_m#6UqsL(Dhw#9hJq{;MKBMmNtDV| z6b*zocuIe2NF;$Ik~8ArtV)%^JdLwVHP;yA|2PbhN}!Y|V2NCY)yL)W z z--R(1u)qyb%2$KrGg=>#sKCIhf`#BX2arT0lAVbpXObs4Rv(f+RVbjq5?CrS2sc)b zK|#6{{@SYd*GnLk=#`~Nd9pYNuW=TN#5}bW#?$ybm52%&J-$X7tzQSEg5Tk$>MN!! z=ZaKvsamf&jpXh|HR$k_^^5vOMC5l7G}35*Z_MLR<8FpRSHdZBWx`U!Ef^*I;qhn)qnzV9)7bU~>5;ytSy92U zZ-{2a@~jR70JEh`27Rdp^*V~hnHg$JbA8v2cFSOj0z0i!ozV`-PuTf{kEXi&Wib(* z;Uk>dBgqdOetF$6tAOzEE~D1PXFnak!fe56v!8;7uWPOV1lI1hhxu4nyT6N74K>G9 z=T)|(D;F=a9>J{zn+|W=@AT{I51Ntmh7S$uo88J7kHXuXl+roq%4N&W+j~Tlbl!x4 zXQnA8ZZukO$ho)GbWFcklAgY=`z^U9n!pX;>F(iC6X<07XGBHBkw*zT5<)j$zj32? zXlS>|dSDvHHR}wnVizj7`eF{41~iTo78MD10zQ=DKa%U%VPRpmxs38?LYPB-snnhI zllOCr$K8E)IB0raQgMAfbhx9>&C9D3rEPgRkW?388rzt2>A?K{>dk(cdua_N#l>?1 z4{&>u>w0^7vI?&`U@YJN7ESN~nn$XW*2-jCkWn6SBox2BY{i7>-eVa6jydiB41VIP5hZvXm+m|nBmz6weqh#)1 zGuUd z8;gGD-@2g7wGaOkJ2%QADD~vo7FI<^-*d|j?uZtZm>tr7-nQ2I^oC09)=1jMH_@$b zx$XNR1{^k32)r;TMkW+k;OWppDxAWc+6+N!ZoNR0C#63|qo$cH!P&I+pQx*2b#!!` zW6cZPK2cy2#kRfJTU9qNpZR!t6YuH^+is?U&(FxjbtOHBvF^{_yQPtnW5uxyHs9~l zCDX-N_vL6g_a}DRn`^k})t}zg>z*y@oH|LfQ?aMZvvw_JGY(i%983MHxya(#2C{5! z)>n-XtyY3f6qtfz#BpKT<2W3roqobK0KVE0V;XLaG_ zes2t_s5DbswSsnoxYC@P`fix&s4iV=cNwx0i^Z~lEFSe9C6V8{RaklaxXa#wAx1!6 zd=YLVM7jy~#e12tZF1+Oq*n!Js~;&gZtKXtbLQTLIP}(25%~#y{afs2^gC_fv?3>W z${*d<%&*#2`|qk*N0X&}Y`h~UgFmdgN&~8__SgeuHGGd(S!I6PysM_YG~w#|`=dqP X;>$Ixrn|@=9RQfV!Hmkqu^ImX-=-yL diff --git a/Resources/Textures/Structures/Wallmounts/Lighting/light_tube.rsi/empty.png b/Resources/Textures/Structures/Wallmounts/Lighting/light_tube.rsi/empty.png index 00c1236d7f6be3da9eece4fb49914097373ac94a..1c493c91675339bb651313d895005b40097f72c1 100644 GIT binary patch literal 218 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfv#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6;>1s;*b3=A4GL6~t@GsAtLpkjbeh%1nejEstmii(Pkj*f{*NJvadN>0zn z$ji^qFDR(0u1+=0Jpok2SQ6wH%;50sMjDV~>gnPbqH#VsAwfjMq|lqWNhIAlnURf+ z?VBVcPr!j&febh?X&sHg;q@=(~U%$M(T(8_%FTW^V-_X+1Qs2Nx-^fT8s6w~6 zGOr}DLN~8i8Da>`9GBGM~RsBTId_|A5Z7NlCUU$t=l91qU45Kj08_%qc+?1*r!G zK~5$pWUX=%^U`gVDs)p)(-KQ_N|fx95{px9^dTxxbwWf@4Ybk6Vz&**$5xR+sm1v@ zrJyjkGcq%=0fz&MC?fPBIwG*@Ko&*U5s;Bzk`GKxMVZN-c_pbu1x3J=1+fuoA8r-s zW+5yO&C4vYGlCj`CXA#DDQ2u3i%QD#i?Tz&u>c7|oYGJuAi;^0G9k$x9Q43+Z^vb$ z56?q(T;7)3y%-pn>^)r^Ln;{G&OVsef8pgdTb8W|Iq@sMNl)j@oBx&@b}-M|cq&04_1dZs+xy1zo_pHv;O;uRf1Ubn zmu=~hd3xT)%+?w!^u<2cxNf`h`{Jg%?cWz>ZokbY+i#y_JbQ20rHdC|7&hllQ91eW zM&0W*@(d2{R&)ElursXExtkY$#+0`qzq@9h&z`GUsT(pRZohqgEz$e!q2oKtDr7h( zFc3g7P74Y>yOw{95b7$FnSFH6ESX0NU7HNf1Q#DYa>g<3h0vr>8SamJz=S}UAXT3*|g94>k`8^-`Upe#^~U5&2O>$;e~VfZhhPoxUkYUW#_~` zcc-$S+qRT$_G40+ApGG&M33FxKpCZ&)+Ne}>n!c`tQ;rs3*UOMs^GMZ^PnpYG(RLf8XP9b;YvZ;^z0i>$f=> eb8}8;_{kDI_dxejuSQ-_8SUxn=d#Wzp$Py12{cdu diff --git a/Resources/Textures/Structures/Wallmounts/Lighting/light_tube.rsi/glow.png b/Resources/Textures/Structures/Wallmounts/Lighting/light_tube.rsi/glow.png index 43816df0cea9ad7b76919aa1eb9a376635456412..25cdcfe1343be9a58f6d0e568e161020ee59d183 100644 GIT binary patch literal 215 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfv#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6;>1s;*b3=A4GL6~t@GsAtLpkjbeh%1o(|9}7g|Hrm$EV_AZ=B?|q9zR_6 z<=fFO-;VwJcl7`NgTe~DWM4f D@bO4K literal 1571 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|_);T0(|mmy zw18|5AO?X;!IOa`XMsm#F$06fED&ZCw^H21z`&fA84^(v;p=0SoS&h?X&sHg;q@=(~U%$M(T(8_%FTW^V-_X+1Qs2Nx-^fT8s6w~6 zGOr}DLN~8i8Da>`9GBGM~RsBTId_|A5Z7NlCUU$t=l91qU45Kj08_%qc+?1*r!G zK~5$pWUX=%^U`gVDs)p)(-KQ_N|fx95{px9^dTxxbwWf@4Ybk6Vz&**$5xR+sm1v@ zrJyjkGcq%=0fz&MC?fPBIwG*@Ko&*U5s;Bzk`GKxMVZN-c_pbu1x3J=1+fuoA8r-s zW+5yO&C4vYGlCj`CXA#DDQ2u3i%QD#i?Tz&u>c7|oYGJuAi;^0G9k$x9Q43+Z^vb$ z56?q(T;7)3y%-pnY&=~YLn;{G&bIbvauhh8?k_C5Wy6M#f*LGIN*51#N$dV$3#)U` z{>vf~6d0Ltg~fuav;WwkL*)n8ntLlWlplBMdmQmESZ4bjyR*2FL3dADT> z%KX>mQ_kiJ^GYlzoWpii z>-&~z=PoBD-M@Zr-$cc*lsSiHSv$MT)X8@9etY1?f-rvNHDA8{a=4l`Gc0%=`vjQ^ zmD}qAly;gFSeq~~3INfJET+Y?y847y&G-GU=9K8~cs#S@{f)S7D?0_!n+uI5FJRk# z@{5_t$}^X_Upd{qdt1UoNww}M6$4Sf*2ib`%(c&a zZMd&~`BUYr`wcrwk5Al|8u{ht+a29Ym@j_i6}ao_dSVN=^!+K%m^OwQo%PGDW^j<6 zx={2XW81!n+|3UdZ>`{2%fWB(obd%ApGr-TCmrII^fq{Y7)59eQNGpIa3p0>x3`su@q!^2X+?^QKos)S90By6(|!K7PMi*hAUUD{Qv)7RaF(pZD?qiJ$rWgw-4Ka z(yS#xe!)PRf#Fa#+eRQ|=IP=XqH#XCfU!A1p<#oBjD&;2-o=Z37|t|tb%bvbU&O&N rZMyU#4g*VRV*>?lg~q@}MJ=E?_XQ^=9qyC^ndIr}$Lg}qDWM4f)c`yJ literal 2369 zcmcguYj6`)6y8=4+8K%{bmXPW!YGKFeJ1;8!>eg+M^j75(4tJ+&F)RRHpy;xw{2Qc zJC(tJ6qVNxD2Vtd10w<|BNU~K3Mwihh#>NCMnnZftW=x|dN)mD!GerBX0qA4cfb3c zbG~!Vy_s8(f6su_VW|j$49Ls%6vF!?`|5uq{9UV79fh|PJ$HtQAZhQ|SJIO4X~Pku zU$W{ewu-&?iLw@QNQ&kMjz~y{Xavce7||uU5?H7ol&fJkcD8jphN_AiD{^{Cubu@e z)ZBUlOsmiL$@P`8pkNaxpqUX75`=&yp^;E9Y>E*#7ULD+*q$aZGzPIM-PmN?AX@A# zK(jOhpn`+MWs;;&PH@O1O|pLaZj>fzh9GHz6mZfd(k_u=(f9|0<_sku7J72x#^941 ztFSCxB#7GDT1PG8(2R0|5(L5KplKW;aI-FKNfA73j_zjg08=(p-BPtMYBNfHt=e*9 z(ABOOLVAKWY{qqhiV+b>CnyJL#}or9assDU8^M@yMJ7NHgh1FbA(l#D^$N|>%nI!) z)QQ)Z8Gzb)y$Kt=`VtByOqf=74GbeLNUvzqSEmD_5SUuEA%pB1=;mlU8ePmXfMjWg zPt$_knJVaZ8Kqf=3mt3chIGPl$U#%Q6D0vhF@iD9?1f33@&1E zlE!J$M^Ylii6lFoWJHqef_gPY4b=67GC0NhC{}b*B12yWh2^A3mh`t^MHT~^5t5)5 zYDg*vgdQ%((1gNbmKM|uXc&6O#Juo&#k{a-Nnsh}dE6M3!=b8*r~u$sm;j3l0YKpb zU}fA-`z4$s`G5i&faLsK_j->eSKCRq*LO95qREisPpg8{#mO@3$0dg4a7AWaxFm2c z+$r!p3F|+=^K3WU{e}vAPzv^BwY^dxql+i~0`KB*AO{%S#j!lj3najK4)_JY$r3}e zcA>{=N6b}CnAN&?>r4Yx@ljAkW91@BvfT!5Ot$k66f8ci_M*piS&px-tpJep8p-dn zZfXImRx-fka;V+EsXO9oahX!hwWDIW0LuzAhm(v<;u6II-0$aj9FR^}-7ZF88NOSU zo>9R%WqcGP!Y|2m*Xe&8Ra{KDLJF4yxD^xFKacbJs<|tGE8_fXKmIRq687HQRkFmD z)f{`*V;_gHRAJ*(pQR_7d(uRw?A8Y*8A(d(f+H` zcMUy0eM8Gn8Eal0xM~T~yr8qNk$7}tai5~hhQr{K#hH6XVf=`+6X_WCY5t_5ij00% z>X5dyww%5jZrCt2=`<4bAsNW&~|?8bcxEiu}^s zM!&cDjp*WccU8??KQ%pjl)B7SahXW5wT!mqzY_DjaxVE>gxX zLw9f5`P9PazG}^xvGjeNP13jb{jL2qGk@!>Aup)&R*!w?;%p-=GOM$7x3BWdi7~}5 z4la1);+v;@l}&3i7LK7>k1Sa9{XlYOn^4qwbX0P~zN*s7@e@0~Y~571`S8nI9y?;3 zO6eH7qR*kEgKLl)#C2E0$cCoWvVLXHCm&2Y_;X1c*RfJr+WO%-)&7%{m!0ofKc%ek E4+V54O8@`> diff --git a/Resources/Textures/Structures/Wallmounts/Lighting/strobe_light.rsi/broken.png b/Resources/Textures/Structures/Wallmounts/Lighting/strobe_light.rsi/broken.png index e2a4ab462c27ddb60bced9007ab1dab7077ba2df..9b19aaac5a9de3d1cdd18bae2e1e1d086017dcef 100644 GIT binary patch delta 201 zcmew$bdAxjGr-TCmrII^fq{Y7)59eQNGpIa3p0>x3`su@q!^2X+?^QKos)S90By6)2ONo4aAdhX4QntE#F-h6P1OM*~F~8X9zDoJ~O* zOM?7@fi%PB$!W8Il!>Q{V~EE2WCJ#4afOBr5ag9lZ-)-`$UU+*Z>{_ZJ$ha?zE9u?5 zagz~bv`O}q>ZR`ayr=}tf~0tXIT{Q@G=j{W6%7kwCD2hX@XH|wHt^X|43#AZw#4ct z+~Gn{A-if-u()=CN35+BISHHfGCDKLLxLdC1vDBAgfu?tz+${S92?UX42?nbN(Yv2 z1Vl^SC1|0d0+cfoxJVEr%5r9rpa{lG%|I!FqAdhvAvm0{@sy1x88rUEU^rFs@r#^A z@nGS5%Lp1cobBGMq9>F=iW@Yt)9Y!g0_{k#;Le0G6aVX&Q>=E|Ei$649oO-~vuT z2M!D_VsL`ODZ)dLJjwC|lSj}zK@36NiX{7LMnY+vq&=jSCv7}!y$=f8NfLD7iC{_O zeTo_spcisb@B>RYVN%Re`cPe6)QFLSd&<2nc5pw($Rq|0ZEdma=`3M_s z6&M1yTdgcEQ8ci#UYlsA?89seRT=I*t1q|zz zd<@I5!mukNRSoqi&670GP{V!tAFGO+DOLy}KY*`d3--@-K3z8t3HZCt2lnItqSIo$ zn}=G~@?bZ|o{e~q!}7=8Ur3TdCaa^33F9uCN_lJ?dgMy`Lyl>%MC)>7U(lrZzLVmAwdjE*mWDZVCv{2k@rtZ zXJ-udHts*6HD*lC!Iru&|FHJ=?vz6%yO*8nPU_x;R3o%X{;_{U_l}cWE(E56rMB&t)|}efFMnccR8}1AJpT)h z{N(=T$l)WGzwFzyIWGshII;Xg2S004LI1(JbsNk1Z8v5#p1yhk=Bg>QGfZmwix@Y!-CJh-Cn}z^z}a3s;a7yVL^LEWT%4klmz(&GdMiEkp|?5db&7< pNJu6#G+hW_@hG901j^xMbc_2GBtf&8r-pmp`bw?wQCk(Usbav!k>D#=W zVQ%g6ij(PN;SmdmK9AhcA$;ABD4Jn*_tztYr%B2>r0fMYcj@GZ9P7C@w@)p=LNr7w z-pE2sCKkqucwriwF4zA6ySr{t0-vOat^3s=vFbM0;I-&DyDe~R1CmbL++Y@vohxdS>yQ!Tfyj+%~jGg zvIL=4tMN6N596{Rnx>g?ND`n3kjw`us)HcuZ8PLaf@3dAy)a-iM&yLEsm;+;n;QJ6 zLmMP5pQvL(9Yuo3!%R~H=;978nvJWC;4T(OmG~q`6N(i(*r*bwVNwa#pzb`rCII!e zQ0T;1H5cFSghNOVy)-CZoZbDtNuVJ+FUf{Wx)N^Fi!QUH{I1dC9#MBRc) zACxT!o6th&dZqc5P#K7FQB*Bavs8Eul(v(LQuMcA7h9z;_7U~M^HG@yQBdaCj>Fba zSPf$um}Vz8vM3a+(I81tfXQgy=BORK=ed?9YEVR~1F%w(fMzHvFkC|dBEnKhQ(T#t zN_&1j#Isq^v-!;h;D(rT{25hMG~Go=0$4=`5KD>(4AsFv*9=j2hzpTU+H8-;9$kZ| zx{@`^%FVJepko@E4hSyEK+_ci7$zjZ(1~Lb9V1y%vPN(8jy2*Xw5s#1r87ZhTBEAR zHrmBPI9mobhqL+fOKTJ7Fzd37WgH zDpgk@LNW%(fDmYo;sQq@)KsGAj$2Z6MMrH{R;p_Dscea|rAX~Q{f||(%)}KGlnH$m z3*0}~d2`*|6!2G_*R99@MW>Lxo0}~wT;I)&XDi<0wET@*baTjtoo$I;bT&2;Pzz(a zZN2NCxPxJGxzYS!v3~60YlA({!7a?;U;2K2`_P{KKMY; z`RO;kM?Pjhn39sWc5riBtLGnE+W9e>8q!Ied25K*$Zc+!o>3O!K9Dl?5;NT#-Z2uFWmFS(R1rAohpCV{l)63 a{Mh|@A0+11`f&CEFgiSze`n8A&;9{3-Jw1J diff --git a/Resources/Textures/Structures/Wallmounts/Lighting/strobe_light.rsi/glow.png b/Resources/Textures/Structures/Wallmounts/Lighting/strobe_light.rsi/glow.png index 0e8645bd9aaaa157d0b99aa936aa28b8ea83d903..e9914ef61a8ce30cfc704398d10b048677dccd1b 100644 GIT binary patch delta 151 zcmew%u$0lRGr-TCmrII^fq{Y7)59eQNGpIa6El$H6Pc6_q!^2X+?^QKos)S98#ZjXa^*_9OZgm-o{}KHUYMDS41ugc2yyRwsa~vM(+dBb^m7if5D!*L2p~V)N=vDbbTIO8&2)- zdX!p#HuRdq^GBB8-nOGPKps|l{otJ85b&2wxW5>6(#!N?#x zkr`!&T%WL73<3?j@Y5>YQl6661n?H`4^R1jdmVCNtj6Nl} zLKu2F&sQpySVfGvex4UJO^Y}X0u%v)niCpT-~_!bh9n8FZ+oHbI&8#fm~J^taMaa? zhLYE&b%JJ`XvFxc;qgKYMw;qC3%7Az*)P_OTbL(BQX)Ay6)b`!fRJVYQ;<}ki8&cy!IFriD#%oX7TY1; zrafpBSF%Q4S(H&$p{c2|0tn8DKvpP^szCx&g_s&qupuHTD)f5o=qWp(S*r?b_h=%QBi9WOs zHsa6_`t;a(@zdNjhS{(yogB?FO*++YyACVsnb0ZlfPAa=E(HcH^=0T-UCN( z4!rUnytHXywqt3d)HU$HlFERAZ<&vnxpgPRvh+*$d>KA;Ysb=_Gr{5hvoCkw0#9_L zzN)Ir$3_>oJU(}I9ln$2t}p)l{c@Q6;@92j*OW&%!Feb3*>?5AcORUaTKK*DyB%-z z*S`5uy)NB2e*5zBW4CuL&tKY;TEn|wnK?Ax^UTLr$7Z?c+aNtWl3aM|rP)6K+C;0O diff --git a/Resources/Textures/Structures/Wallmounts/Lighting/strobe_light.rsi/meta.json b/Resources/Textures/Structures/Wallmounts/Lighting/strobe_light.rsi/meta.json index 865473f545..1b2b7dc233 100644 --- a/Resources/Textures/Structures/Wallmounts/Lighting/strobe_light.rsi/meta.json +++ b/Resources/Textures/Structures/Wallmounts/Lighting/strobe_light.rsi/meta.json @@ -8,20 +8,16 @@ }, "states": [ { - "name": "base", - "directions": 4 + "name": "base" }, { - "name": "empty", - "directions": 4 + "name": "empty" }, { - "name": "glow", - "directions": 4 + "name": "glow" }, { - "name": "broken", - "directions": 4 + "name": "broken" } ] } diff --git a/Resources/Textures/Structures/Wallmounts/bell.rsi/bell.png b/Resources/Textures/Structures/Wallmounts/bell.rsi/bell.png index 466209d7a57e1d5a1c53468df5e0a089c364a84b..da2ff3d96a603e33fff71b4d3c9ceba520eacbde 100644 GIT binary patch delta 353 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 literal 937 zcmV;a16KTrP)?TOC6>Ka57NU)>!hfKxV5=YqiXdWV@2e46@3=xl%q+9_u_>j)l%DVx&hsHj_&H;QoYQOWx?|?v@JmA6*MmeS^cbYbPLHfd7?|$*@b@D z-@g0>#T;kv(Sdx900009a7bBm000XT000XT0n*)m`~Uy|8+1ijbW?9;ba!ELWdK8E zY;$>YAX9X8WNB|8RBvx=!KdMT00057Nklglcd)P_vq%)4K%#e7$G&1o*hW0|0nwLq7o9afScTQM(%8kM^^`B8311AOHbWk3ne& zKmY;|K=l}uh5!U0K>Psw+wG{g*|7wum{nm6JoK}lf&TZA2?3%2upL(b`1x-S7#^bm znD{u)(pM&t0Mx9exVo(WYCk(SC*I9j`pP6yfYGTjFg!U90wB{@CIsLsz#P?zyBOP$>*T}y00000 LNkvXXu0mjfYu}t) diff --git a/Resources/Textures/Structures/Wallmounts/locked_switch.rsi/locked.png b/Resources/Textures/Structures/Wallmounts/locked_switch.rsi/locked.png index ae53cbd19750108c1915219f310f2e76d90949b4..6564a9627a8fc9e094a86c74a6a48d1182d8bff5 100644 GIT binary patch literal 163 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnH3?%tPCZz)@#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6;>1s;*b3=G_YAk0{w5S&o3vj*-@m`esR)=#sy+ZV$m)e0|Zz%PT^P<*sapEK5g?&-xl9ZZ`3?Ci00@p zi7o0~f2e-J+Jw~#99;@Y>F-wyM!w(SDq3?Oe7*Tg<)}$C3kc z>k7%;R@?QRm;ICC4UsvsYfB)hnGh60YhYlsTJr-+KZ&@DR z-S^1%p`P;U<*naa*<&pid}zHC%xJH5j^)p)8@|WX6_-?H&5WP(>!{ncvz+`K?nPxM ze^~bK@?1T0zPHEQi8s65=ST#a1Wk!Jxa`D)D|=GD?a%*l+uYmHrtOdHsU43_Ob~s) zV1??-EU&FD=1(_kuDOo7msJE+~q-8g#p07vtUXzIU(g2kkvGA@$&A!!5cF&qYo2StI|hDK6nY zXu!$;F8jm%zTBA{QR7Q%OBPNmEG}laSW-L^Y+$8-ev~@my3JdIAkyJ zbZRfq&?!lvI6;>1s;*b3=G_YAk0{w5>=N zUvj*-@m`esR)=#sy+ZV$m)e0|Zz%PT^P<*sapEK5g?&-xl9ZZ`3?Ci00@p zi7o0~f2e-J+Jw~#99;@Y>F-wyM!w(SDq3?Oe7*Tg<)}$C3kc z>k7%;R@?QRm;ICC4UsvsYfB)hnGh60YhYlsTJr-+KZ&@DR z-S^1%p`P;U<*naa*<&pid}zHC%xJH5j^)p)8@|WX6_-?H&5WP(>!{ncvz+`K?nPxM ze^~bK@?1T0zPHEQi8s65=ST#a1Wk!Jxa`D)D|=GD?a%*l+uYmHrtOdHsU43_Ob~s) zV1??-EU&FD=1(_kuDOo7msJE+~q-8g#p07vtUXzIU(g2kkvGA@$&A!!5cF&qYo2StI|hDK6nY zXu!$;F8jm%zTBA{QR7Q%OBPNmHqT|aSW-L^Y*4K*C7LjqaU9*u(FG@ z`#*fdxv50=3s2K(Z~q66G-YCBxa2hWly2xAS)!l&FaOnrOUL_b9Fq2aU-m2lXo|yK zM=1t|2tfyXvwITBezT|Z{!I&IFl1zCXl3HLetXFdYq_T9fAbk4v>LK^dwzUaw2oUL z6sWJkq9LSvg4IQamD?0c84`GbA`hk~^T~MeD+6U20?H?Vk{Z-_AfuE$6G%1`G5*^4 zacBR11`WxCJ{9JI+~?bW-+gX*S@+_1vsab%D!aQ`fXX6RHvdcLTl;1{!vPVvUIvCM fvP&2jlr@;MZIGUjR9n6TD8=CE>gTe~DWM4f6_`BF diff --git a/Resources/Textures/Structures/Wallmounts/switch.rsi/dead.png b/Resources/Textures/Structures/Wallmounts/switch.rsi/dead.png index 9454288860ffe6f260bc02d7545251830603f37f..b9abc0ac75eaca647d996af0a4e58ba2d086c639 100644 GIT binary patch literal 186 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfv#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6;>1s;*b3=G_YAk0{w5sh`eNwZEC(oXD;_P{Y#Fmpl zQO1%WzhDN3XE)M-92HL&#}JM4$q5pyUzpbD=`pTgYHC`+bjGQRO@%9AMq?s3(4bfI WnQsfkrAYzRGkCiCxvXVNq*( zB1|J4L}<_r&zVU~C8;^yZ>UrCdPw!Ez3<=Ak~Td9>cYZfhT|56CxoY0i;m(=;VvVq zr-k>02VFU!@P*P-0Y56v1pKPlO~xl7qhIw!U-cIxr|~z@D^)GB2kq-{a$eO^ z+ifchm%#dZl^D(q7K<5=SF9listaEe=$u)VROW4_ke%ar?`~}4vXYbZ> zkq!U=010qNS#tmY3labT3lag+-G2N400A*cL_t(|UhUaGY63wN$MNw`sl9p&69OK_ z&Qff00=+<*kS;dCdqgV*QLms)l1jnYCycP7qWgCKEW4}U4=jtrd&Q2+!2X_60Pa~% zDoCTrZ1FdpFHY8;9_p&`ST}y2qEwJpuP<*Wzdr`=S1Q95q=Gcc6-(XKa;a*Ssw$Vt z>UXzO>&;fpr{kW~doC{(+&VTuDoCSNtGT~_{e17Q<26&6Jp?S#b_?QHe%U;fSwx!g77pdmtGTAsqig{^$l?O r=UjSCct2D$mxIiu7XSbN01(kX_ab&{)Fq1;00000NkvXXu0mjfrZ!a8 diff --git a/Resources/Textures/Structures/Wallmounts/switch.rsi/meta.json b/Resources/Textures/Structures/Wallmounts/switch.rsi/meta.json index 0b5805e5f5..79a63736e8 100644 --- a/Resources/Textures/Structures/Wallmounts/switch.rsi/meta.json +++ b/Resources/Textures/Structures/Wallmounts/switch.rsi/meta.json @@ -8,58 +8,13 @@ "copyright": "Taken from CEV-Eris at commit 15748b71a1e6d2c547588c653d7c42f18011f7c5, modified by ThunderBear2006 (github) for Space Station 14.", "states": [ { - "name": "on", - "directions": 4, - "delays": [ - [ - 1 - ], - [ - 1 - ], - [ - 1 - ], - [ - 1 - ] - ] + "name": "on" }, { - "name": "off", - "directions": 4, - "delays": [ - [ - 1 - ], - [ - 1 - ], - [ - 1 - ], - [ - 1 - ] - ] + "name": "off" }, { - "name": "dead", - "directions": 4, - "delays": [ - [ - 1 - ], - [ - 1 - ], - [ - 1 - ], - [ - 1 - ] - ] + "name": "dead" } ] } diff --git a/Resources/Textures/Structures/Wallmounts/switch.rsi/off.png b/Resources/Textures/Structures/Wallmounts/switch.rsi/off.png index b2437f14a1e30c1d0c57bc3b9b366d90d61884dd..1ba488b7d3c0bacd57caa22e4ccebca73d497201 100644 GIT binary patch literal 186 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfv#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6;>1s;*b3=G_YAk0{w5ucUiYL#WcjD~%?-sWG9C9Ed z7)yfuf*Bm1-ADs+R6JcALp07OCrGeVNq*( zB1|J4L}<_r&zVU~C8;^yZ>UrCdPw!Ez3<=Ak~Td9>cYZfhT|56CxoY0i;m(=;VvVq zr-k>02VFU!@P*P-0Y56v1pKPlO~xl7qhIw!U-cIxr|~z@D^)GB2kq-{a$eO^ z+ifchm%#dZl^D(q7K<5=SF9listaEe=$u)VROW4_ke%ar?`~}4vXYbZ> zkq!U=010qNS#tmY3labT3lag+-G2N4009$8L_t(|UhUaG3c@fH$MGsoE*?dy2p-1G zQCvKTi@4cEdJlCIM2kmpaa9s1w4zP(r!=kK50qed8GK5hzZV1m{#i#=;G^?3d0lQv zZf`OQgXuWb{ysfbfv+~}ZSM0v-uRewD2iga-Uog8WcPG6vH>p909ApH=JT0c zhmWUxvU|E3dkHRA3sngK002-xJ3tUz1`>5Meiv{RNYu^fZO~;PQ8%Lovq&F3kWpj&vIhX(d N002ovPDHLkV1l>UL74ym diff --git a/Resources/Textures/Structures/Wallmounts/switch.rsi/on.png b/Resources/Textures/Structures/Wallmounts/switch.rsi/on.png index e468246f7b11f834825b5d85f619168f101036c4..5bd528406da03ed8cf174231184a7bde2a846422 100644 GIT binary patch literal 186 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfv#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6;>1s;*b3=G_YAk0{w5wzL8m49yPo6#R#M$$kwfkNG zMHx$i{DK)Ap4~_Ta#TEB978nDCnrd-eqmapr^mR0si|oN(;25OHWjXf8I6hDK!aY* WXTB{EmnH>N&*16m=d#Wzp$P!GO)(7s literal 728 zcmV;}0w?{6P)VNq*( zB1|J4L}<_r&zVU~C8;^yZ>UrCdPw!Ez3<=Ak~Td9>cYZfhT|56CxoY0i;m(=;VvVq zr-k>02VFU!@P*P-0Y56v1pKPlO~xl7qhIw!U-cIxr|~z@D^)GB2kq-{a$eO^ z+ifchm%#dZl^D(q7K<5=SF9listaEe=$u)VROW4_ke%ar?`~}4vXYbZ> zkq!U=010qNS#tmY3labT3lag+-G2N4009t5L_t(|UhUb-3W7iwhGCO#$PUn^J89=K z+H@gpqFrvn`>1FWbnuQUMi|g2$2rJoy${IH@Q=_a1Ac!H0QhG;RY4n_Z`t#5&q{OS zK@?1ek@o-Ts|wm`z1oz1@6zp;%4(sippB9w&By8Wkzd6*U7g$jm)HPRK^w*KEFVv! zFu#g(x;lFZE|zmu2><{9P(eFD5L^Zlz8QZDxC$hEGx{2I8A$kMv;n__4Nw();xdr% z&G--`kN^Mx0002!s77*p(KirdF)5ajnW}eSv(|)hBvwT!lvI6;>1s;*b3=G_YAk0{w5i0^VSMJTK mE`D3u!mwCDf+OLpCBq>#ZSAtQE)Ad?7(8A5T-G@yGywn#fnX^B literal 1393 zcmV-%1&;cOP)?TOC6>Ka57NU)>!hfKxV5=YqiXdWV@2e46@3=xl%q+9_u_>j)l%DVx&hsHj_&H;QoYQOWx?|?v@JmA6*MmeS^cbYbPLHfd7?|$*@b@D z-@g0>#T;kv(Sdx900009a7bBm000XT000XT0n*)m`~Uy|8+1ijbW?9;ba!ELWdK8E zY;$>YAX9X8WNB|8RBvx=!KdMT000AcNklzV&A|nuy zNE)NOGP1fj20}>CFt%Q9l2EBjElV$r6tSCL9L0i=K*)1Z8G2@VHnD`-@O|E8X6jm za5&7pTYCT)ep8LE>s<3J0PrAi0Efdt)9GmdZruHa)9GY%bksfovBka*M)KcRg1L*C@0pRu6Ct5qcCR|v5PnmJ1 z{s;g!dw$ysATU@=RqYt7tE((8FDG1BQBjdmP*A|kWIdjiC3^u(O-%uq0syF~sj(lx z%w#?OXX8m<0dMmOs%ppV2k`eE(AN1a;kdr;Qf#{i^mgRXbTtCN^z<~Us&eYsX8_)Q zIEegJcGbDN*b%gYH27RQb8v@G%O7~25&e7+q`a%gDC9spKG0+<1? z@+T-drU0zmghamFhtFEL(CnW$#|D~kpm*uT(Oc(<5jQ0z`>3iN1K{1u zqX0Brjo@;*G7kWvJ%L1%u4@dkv9ZC^fhdxCAruFoJ$C_c@p^>Z+*~F`+`#{svED?+ z0$e%&6M);jD*)WNS;*qj8vT#g0cgFP$8mQ>LV)+dNZh#n#rbjH1Muj@ULXSjbX`Z& zG$45y9P2as{r)%ruh$DC?$c|Fd!0I=>|a=kpL1P%K`oXDn#e5%3H^d00000NkvXXu0mjfx&w9n diff --git a/Resources/Textures/Structures/Wallmounts/switch_frame.rsi/caution_security.png b/Resources/Textures/Structures/Wallmounts/switch_frame.rsi/caution_security.png index cfcb8b4f552ed5617b564a3faabc083af3ec9f44..362b59fc87730809753fd461f8759fa33bb8f896 100644 GIT binary patch literal 300 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfv#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6;>1s;*b3=G_YAk0{w5zJY5_^G|nd{ zNU*jrUe_{+U=V+xv;NQj`l_ESEeAdyvQ$6%dIHNmSrL&bmF+4M>KhsxpG!}2n8nD< zTr4%|fcXRmyG@b`x+l_(?TOC6>Ka57NU)>!hfKxV5=YqiXdWV@2e46@3=xl%q+9_u_>j)l%DVx&hsHj_&H;QoYQOWx?|?v@JmA6*MmeS^cbYbPLHfd7?|$*@b@D z-@g0>#T;kv(Sdx900009a7bBm000XT000XT0n*)m`~Uy|8+1ijbW?9;ba!ELWdK8E zY;$>YAX9X8WNB|8RBvx=!KdMT000ABNkl3W7{~GNL8+#N(mSeP43MY; z=7@`obdbS+03r(;4s66YnJ5F8I1%H{s9LZV8q36kwHy>7zN?36xu*3ybiU* zVkuYB%UiDRZ)@_ldEZZaPv7@_G$91F9PKgyXqtARNeUsfb3gks0CabEi=(3>p6_G< zn7ZAD<2XFC4*+;&TtU}$M!x+5;AL}w`ucj7mzVtmkYDUlVw*xK3xAe~N^1PFyf0K{T3{{hT4 z8O;6o#p|?PbYV|IhUmZ9#=x%aKY*!&V*oyGZt`MhtLVZenq%U@_3HqPT&eRHz?>GO z&)y)FN|8t;iY_b~jf!wM%)HS`zsUFtz;PS^R{#LIuKN#Q-e_fJZLQ=Z@TjAMK6}G| z0RPs2vE+8qapRE|d|Lyi4vrZ*OarjGx{7I<46f&Pe(&4cuq=zt&Q1WP8$$jA*xTDX zdEMC9$eb1|7}GB@oF3yFfOtH9p-C<*EcgS!%P0Uh0ABtCWyckOmqkc+TmyLZHzYe{ z0YK$9BC_Kez^kpO?34unl|PKgj%xs~j-#@3p&C%h3klhA4dB(4lT>;1Z}SETPyF@W{;b*39~cL9Ux9RTKyR(|jAGq7s|Fj?0G zvghuxpde zW_c6T0T}xEwE$rH#vK4gGY)}3fY~Mk_#ZRho2XiVVJFuen$-S&n<9XHc+9&%?)7js zKu@%#D8N!;yI`ErP*?Cd0Pplhpb7yT$HB5Jp!6{~-)CH0Tr2?S?d=6h_Y?ESa?>=c zuLitLr05r!g5q}8*gV$hB6!}S^5f>TAdjQr>I0ZrTVpJ_T@qlTIVNs}^`ei!_mp$y zm3w~Nc%+3#9UTgwDgkQx5vchhSo42_Y9mzZTj82M3|;0Z00p1`6oBkGNR0we05uNq Y2M%KAu6N=T&j0`b07*qoM6N<$f~QA!KL7v# diff --git a/Resources/Textures/Structures/Wallmounts/switch_frame.rsi/exit.png b/Resources/Textures/Structures/Wallmounts/switch_frame.rsi/exit.png index faec1fc09b4e1e1413583f25d3d2b9226a831a66..b9a8152d53e69899f980792fd4a718a03315011c 100644 GIT binary patch literal 257 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfv#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6;>1s;*b3=G_YAk0{w5P)p;`;yp|E#R6*4EYq3l{9!wd;t!{+Tmp zF1Wfre*E}#SeW;_KVl%WOM?7@862M7NCR@>JzX3_G|nd{NU%yY9A)K^dBAjLrm^wi zbU$MUA&t4SX3b1%ShYwfQo)y#V*<+!D-j8a8CF6b0ttT1oC_qh4jeepp>lvlFu;Lh uM*~aD1Xh+t23H0i0j8d&1ce4u4F+{{2@d;$XNf?o7(8A5T-G@yGywo&zfKeY literal 1227 zcmV;+1T_1JP)?TOC6>Ka57NU)>!hfKxV5=YqiXdWV@2e46@3=xl%q+9_u_>j)l%DVx&hsHj_&H;QoYQOWx?|?v@JmA6*MmeS^cbYbPLHfd7?|$*@b@D z-@g0>#T;kv(Sdx900009a7bBm000XT000XT0n*)m`~Uy|8+1ijbW?9;ba!ELWdK8E zY;$>YAX9X8WNB|8RBvx=!KdMT0008gNklt|m_b1Y$1DXY z;(T2sLzhe)6|{88Y@q%DDa6^OsGwsfmm4IDH;WvCOGbwXI+&##9S(9s$s>9;MooM% zdEcpOe7t`A!0FdH{pL z!1Y*B6ahpW;H%P>B*}^_fFK9}fNr$5=Y?x+z zDnQe;qb6A@mHYt+asssD31C+V+GXcF_ne=3EkW8j7{Gb%>AFr9qN`4aEKq>=%Mk7O zRsjIW3JgRP0Pz1tgmydu1bHh;I}CsU9I*!Y*^r=}g8}?*NzslcfFPTawBs2dsJ1li z90lN($OCvyqyU24oTQzL=m!KD2EYIq00W>s2dZHJ41fVJfRhH$G|gHp78~!`y#wI0 zF8~0BVQd^@7zVjjmL$o_X0scg+pl+xWhax#oV@ws3joJ)8}HfeGvKo|W@o)#lfRvh z)y~Ig0C0}?)mZj;p#ZpTx5<705G;UmZ{qjkV|W1Uyyo-&9kX5jqA2bJ*zPrKpB4b{ zG@ZgQO=OeFZ~@F^8Q-3t@$>G^wGZI@XLkX(JwhvrVm(c#&~+U=&xZ#f)okK@wZe5O z6*zz(2xJd3G;6^3dYx>N{(5+bUj^K@+hkI&`Fx-NKi=L5_Mc`m8~_~0k+R&^4nGy( zel#Md+p1m<2f#Ti;C?j1-!lvI6;>1s;*b3=G_YAk0{w5r1s;`;ypecOIRFWo#A}&0K@zSApr%>4a+nQ z3=EdCPEa@?!zJWk7}C(#DCpV1skER$pn#EchXOYT6Jr;HgaV5M>p=&G)#n-i%n=gY Tc;-|l&}arvS3j3^P6?TOC6>Ka57NU)>!hfKxV5=YqiXdWV@2e46@3=xl%q+9_u_>j)l%DVx&hsHj_&H;QoYQOWx?|?v@JmA6*MmeS^cbYbPLHfd7?|$*@b@D z-@g0>#T;kv(Sdx900009a7bBm000XT000XT0n*)m`~Uy|8+1ijbW?9;ba!ELWdK8E zY;$>YAX9X8WNB|8RBvx=!KdMT0005aNkl+a0ke;44cg+JOJA_YmStl0Cu~b?)UoufbDi`1z0Q=0D#-=hWUI> zfKP1`pbY@kIlz`6=KvGHH3SF=AWhR+olKG>3;>@YfD3@nAt)Uu0H2ePbO`V*K+_8m z={N!ST#8DE00gKp2Q*obkj~ctO_!vk;{@QdC@CFh0AFQk>C^(SC3pbW1O?#pa8f$l z4ikU?1d#57Xb3<60uVsD529%VAWc(U6h(P$R*!lvI6;>1s;*b3=G_YAk0{w5P)p;`;ype|c_Ced$O~)8eRJ=LGMbx~vsV zM^ctgzIgoSyyZ)4vp{B-1o;IsI6S+N2IPc$x;TbtoKH@WU~OT{&d7+0%E(}dX|U9- zOzVuC#c0QoyWf@6avuS!GG3I=9o}E)I-}0$f5Iu3`c#Od^a1 j4jcwtO^pm;^O+fvBt;K1$%tD3tzhtU^>bP0l+XkKl;A=s literal 1134 zcmV-!1d;oRP)?TOC6>Ka57NU)>!hfKxV5=YqiXdWV@2e46@3=xl%q+9_u_>j)l%DVx&hsHj_&H;QoYQOWx?|?v@JmA6*MmeS^cbYbPLHfd7?|$*@b@D z-@g0>#T;kv(Sdx900009a7bBm000XT000XT0n*)m`~Uy|8+1ijbW?9;ba!ELWdK8E zY;$>YAX9X8WNB|8RBvx=!KdMT0007YNklBug=aLqO_KMF$Zyh*?S;{7*Tti#Mo~ z@H&*#yK8#Aggf5kz2~L>U1H0ubdZs5^lGdKIDTFUJ8`X}#k8>(Bgrm>;MJ>5c&O3lR21M0WxKL^&1J z9RU!40ct>)4GG=p8zAhKlRQg>uIEC2!^ z0J_JZH3A?20w4go$DlQ#0L;xSsvqm$H;=vDVF1grT-VsPy*X9RCW|VSO1VByr_a{!sQELIZGalyuu?u+bXp#<_XoTvj`m(cs>6@w=A*3?o3VeFNLJUB{CXQ#}E^ zy$0{k0{-ti3>`qX23VHm+XrwyY%c)6C3HShR^8e#R5f5>zM(!GxevhV?XgG!?tPjD z;K}9Pp|ssY1K3r53c#b;-|+-EcjpfPmkzH)3UI!$2Y|mzXX6Pleq|kiqaQC04?ygT zp!^NWL`VSQy%-wh2!H?xfB@(ogVqRu0K^>NAAP59u1?V4G5`Po07*qoM6N<$g7&oe AcK`qY diff --git a/Resources/Textures/Structures/Wallmounts/switch_frame.rsi/meta.json b/Resources/Textures/Structures/Wallmounts/switch_frame.rsi/meta.json index 55198fa3b6..366afa824d 100644 --- a/Resources/Textures/Structures/Wallmounts/switch_frame.rsi/meta.json +++ b/Resources/Textures/Structures/Wallmounts/switch_frame.rsi/meta.json @@ -1,100 +1,26 @@ { - "version": 1, - "size": { - "x": 32, - "y": 32 - }, - "license": "CC-BY-SA-3.0", - "copyright": "Made by rosieposieeee (github)", - "states": [ - { - "name": "grey", - "directions": 4, - "delays": [ - [ - 1 - ], - [ - 1 - ], - [ - 1 - ], - [ - 1 - ] - ] - },{ - "name": "exit", - "directions": 4, - "delays": [ - [ - 1 - ], - [ - 1 - ], - [ - 1 - ], - [ - 1 - ] - ] - }, - { - "name": "caution", - "directions": 4, - "delays": [ - [ - 1 - ], - [ - 1 - ], - [ - 1 - ], - [ - 1 - ] - ] + "version":1, + "size":{ + "x":32, + "y":32 }, - { - "name": "caution_security", - "directions": 4, - "delays": [ - [ - 1 - ], - [ - 1 - ], - [ - 1 - ], - [ - 1 - ] - ] - }, - { - "name": "janitor", - "directions": 4, - "delays": [ - [ - 1 - ], - [ - 1 - ], - [ - 1 - ], - [ - 1 - ] - ] - } - ] + "license":"CC-BY-SA-3.0", + "copyright":"Made by rosieposieeee (github)", + "states":[ + { + "name":"grey" + }, + { + "name":"exit" + }, + { + "name":"caution" + }, + { + "name":"caution_security" + }, + { + "name":"janitor" + } + ] } diff --git a/Resources/Textures/Structures/Windows/clockwork_diagonal.rsi/meta.json b/Resources/Textures/Structures/Windows/clockwork_diagonal.rsi/meta.json index 9f0945a870..6810d91432 100644 --- a/Resources/Textures/Structures/Windows/clockwork_diagonal.rsi/meta.json +++ b/Resources/Textures/Structures/Windows/clockwork_diagonal.rsi/meta.json @@ -8,12 +8,10 @@ }, "states": [ { - "name": "state0", - "directions": 4 + "name": "state0" }, { - "name": "state1", - "directions": 4 + "name": "state1" } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Structures/Windows/clockwork_diagonal.rsi/state0.png b/Resources/Textures/Structures/Windows/clockwork_diagonal.rsi/state0.png index 84e8da95e5b7ded79994f18de59800ffb2e25279..4504d4ed1e0296df90f98b1820d4d334206255e5 100644 GIT binary patch literal 369 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyjKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sDEfH31!Z9ZwBpjm)Vh%1nuQNXsbQ&m-zO-G)?T9v^@jUmX4 zA=sQD#DXE-fg#D6A=!nYGL)ezjG;Q5VRkgnPbVsX0l@@=7J1s>NxzbV0sS8n|Oe{=1IxCW_;yV(trPF^3Stma;OnR4f@$(z@| z`WT+idH!-||1{T6+AkVB&h_7AbZ|MuXVbWt`BTNeja9OH`(FI{zu?u2(l1u8^b{p{ zl^7*_FLZ43)?Rh5>(RgeE}#D`wOIbE>i=v72it$gfBu`kVB-Fb&z($~w(Z>g?(_Wo z?Ymm)zx6xoAJBZUZ=&YJZF(uX9>t5JrFvFbZM@gKYSos9+yd@wyIxwzO$2&?!PC{x JWt~$(698h}kU;R%7KkPU$i%QT5Eh|UDHH^8 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 delta 700 zcmX@fc$8JKGr-TCmrII^fq{Y7)59eQNIQTq2OE%Fm05UiqMdj>Q@N*$V@SoEx6zJ8 zhYWb`lvHUv4T=-|ua!g$x}v;o=7}_kOy!f?Qf7Vr*>mZl z$ypaW8UJdA!+E=3F1mAi^NCM;Zs+Z?l%6kk{Tk!$w`vR-TNkG7yWDc-VP)W1BPFTZ zvl1uXej&#J*bzTjQ0aNrq3 zX#j zmzj{|%b0wJJ12XUwk7+YW#$>uJiD}wRh~5-x^GudUmVi2|4OOmy#mMF9u)W0o5j52 zSb2DgPXGPW>eZ8wVa#c0I8wZ^PEMlM7EP+w8GP z=+9JiJtuIDJEtP0U7Rs#i%4M5a<7AT?mYUy)%bVnP6OllqH%Ht39o(~IPWFYW8;1+ z>BA=m>DS+SZ+A^zXPVM_y3iu6>bF~|tzy09caPN!AB=gTdi2&GXO{WSG4FJO7LN(% zuiY#EOkj;uOfcR%E%>A!L;qI6S<%mq{EeM7kM*^@@~w#5S=A@zE@+GWwB#zAPkE=F z%Z`eM&ZnM6CR>?qr=08y(sKHh%U{65TovCCtGh_}fSabGgR^SGS_bK<4BMD;{!}yV bV@P-_bmcUsz>Sl@1j*p(>gTe~DWM4f^;x3`su@q!^2X+?^QKos)S96hSg&&$y{ZGnoW~Tj@pq ziR`Sd*DGq{biU}1!*uRd*#W?AIsjl)*SgNV-gdKg|JTP4?2Mv!%DU-1X6ktLW_*6f zA`%0Dz4~nL`siFARb5w*+69<}fAWOqtXy}vH4%vt{WoUREP&Vc1>N?&@(yY7o~X4C zkdV!_V{u-0hQRIa!_-Yi!Ril;0v2(wQ)OC=gZU0XdK9QqfJka>0%0@(*aom^0z zX$N&wiJKFgA|RKR7QB@i5#uQ>U26p71OS#TOu&@83lrPTdeKrGs!0?jvJiU4kD3BAX2#gmd26NUNQ#5uwPV#;xJ}TE0c_TFPb-r9+7fQ!fQD7%|k#206{z SZDs+~$>8bg=d#Wzp$PyVu{i|* delta 528 zcmX@eIGaVWGr-TCmrII^fq{Y7)59eQNIQTq2OE%Fm05UiqMdj><5^D^$B>FSZ)bTI zH5&-H++L{@6!}!_p_!HTcERl*PCb>4WKmtrUq55pn@VZPXjjv-XB7H(e5vh^+HvpQ z!({6oKN)Mw@2@{6U$ng6C*XEK_4xg0|B%^?x{r3>@48=;cur^fsbGeV_jT=xR&k1~ zPEsa^Zz%frMrN5ZbSz$=SzoigBZ`+JG~SN2VUOOKpio|m<|yR{24@(yF_@(>L^DVm zH|RF>N*)k9aEvE`J0Y2E1M3Du<{L~mW-#V3=G?pPyhJ|Mntb<#Od8Y0{_Pd^hSxZ&4RRo#$jhn!hjcF)^; zZPo%Q*;|4a9&N9Gp#E&tqDU6mN6$Ll|3$6t;hVZ8P_wDy{;M-p>=OB#=Jl2FPVkA{ z5XF0;tD!-sX;W#M*{w(`>9a~R!v2|D-z#A|<&uLjt4i`wJ&}`a73+>a5b^7gof6z| zPk7J0cT3d|T-I$_w&0!o1?7gb$}S9|Si;y(KgQu&X%Q~loCIF7C B;+p^f diff --git a/Resources/Textures/Structures/Windows/cracks_directional.rsi/meta.json b/Resources/Textures/Structures/Windows/cracks_directional.rsi/meta.json index 9555aa5ab3..c4f81826bc 100644 --- a/Resources/Textures/Structures/Windows/cracks_directional.rsi/meta.json +++ b/Resources/Textures/Structures/Windows/cracks_directional.rsi/meta.json @@ -8,16 +8,13 @@ "copyright": "Adapted from https://github.com/space-wizards/space-station-14/ at commit f57e8ec6b9b4b72ef56c8146be0bc159ed2691ee, originally added by Zumorica, and modified for directional use by Darkie", "states": [ { - "name": "DamageOverlay_5", - "directions": 4 + "name": "DamageOverlay_5" }, { - "name": "DamageOverlay_10", - "directions": 4 + "name": "DamageOverlay_10" }, { - "name": "DamageOverlay_20", - "directions": 4 + "name": "DamageOverlay_20" } ] } diff --git a/Resources/Textures/Structures/Windows/directional.rsi/clock_window.png b/Resources/Textures/Structures/Windows/directional.rsi/clock_window.png index 8572dd81f5e90e87ac4ae9ab4f5896b61d693c54..c36df5a533205993135a6bea22e94dbd5594d6db 100644 GIT binary patch delta 257 zcmeyzxtd9_Gr-TCmrII^fq{Y7)59eQNGpIa3p0>x3`sveQPHHHK{voB#Pz^|1GDql zH+HM4in8g*b6Be~*r+iCn=^!1FeEuMB)c$Fg)vlzGXT}Bte0k=QDg%&fw?5eFPLG$ zf~MuS?*q9No-U3d8t0P}Bv_k;mKYgq*x}H~%pRyf*tvL~n=Q(dS+2m8 zplX?ZS>jsCTc2jhS=-WXYO<~F=`)(KRZ=#$n{oX@{q;+Xp05Hrg2B_(&t;ucLK6UT CZ&YLe delta 1244 zcmV<21S9*a0{#ghiBL{Q4GJ0x0000DNk~Le0000$0000$2nGNE0IF$m-jN|Re*}|B zL_t(|UhSJrh!jT@$KUM1@iSSYuB$PAU{(bsq8C??WDXKyE;*PSWdvDIUiG3!g^=9D zlY1I+^yEqLG>WJvWlg}34MY=7HipCx6dez?{p+f?6urIcPG-7lu=@v1)l_#^P5rCt zP4{~>m1eUkAsPAZ%jom1ujS6~e3A&~Tq1JuhRDX%BFkeD{`^N|{DC=N+ip^2;$NGI;XcSJQ<~RJ zIuMvppaTY0f5nPgemFf| z|6*I*;fl!G!KyUQwUTl>F~Y&LXXNSpXPZ8@rQPAtgLqw~pbgrhP1+7F05I(t`LSCM zW!;LZZ1_YNp}IZY5s2{P=y;tvshc)vYhbZC-xC6`=9%^!SAK3K>!0b`EvSn+FORh* z+o4T_2yO#T9;roG`xB$he|U8on{fPevvR2ZRrJm9tK=G&c8wsMy*5`)HO^O#j?^M; zhy3z*7W9M>WF+*9xgdhgb_AWb*+~$9G`Ikv=?NPUl2QPh7M4-~n--Q*0Gk$;QUIG4 zmQnzl7M4-~n--Q*0Gk$;%B~F(#37;HV7xy`K_Du7cSuB_z=umpf9s}1}& z!yG%e7`HTE_+4cA-QA7@pSAPDo2!%UWX+TiBm(FZCTQ^6U#(=6>U(AvnVF3Uhew7Q z)aeF4++`DzKGr{9e~xg`&D#%caeK^01cf$ei#BOHG?fFpWlC_8(NUYgbaiRh2CCSSS;KhpdPv?&u9BOcoXVl-kF&)-&-5k-aH_>;Iy8!xD$%|Eb z;}e$t(G!z*e;=Em)5mBZcozWLd3VU0AOcKB2oZWp z0Ps2e!HWRy+oIx@rOzWm);)R9b2GpChJEiAzV!1GJce}qH-+7^P`1z=wQ`vVA(r~e3r zN0`5@xNr^E>Yf5yoEu)9qPV|_00DXS2SC>T1Yb^3F9K-i*&l%aU%7MNq#M_m6bPDJ z{iWqi1TQv#jxh3W@FVL{*xjG-Ub)3x()$Ctu|J^`yhMjdlTcXvbjN7ZVcj19lux%m zA@7;sGGzu}?J;<)c{O}=lJGc(3cx3`sveQPHHHK_b8>#1$xzw)ohC zcVCPh{q20B9QM1PZ!4!jq}L~ z60FY58>UR(y;NZXb8~jotVkoKc7rLFT^w9W1y;^8J0?$>#KmL1EP2%d1LnJ84E}BM W)oU!=M1V#xc)GIrxvXLejV@O5Z+gW?P zm>mUwn`hLpG|LO03$Z^svt(-rvPM|FP|MdRZvuDpuxs<}%aB}6%v&UcOaGTriVxKhs z=j51vRSPy77u&$F+dxS>DNw(kr)b zE8q3E^J3;>L4!FmxBEO^7zwmZtzVPX6%ugFGxHX($Z2hxy`UaMb-{g*0)^&uQXZ?S5cl|FR z)$66Y$8wVugdaCQ$oe7wv0~4p1%~-s`o15j{_M=rqyR@97asgo%h+Ui&^P(UGHKzR zn;+ZCBzLJ@w)dW&)*p0_v2BILfskY+13r#imKk|IGyGa~-t=;V-@FID0@wNWj#V=leRQu)cPJxxnMY;QT z|52T?aI0lk?1F22j489cddk~<7hh%EaY$p5!KbBMM!u?1G7W3`q8wVx-EKro&)g8Y z_$cFwU#qwkLA*O5Tu&M7v{<8M4$Yb^w_&5+#QjF@!xpHh_(@?^Q#?!mEsgWMdKq z-+_#Bx-WB8h|xlDPQcp#>?chAm9$1&)4yl;hw0n1QXOClWbkzLb75KMl+XkKW5qIs diff --git a/Resources/Textures/Structures/Windows/directional.rsi/meta.json b/Resources/Textures/Structures/Windows/directional.rsi/meta.json index 5a01452c00..c6838f780b 100644 --- a/Resources/Textures/Structures/Windows/directional.rsi/meta.json +++ b/Resources/Textures/Structures/Windows/directional.rsi/meta.json @@ -8,40 +8,31 @@ }, "states": [ { - "name": "window", - "directions": 4 + "name": "window" }, { - "name": "reinforced_window", - "directions": 4 + "name": "reinforced_window" }, { - "name": "tinted_window", - "directions": 4 + "name": "tinted_window" }, { - "name": "frosted_window", - "directions": 4 + "name": "frosted_window" }, { - "name": "clock_window", - "directions": 4 + "name": "clock_window" }, { - "name": "plasma_window", - "directions": 4 + "name": "plasma_window" }, { - "name": "plasma_reinforced_window", - "directions": 4 + "name": "plasma_reinforced_window" }, { - "name": "uranium_window", - "directions": 4 + "name": "uranium_window" }, { - "name": "uranium_reinforced_window", - "directions": 4 + "name": "uranium_reinforced_window" } ] } diff --git a/Resources/Textures/Structures/Windows/directional.rsi/plasma_reinforced_window.png b/Resources/Textures/Structures/Windows/directional.rsi/plasma_reinforced_window.png index c1269b424e0e8a04f21f92c8598b4581ba16107e..9dafda312cf3847c382fefe24ba901757e431b08 100644 GIT binary patch delta 195 zcmeBWd&{WU8Q|y6%O%Cdz`(%k>ERLtq!mDzg&9aThNK^#sAy8ppc3E{;tCWv9rf@` z?4vJtew2u}wMfrslb$tEcEud|ElDDUF+$mqLg_^*e-;AO@stGl1v9j?OrE!J;lf4B zmaj+-DtZnSxAJsx4AD5BoFKvK%&c>FuXT}@P#TA@NQsE!gOIjfS1m6uKZ7-TXEy{c qzIo#YQ`_t%hM@^FBn?H+iZS?BDu*=27;yrPVeoYIb6Mw<&;$T)CP2~v delta 743 zcmVSm*NQ8oFq2)@1a3L0s`M-0X48zQAF`jz{=KNqd@0|bWdvo4>_nw(^ zeNUKs4G&+ogfIME+x-}(kl|uofBW8#y{|Pm=G4U#FnD(4MaT0>#dwAi3lehXd10TnT9hZ)C;hZ?P_z38Y z+)qF1di)I+_G#gBGh)fv8^4X1N4jI?6l|$_+qKK<2m1$J>dnykvPl5$e@Z+NGmk-f zdd%EG^9CX}R;s=y_5C`2_`(=3Q5 zV(U158c!8#EF6m-G$xE7e@w;C0lsv5T6`5C%Sxdn+Y$r~U7NA(;a&={;Uoct9<$&P z0L3&HkB5`}0l2%lOKt8lXw&G=S#i2S0_|@swLu#^7n{b3_zn?ioF>530*6HsEQOA+ zX`ED%WhEKu?_T--;UtQqhD7~|(?8E`P0oxrHHTX=jWuWXi)rt6e_p?$f5C>65rE|` zzYv0txJ@IM6`cdfvVuYfifQn z{BMfDrg5Tk09hwscxxS?bwC#QS_hN?P7yJ=S`g#)-}WWSxM00oWV?OQ9od8YdOs9Cea_LOap^*B*z)zjwg% Z{sHDbk%l^WFt-2z002ovPDHLkV1m-iQ=|X@ diff --git a/Resources/Textures/Structures/Windows/directional.rsi/plasma_window.png b/Resources/Textures/Structures/Windows/directional.rsi/plasma_window.png index b1d1f4fef527b47259fa8094b60b6860e768e52b..2308d5363cf90aaf0d76e04f65345cf010f725a8 100644 GIT binary patch delta 174 zcmey(a)VK^Gr-TCmrII^fq{Y7)59eQNGpIa3p0>x3`sveQPHHHK{UW8#1$xTI_lve z+dI#at2DUmjw9*GqiNgU%29SV(9z5Kp{&{7sn8d^T`Pktj^3W zEp07_8nahuH+N6!5|Xjd+-bmK)x~kBadC%+^Ma1ehB8Ymx{_8MFkrqb#$XsPW}EBT SX96^Y!PC{xg=L*nLK6Uq`#EL+ delta 596 zcmcb?_?tzsGr-TCmrII^fq{Y7)59eQNIQTq2OE%Fm05UiqM}JXlYpm-V@O5Z+gW?P znGGe5tzYZ9TO=@Kg_z?JztY0VO$r_F_`(E^9DUdKm)Xi{=ar=vnG5;&nv^)43STc- zykmu^Y)Hw9u8!J1bAkTNO;08z-IJH`w^P_zU35}5U#N&@^Nq>3J&&v1J14c(PpfE8 zrRbk4?S;%-&9kE~oH_AjZhiEHB~_I+3eQ6y}bw7ONgOLg)49RYfm zR_X2Z{nBc8`w{N}k%-x+;}vR4ie|K|6A@RN9poCNx-{mdY=MnU$=?MAx6IfcJUrTa zGBfnY*85^?Gvb)n{O1aomMGB%M;qHFyqs|5o3o*}s~g8mKCfr>`C-%VGC8*xa&ZVg zZu?^<7!q4F`vrIHs=CwvnyguC%+%}_cAcD3^fXw-rADr>@^SEiFUMHcGqzo4_{TMY z?Nq+nY!mlx#-v#%Uw1_mu-27YEo-0lnNh;`O#R1%fG2_XR`LB@aIwmPX>kwx6!+*0 ztMoj2<_j41UNdEQ@TL8SV*RHkd4s|(<`)snN=q6q$@``}5BC0g<;RU=o4a4Hd^akY z+rhK{-F5A~-{rT<2F1p#v(CSwb;Tti!k+a8Lr``iv&Y(2UWKhmdKI;Vst0Hu@%-~a#s diff --git a/Resources/Textures/Structures/Windows/directional.rsi/reinforced_window.png b/Resources/Textures/Structures/Windows/directional.rsi/reinforced_window.png index 865f079317cf5c38b5def7783355d7e6be3bef11..6bdf37bc5e207faf07ca376a89514714b63dd586 100644 GIT binary patch delta 191 zcmcc0`jSzxGr-TCmrII^fq{Y7)59eQNGpIa3p0>x3`sveQPHHHK{3E5#1$xzGVf5@ z;$siqeKB_QxATc|@Qd*XO9_n6)iyL&*VgyB{AD&!5qC+DUob;U%j9_r7cN}1Y{lu* z!AwA5D^C~45RLQ62@dII(NeBw?P_-iA6?GR(}j mH9S<)^bwUvTX366lws98h4Zf#+*bw~!{F)a=d#Wzp$PyKLOj_3 delta 687 zcmV;g0#N|3)PJhbe-C!nM~w#nKi;-&tD$%7o|*)wYxC8u!;??`W0!pO z>#e1j<2aU0zA?}<`0)?Bt1-K%(83EB+?Jkta(x`5?Z0%K3+KeSjgNrlM9XG!a`74$ z_OiDTN87@}%)1bMOiWCd!se@2bPZ&j&oAq6e!L+t0YIY453SZ(*neINp0dJYKvDnKs7Fbu;m48t%C!!QgJ8pI>9Fh7!tn0_c}ItVs;#$;iF zuEQ7+(}ju4i?eF$1=?sqh`i6297XC$d3ll;xOz7tTUIoZ1#~);G0A!kK zv;^R<+swTMKrT&35VY(Me?aegms;;KDAVZUO3}JO0_ATkwQd>Qi%e6A@f{+j(Ha2c z0!Wfzsp%J)rji1(N=dYLrZPwSQ6xvnrmB*gXyfb2%3O6>WsMUptNhNT-Cdn;(N`!# z%LqU|;7^3$qg|$vs}!CC$SMVyAktxS1@O@>)5ukdmH=Q)$FO!Me>hn9ZXS?JgRdH` zw*V$O{3Z7PQv@t&iscn%<|1q^S_ z12_-J0-y7M0H7rRoCk0okVUrE%QThn96(kJ*cX7!5wO(si%e5V=!>HvFOOT+4?VYq VQ$RoPe*gdg07*qo1w^hwV1g?;H+=vA diff --git a/Resources/Textures/Structures/Windows/directional.rsi/tinted_window.png b/Resources/Textures/Structures/Windows/directional.rsi/tinted_window.png index 4f9bf4c955da771399792de0ec6c8b53dea782cb..c5c94e41c58192bf2efec7facebe8c6db4fe22c4 100644 GIT binary patch delta 176 zcmcb@dW%u9Gr-TCmrII^fq{Y7)59eQNGpIa3p0>x3`sveQPHHHK_b8>#1$xzw)ohC zcVCPh{q20B9QM1PZ!4!jq}L~ z60FY58>UR(y;NZXb8~jotVkoKc7rLFT^w9W1y;^8J0?$>#KmL1EP2%d1LnJ84E}BM W)oU!=M1V#xc)GIrxvXLejV@O5Z+gW?P zm>mUwn`hLpG|LO03$Z^svt(-rvPM|FP|MdRZvuDpuxs<}%aB}6%v&UcOaGTriVxKhs z=j51vRSPy77u&$F+dxS>DNw(kr)b zE8q3E^J3;>L4!FmxBEO^7zwmZtzVPX6%ugFGxHX($Z2hxy`UaMb-{g*0)^&uQXZ?S5cl|FR z)$66Y$8wVugdaCQ$oe7wv0~4p1%~-s`o15j{_M=rqyR@97asgo%h+Ui&^P(UGHKzR zn;+ZCBzLJ@w)dW&)*p0_v2BILfskY+13r#imKk|IGyGa~-t=;V-@FID0@wNWj#V=leRQu)cPJxxnMY;QT z|52T?aI0lk?1F22j489cddk~<7hh%EaY$p5!KbBMM!u?1G7W3`q8wVx-EKro&)g8Y z_$cFwU#qwkLA*O5Tu&M7v{<8M4$Yb^w_&5+#QjF@!xpHh_(@?^Q#?!mEsgWMdKq z-+_#Bx-WB8h|xlDPQcp#>?chAm9$1&)4yl;hw0n1QXOClWbkzLb75KMl+XkKW5qIs diff --git a/Resources/Textures/Structures/Windows/directional.rsi/uranium_reinforced_window.png b/Resources/Textures/Structures/Windows/directional.rsi/uranium_reinforced_window.png index 2e5990bd0c6560053791bd89278fb8919e22f408..40dc653647ab33b902cb304b8979a65fc5f0ae0f 100644 GIT binary patch literal 237 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfv#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6;>1s;*b3=DjSL74G){)!Z!ph|#Gh%1oh|F0nOU*+`w3k<7x84mI>9Oh%V z%E$0TfT5j}VFEWpGiTtoch7+8cuIo&f*A@6>pHr+y1M)OCrmY8n+p`T@^o~nXob(W@38i%k*iHPHakhWe|EiW%WgEe|*Hv}%edE*9C+w3KVp$RiKikuZ= Yi04$^qv^o27-$NEr>mdKI;Vst0G`uD_y7O^ literal 716 zcmV;-0yF)IP)Px%hDk(0RCt{2nn7zCK@`XTx{eTvUC_Z{>mhe<9=wRPeu@1a?WIu2t${)>$@iEq zk=l?;4&L^jgUZM%Y$XjivGkCvtyXOfvop4Rzmv{?VSJC>H~;m$99(n$>m4>nf58ACOFd^an5XdR`A6gdzg-^vyqw61@WYB)|7=XZoCf#? zng$F7Fcgr;iQu77>31FqmB@)OrbpAjZ7x5P;Qi6LeJR{$@}=ORSh;0msRR#&5j~E^fnR@kfYQp9A-*;TT_ZZLSBDz+rek>$%LKS;Ot|L1 zuK_vN?P>R?fDJY!c~^qcuFbo<%#&lMIoj|v@_>ILZqlXXavGrFX#m)$wU`F(GXH6I z<^$G_+LdE)mu3O00}|;`%j?x&PJmrnmbjk~ag5aj#8Qdt+QlrEO6;R$iJcIs)u)j)CX+SEMV6MghDk3-O~D-;_tL9p&DRwGx7oC1Aah0;6NZBU}F>V z0gsRmI6%k;SlNYq0QrD}g?xaGO~?m4LO$RCvFih(almVQ7)Rq^A1zDlbcZ+0AS~wt y0BqGP%nsNwLRXrh#dLD2j+bj|?eVQz#(W1DHXIeoeo&JD0000!lvI6;>1s;*b3=DjSL74G){)!Z!plEd7@9eOjGRKN z3ZMjgNswPKLuplS|I|Z+%wD10+&!sFNX9~Q zrvZyq7ssK-#T^>X3pzF%$}F+yN?LWmfcdT%gJHawZLVjZ3D6J*Pgg&ebxsLQ0Hc6E AY5)KL literal 642 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 From bc885071aa428b1883a2f66bcc0bcecbe655672c Mon Sep 17 00:00:00 2001 From: ProPeperos <61984624+ProPeperos@users.noreply.github.com> Date: Fri, 17 Jul 2026 20:29:38 +0200 Subject: [PATCH 057/108] SolutionContainerManagers - Grid cleanup (#44729) fix solusioncontainer on grids --- Resources/Maps/Lavaland/temple.yml | 993 ++++++----- .../Maps/Ruins/displaced_telescience.yml | 1474 ++++++++--------- Resources/Maps/Salvage/meatball.yml | 530 +++--- 3 files changed, 1462 insertions(+), 1535 deletions(-) diff --git a/Resources/Maps/Lavaland/temple.yml b/Resources/Maps/Lavaland/temple.yml index 3209abe373..4dec52b83d 100644 --- a/Resources/Maps/Lavaland/temple.yml +++ b/Resources/Maps/Lavaland/temple.yml @@ -1,10 +1,10 @@ meta: format: 7 category: Grid - engineVersion: 254.1.0 + engineVersion: 282.0.0 forkId: "" forkVersion: "" - time: 04/28/2025 04:45:54 + time: 07/17/2026 15:34:58 entityCount: 453 maps: [] grids: @@ -26,54 +26,55 @@ entities: - type: MetaData name: grid - type: Transform - pos: -0.48958334,-0.45833334 parent: invalid + pos: -0.48958334,-0.45833334 - type: MapGrid chunks: 0,0: ind: 0,0 - tiles: AAAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAAAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAwAAAAAAAwAAAAAAAAAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAgAAAAAAAAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAgAAAAAAAAAAAAAAAwAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAA - version: 6 + tiles: AAAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAACAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAwAAAAAAAAMAAAAAAAAAAAAAAAAAAgAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAIAAAAAAAAAAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAACAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAgAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAIAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAACAAAAAAAAAAAAAAAAAAMAAAAAAAACAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAA== + version: 7 -1,0: ind: -1,0 - tiles: BAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAQAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAQAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAgAAAAAAAAAAAAAAAQAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAgAAAAAAAAAAAAAAAwAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAAAAAAAAAgAAAAAAAwAAAAAAAwAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAgAAAAAAAwAAAAAAAwAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAgAAAAAAAwAAAAAAAwAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAgAAAAAAAwAAAAAAAwAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAgAAAAAAAwAAAAAAAAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAgAAAAAAAAAAAAAAAAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAA - version: 6 + tiles: BAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAgAAAAAAAAAAAAAAAAABAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAIAAAAAAAAAAAAAAAAAAwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAAAAAAAAAACAAAAAAAAAwAAAAAAAAMAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAgAAAAAAAAMAAAAAAAADAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAIAAAAAAAADAAAAAAAAAwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAACAAAAAAAAAwAAAAAAAAMAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAgAAAAAAAAMAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAA== + version: 7 0,-1: ind: 0,-1 - tiles: AgAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAwAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAwAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAwAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAAAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAAAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAAAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAAAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAAAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAAAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAAAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAAAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAAAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAAAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAA - version: 6 + tiles: AgAAAAAAAAIAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAMAAAAAAAACAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAwAAAAAAAAIAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAMAAAAAAAACAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAEAAAAAAAACAAAAAAAAAAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAABAAAAAAAAAgAAAAAAAAAAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAQAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAA== + version: 7 -1,-1: ind: -1,-1 - tiles: BAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAgAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAgAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAgAAAAAAAgAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAgAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAgAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAAAAAAAAAgAAAAAAAQAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAAAAAAAAAgAAAAAAAQAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAQAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAQAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAQAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAQAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAQAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAQAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAQAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAQAAAAAA - version: 6 + tiles: BAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAgAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAIAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAIAAAAAAAACAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAgAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAIAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAAAAAAAAAACAAAAAAAAAQAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAAAAAAAAAAAgAAAAAAAAEAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAABAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAA== + version: 7 -1,1: ind: -1,1 - tiles: BAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAwAAAAAAAwAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAwAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAA - version: 6 + tiles: BAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAwAAAAAAAAMAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAMAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAA== + version: 7 0,1: ind: 0,1 - tiles: BAAAAAAAAwAAAAAAAwAAAAAABAAAAAAAAwAAAAAAAwAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAwAAAAAAAwAAAAAABAAAAAAAAwAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAA - version: 6 + tiles: BAAAAAAAAAMAAAAAAAADAAAAAAAABAAAAAAAAAMAAAAAAAADAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAwAAAAAAAAMAAAAAAAAEAAAAAAAAAwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAA== + version: 7 -1,-2: ind: -1,-2 - tiles: BAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAwAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAwAAAAAAAgAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAwAAAAAAAwAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAwAAAAAAAwAAAAAAAgAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAA - version: 6 + tiles: BAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAADAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAADAAAAAAAAAgAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAwAAAAAAAAMAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAwAAAAAAAAMAAAAAAAACAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAA== + version: 7 0,-2: ind: 0,-2 - tiles: BAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAwAAAAAAAgAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAgAAAAAAAgAAAAAAAwAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAA - version: 6 + tiles: BAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAADAAAAAAAAAgAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAIAAAAAAAACAAAAAAAAAwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAACAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAgAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAA== + version: 7 - type: Broadphase - type: Physics - bodyStatus: InAir - angularDamping: 0.05 linearDamping: 0.05 fixedRotation: False bodyType: Dynamic + bodyStatus: InAir + angularDamping: 0.05 - type: Fixtures fixtures: {} - type: OccluderTree - type: SpreaderGrid - type: Shuttle + dampingModifier: 0.25 - type: GridPathfinding - type: Gravity gravityShakeSound: !type:SoundPathSpecifier @@ -85,6 +86,12 @@ entities: - type: GridAtmosphere version: 2 data: + uniqueMixes: + - temperature: 293.15 + volume: 2500 + moles: + Oxygen: 21.824879 + Nitrogen: 82.10312 tiles: 0,0: 0: 65535 @@ -186,1202 +193,1190 @@ entities: 0: 32768 0,-6: 0: 12288 - uniqueMixes: - - volume: 2500 - temperature: 293.15 - moles: - - 21.824879 - - 82.10312 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 chunkSize: 4 - type: GasTileOverlay - type: RadiationGridResistance + - type: TileHistory + chunkHistory: {} + - type: ImplicitRoof + - type: ExplosionAirtightGrid - proto: AltarSatana entities: - uid: 236 components: - type: Transform - pos: 0.5,10.5 parent: 1 + pos: 0.5,10.5 - proto: BibleNecronomicon entities: - uid: 414 components: - type: Transform - pos: 0.59757555,10.729841 parent: 1 + pos: 0.59757555,10.729841 - proto: BookNarsieLegend entities: - uid: 355 components: - type: Transform - pos: 0.41655996,10.628419 parent: 1 + pos: 0.41655996,10.628419 - proto: CandleBlackInfinite entities: - uid: 341 components: - type: Transform - pos: -0.78010845,10.796236 parent: 1 + pos: -0.78010845,10.796236 - uid: 342 components: - type: Transform - pos: 1.771975,10.785819 parent: 1 + pos: 1.771975,10.785819 - uid: 345 components: - type: Transform - pos: -1.806636,3.7896378 parent: 1 + pos: -1.806636,3.7896378 - uid: 346 components: - type: Transform - pos: 2.7937238,3.7583878 parent: 1 + pos: 2.7937238,3.7583878 - proto: CandleRedInfinite entities: - uid: 356 components: - type: Transform - pos: -1.1704627,-1.1665791 parent: 1 + pos: -1.1704627,-1.1665791 - uid: 357 components: - type: Transform - pos: 2.1732874,-1.1769958 parent: 1 + pos: 2.1732874,-1.1769958 - uid: 358 components: - type: Transform - pos: -1.2746294,-7.2024183 parent: 1 + pos: -1.2746294,-7.2024183 - uid: 359 components: - type: Transform - pos: 2.2357874,-7.181585 parent: 1 + pos: 2.2357874,-7.181585 - proto: Carpet entities: - uid: 188 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: 0.5,-9.5 - parent: 1 - uid: 197 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: 0.5,-8.5 - parent: 1 - uid: 219 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: 0.5,-7.5 - parent: 1 - uid: 220 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: 0.5,-6.5 - parent: 1 - uid: 221 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: 0.5,-5.5 - parent: 1 - uid: 222 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: 0.5,-4.5 - parent: 1 - uid: 223 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: 0.5,-3.5 - parent: 1 - uid: 224 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: 0.5,-2.5 - parent: 1 - uid: 225 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: 0.5,-1.5 - parent: 1 - uid: 226 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: 0.5,-0.5 - parent: 1 - uid: 227 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: 0.5,0.5 - parent: 1 - uid: 228 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: 0.5,1.5 - parent: 1 - uid: 240 components: - type: Transform - pos: -2.5,4.5 parent: 1 + pos: -2.5,4.5 - uid: 241 components: - type: Transform - pos: -2.5,3.5 parent: 1 + pos: -2.5,3.5 - uid: 242 components: - type: Transform - pos: -2.5,2.5 parent: 1 + pos: -2.5,2.5 - uid: 243 components: - type: Transform - pos: 3.5,4.5 parent: 1 + pos: 3.5,4.5 - uid: 244 components: - type: Transform - pos: 3.5,3.5 parent: 1 + pos: 3.5,3.5 - uid: 245 components: - type: Transform - pos: 3.5,2.5 parent: 1 + pos: 3.5,2.5 - proto: CarpetBlack entities: - uid: 362 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: -0.5,-12.5 - parent: 1 - uid: 363 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: 1.5,-11.5 - parent: 1 - uid: 364 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: -0.5,-11.5 - parent: 1 - uid: 365 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: 1.5,-12.5 - parent: 1 - proto: CarpStatueEyes entities: - uid: 333 components: - type: Transform - pos: -3.5,-1.5 parent: 1 + pos: -3.5,-1.5 - uid: 334 components: - type: Transform - pos: 4.5,-1.5 parent: 1 + pos: 4.5,-1.5 - uid: 335 components: - type: Transform - pos: 4.5,-7.5 parent: 1 + pos: 4.5,-7.5 - uid: 336 components: - type: Transform - pos: -3.5,-7.5 parent: 1 + pos: -3.5,-7.5 - uid: 337 components: - type: Transform - pos: -3.5,4.5 parent: 1 + pos: -3.5,4.5 - uid: 338 components: - type: Transform - pos: 4.5,4.5 parent: 1 + pos: 4.5,4.5 - uid: 339 components: - type: Transform - pos: -2.5,-10.5 parent: 1 + pos: -2.5,-10.5 - uid: 340 components: - type: Transform - pos: 3.5,-10.5 parent: 1 + pos: 3.5,-10.5 - proto: ChairCursed entities: - uid: 184 components: - type: Transform - pos: 0.5281794,6.482944 parent: 1 + pos: 0.5281794,6.482944 - proto: ChurchBell entities: - uid: 233 components: - type: Transform - pos: -3.5,10.5 parent: 1 + pos: -3.5,10.5 - uid: 234 components: - type: Transform - pos: 4.5,10.5 parent: 1 + pos: 4.5,10.5 - proto: ClothingEyesBlindfold entities: - uid: 383 components: - type: Transform - pos: -1.4659541,-10.040332 parent: 1 + pos: -1.4659541,-10.040332 - uid: 384 components: - type: Transform - pos: -1.4867874,-9.050749 parent: 1 + pos: -1.4867874,-9.050749 - uid: 385 components: - type: Transform - pos: -1.4763707,-7.7278314 parent: 1 + pos: -1.4763707,-7.7278314 - uid: 386 components: - type: Transform - pos: 2.534046,-10.050749 parent: 1 + pos: 2.534046,-10.050749 - uid: 387 components: - type: Transform - pos: 2.5444627,-9.061165 parent: 1 + pos: 2.5444627,-9.061165 - uid: 388 components: - type: Transform - pos: 2.5236292,-7.7278314 parent: 1 + pos: 2.5236292,-7.7278314 - proto: ClothingHeadHatHoodCulthood entities: - uid: 353 components: - type: Transform - pos: -0.28010848,10.79443 parent: 1 + pos: -0.28010848,10.79443 - uid: 354 components: - type: Transform - pos: 1.3553083,10.815263 parent: 1 + pos: 1.3553083,10.815263 - uid: 389 components: - type: Transform - pos: -1.4555374,-7.7590814 parent: 1 + pos: -1.4555374,-7.7590814 - uid: 390 components: - type: Transform - pos: 2.534046,-7.7382483 parent: 1 + pos: 2.534046,-7.7382483 - uid: 391 components: - type: Transform - pos: -1.4659541,-9.061165 parent: 1 + pos: -1.4659541,-9.061165 - uid: 392 components: - type: Transform - pos: 2.565296,-9.081999 parent: 1 + pos: 2.565296,-9.081999 - uid: 399 components: - type: Transform - pos: -1.4555374,-10.102832 parent: 1 + pos: -1.4555374,-10.102832 - uid: 400 components: - type: Transform - pos: 2.5548792,-10.123665 parent: 1 + pos: 2.5548792,-10.123665 - proto: ClothingMaskJackal entities: - uid: 401 components: - type: Transform - pos: -0.70903397,10.395655 parent: 1 + pos: -0.70903397,10.395655 - proto: ClothingMaskRaven entities: - uid: 402 components: - type: Transform - pos: 1.7492994,10.374822 parent: 1 + pos: 1.7492994,10.374822 - proto: ClothingOuterRobesCult entities: - uid: 349 components: - type: Transform - pos: -0.28010848,10.596513 parent: 1 + pos: -0.28010848,10.596513 - uid: 350 components: - type: Transform - pos: 1.3448917,10.60693 parent: 1 + pos: 1.3448917,10.60693 - uid: 393 components: - type: Transform - pos: -1.4659541,-9.248665 parent: 1 + pos: -1.4659541,-9.248665 - uid: 394 components: - type: Transform - pos: 2.5757127,-9.269499 parent: 1 + pos: 2.5757127,-9.269499 - uid: 395 components: - type: Transform - pos: 2.534046,-7.9361644 parent: 1 + pos: 2.534046,-7.9361644 - uid: 396 components: - type: Transform - pos: -1.4451207,-7.9257483 parent: 1 + pos: -1.4451207,-7.9257483 - uid: 397 components: - type: Transform - pos: -1.4451207,-10.311165 parent: 1 + pos: -1.4451207,-10.311165 - uid: 398 components: - type: Transform - pos: 2.5548792,-10.321582 parent: 1 + pos: 2.5548792,-10.321582 - proto: ClothingShoesCult entities: - uid: 351 components: - type: Transform - pos: -0.30094174,10.315263 parent: 1 + pos: -0.30094174,10.315263 - uid: 352 components: - type: Transform - pos: 1.3136417,10.35693 parent: 1 + pos: 1.3136417,10.35693 - proto: CombatKnife entities: - uid: 406 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: -2.4833775,-1.4382012 - parent: 1 - proto: DrinkJarWhat entities: - uid: 415 components: - type: Transform - pos: 3.7225757,-7.3019304 parent: 1 + pos: 3.7225757,-7.3019304 - proto: DrinkPoisonWinebottleFull entities: - uid: 416 components: - type: Transform - pos: -2.7253413,-7.2810974 parent: 1 + pos: -2.7253413,-7.2810974 - proto: FloorLavaEntity entities: - uid: 97 components: - type: Transform - pos: -1.5,11.5 parent: 1 + pos: -1.5,11.5 - uid: 98 components: - type: Transform - pos: -0.5,11.5 parent: 1 + pos: -0.5,11.5 - uid: 101 components: - type: Transform - pos: -0.5,12.5 parent: 1 + pos: -0.5,12.5 - uid: 110 components: - type: Transform - pos: -2.5,11.5 parent: 1 + pos: -2.5,11.5 - uid: 111 components: - type: Transform - pos: 0.5,12.5 parent: 1 + pos: 0.5,12.5 - uid: 112 components: - type: Transform - pos: 3.5,11.5 parent: 1 + pos: 3.5,11.5 - uid: 113 components: - type: Transform - pos: 0.5,11.5 parent: 1 + pos: 0.5,11.5 - uid: 114 components: - type: Transform - pos: 1.5,11.5 parent: 1 + pos: 1.5,11.5 - uid: 115 components: - type: Transform - pos: 2.5,11.5 parent: 1 + pos: 2.5,11.5 - uid: 117 components: - type: Transform - pos: 1.5,12.5 parent: 1 + pos: 1.5,12.5 - uid: 122 components: - type: Transform - pos: -3.5,9.5 parent: 1 + pos: -3.5,9.5 - uid: 123 components: - type: Transform - pos: -3.5,8.5 parent: 1 + pos: -3.5,8.5 - uid: 124 components: - type: Transform - pos: -3.5,7.5 parent: 1 + pos: -3.5,7.5 - uid: 125 components: - type: Transform - pos: -3.5,6.5 parent: 1 + pos: -3.5,6.5 - uid: 126 components: - type: Transform - pos: -3.5,5.5 parent: 1 + pos: -3.5,5.5 - uid: 127 components: - type: Transform - pos: 4.5,9.5 parent: 1 + pos: 4.5,9.5 - uid: 128 components: - type: Transform - pos: 4.5,8.5 parent: 1 + pos: 4.5,8.5 - uid: 129 components: - type: Transform - pos: 4.5,7.5 parent: 1 + pos: 4.5,7.5 - uid: 130 components: - type: Transform - pos: 4.5,6.5 parent: 1 + pos: 4.5,6.5 - uid: 131 components: - type: Transform - pos: 4.5,5.5 parent: 1 + pos: 4.5,5.5 - uid: 132 components: - type: Transform - pos: 4.5,3.5 parent: 1 + pos: 4.5,3.5 - uid: 133 components: - type: Transform - pos: 4.5,2.5 parent: 1 + pos: 4.5,2.5 - uid: 134 components: - type: Transform - pos: 4.5,1.5 parent: 1 + pos: 4.5,1.5 - uid: 135 components: - type: Transform - pos: 4.5,0.5 parent: 1 + pos: 4.5,0.5 - uid: 136 components: - type: Transform - pos: 4.5,-0.5 parent: 1 + pos: 4.5,-0.5 - uid: 137 components: - type: Transform - pos: -3.5,3.5 parent: 1 + pos: -3.5,3.5 - uid: 138 components: - type: Transform - pos: -3.5,2.5 parent: 1 + pos: -3.5,2.5 - uid: 139 components: - type: Transform - pos: -3.5,1.5 parent: 1 + pos: -3.5,1.5 - uid: 140 components: - type: Transform - pos: -3.5,0.5 parent: 1 + pos: -3.5,0.5 - uid: 141 components: - type: Transform - pos: -3.5,-0.5 parent: 1 + pos: -3.5,-0.5 - uid: 142 components: - type: Transform - pos: -3.5,-2.5 parent: 1 + pos: -3.5,-2.5 - uid: 143 components: - type: Transform - pos: -3.5,-3.5 parent: 1 + pos: -3.5,-3.5 - uid: 144 components: - type: Transform - pos: -3.5,-4.5 parent: 1 + pos: -3.5,-4.5 - uid: 145 components: - type: Transform - pos: -3.5,-5.5 parent: 1 + pos: -3.5,-5.5 - uid: 146 components: - type: Transform - pos: -3.5,-6.5 parent: 1 + pos: -3.5,-6.5 - uid: 147 components: - type: Transform - pos: 4.5,-2.5 parent: 1 + pos: 4.5,-2.5 - uid: 148 components: - type: Transform - pos: 4.5,-3.5 parent: 1 + pos: 4.5,-3.5 - uid: 149 components: - type: Transform - pos: 4.5,-4.5 parent: 1 + pos: 4.5,-4.5 - uid: 150 components: - type: Transform - pos: 4.5,-5.5 parent: 1 + pos: 4.5,-5.5 - uid: 151 components: - type: Transform - pos: 4.5,-6.5 parent: 1 + pos: 4.5,-6.5 - uid: 152 components: - type: Transform - pos: -1.5,8.5 parent: 1 + pos: -1.5,8.5 - uid: 153 components: - type: Transform - pos: -1.5,7.5 parent: 1 + pos: -1.5,7.5 - uid: 154 components: - type: Transform - pos: 2.5,8.5 parent: 1 + pos: 2.5,8.5 - uid: 155 components: - type: Transform - pos: 2.5,7.5 parent: 1 + pos: 2.5,7.5 - uid: 156 components: - type: Transform - pos: 2.5,6.5 parent: 1 + pos: 2.5,6.5 - uid: 157 components: - type: Transform - pos: -1.5,6.5 parent: 1 + pos: -1.5,6.5 - uid: 158 components: - type: Transform - pos: -0.5,6.5 parent: 1 + pos: -0.5,6.5 - uid: 159 components: - type: Transform - pos: -0.5,7.5 parent: 1 + pos: -0.5,7.5 - uid: 160 components: - type: Transform - pos: 1.5,6.5 parent: 1 + pos: 1.5,6.5 - uid: 161 components: - type: Transform - pos: -1.5,5.5 parent: 1 + pos: -1.5,5.5 - uid: 162 components: - type: Transform - pos: -0.5,5.5 parent: 1 + pos: -0.5,5.5 - uid: 163 components: - type: Transform - pos: 0.5,5.5 parent: 1 + pos: 0.5,5.5 - uid: 164 components: - type: Transform - pos: 1.5,5.5 parent: 1 + pos: 1.5,5.5 - uid: 165 components: - type: Transform - pos: 2.5,5.5 parent: 1 + pos: 2.5,5.5 - uid: 166 components: - type: Transform - pos: 0.5,4.5 parent: 1 + pos: 0.5,4.5 - uid: 167 components: - type: Transform - pos: -0.5,4.5 parent: 1 + pos: -0.5,4.5 - uid: 168 components: - type: Transform - pos: 1.5,4.5 parent: 1 + pos: 1.5,4.5 - uid: 169 components: - type: Transform - pos: 1.5,7.5 parent: 1 + pos: 1.5,7.5 - uid: 170 components: - type: Transform - pos: -1.5,4.5 parent: 1 + pos: -1.5,4.5 - uid: 171 components: - type: Transform - pos: 2.5,4.5 parent: 1 + pos: 2.5,4.5 - uid: 172 components: - type: Transform - pos: -0.5,3.5 parent: 1 + pos: -0.5,3.5 - uid: 173 components: - type: Transform - pos: 0.5,3.5 parent: 1 + pos: 0.5,3.5 - uid: 174 components: - type: Transform - pos: 1.5,3.5 parent: 1 + pos: 1.5,3.5 - uid: 229 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: 3.5,-9.5 - parent: 1 - uid: 230 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: 3.5,-8.5 - parent: 1 - uid: 231 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: -2.5,-9.5 - parent: 1 - uid: 232 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: -2.5,-8.5 - parent: 1 - uid: 276 components: - type: Transform - pos: -8.5,-1.5 parent: 1 + pos: -8.5,-1.5 - uid: 277 components: - type: Transform - pos: -7.5,-0.5 parent: 1 + pos: -7.5,-0.5 - uid: 278 components: - type: Transform - pos: -7.5,-1.5 parent: 1 + pos: -7.5,-1.5 - uid: 279 components: - type: Transform - pos: 8.5,8.5 parent: 1 + pos: 8.5,8.5 - uid: 280 components: - type: Transform - pos: 8.5,9.5 parent: 1 + pos: 8.5,9.5 - uid: 281 components: - type: Transform - pos: 8.5,10.5 parent: 1 + pos: 8.5,10.5 - uid: 282 components: - type: Transform - pos: 1.5,16.5 parent: 1 + pos: 1.5,16.5 - uid: 283 components: - type: Transform - pos: 2.5,16.5 parent: 1 + pos: 2.5,16.5 - uid: 284 components: - type: Transform - pos: 2.5,17.5 parent: 1 + pos: 2.5,17.5 - uid: 285 components: - type: Transform - pos: 3.5,17.5 parent: 1 + pos: 3.5,17.5 - uid: 286 components: - type: Transform - pos: 3.5,18.5 parent: 1 + pos: 3.5,18.5 - uid: 287 components: - type: Transform - pos: 2.5,18.5 parent: 1 + pos: 2.5,18.5 - uid: 288 components: - type: Transform - pos: -5.5,15.5 parent: 1 + pos: -5.5,15.5 - uid: 289 components: - type: Transform - pos: -5.5,14.5 parent: 1 + pos: -5.5,14.5 - uid: 290 components: - type: Transform - pos: -6.5,14.5 parent: 1 + pos: -6.5,14.5 - uid: 291 components: - type: Transform - pos: -7.5,13.5 parent: 1 + pos: -7.5,13.5 - uid: 292 components: - type: Transform - pos: -6.5,13.5 parent: 1 + pos: -6.5,13.5 - uid: 293 components: - type: Transform - pos: -7.5,9.5 parent: 1 + pos: -7.5,9.5 - uid: 294 components: - type: Transform - pos: -7.5,10.5 parent: 1 + pos: -7.5,10.5 - uid: 295 components: - type: Transform - pos: -7.5,11.5 parent: 1 + pos: -7.5,11.5 - uid: 296 components: - type: Transform - pos: -8.5,10.5 parent: 1 + pos: -8.5,10.5 - uid: 297 components: - type: Transform - pos: -8.5,5.5 parent: 1 + pos: -8.5,5.5 - uid: 298 components: - type: Transform - pos: -8.5,4.5 parent: 1 + pos: -8.5,4.5 - uid: 299 components: - type: Transform - pos: -7.5,4.5 parent: 1 + pos: -7.5,4.5 - uid: 300 components: - type: Transform - pos: -7.5,3.5 parent: 1 + pos: -7.5,3.5 - uid: 301 components: - type: Transform - pos: -7.5,-7.5 parent: 1 + pos: -7.5,-7.5 - uid: 302 components: - type: Transform - pos: -7.5,-8.5 parent: 1 + pos: -7.5,-8.5 - uid: 303 components: - type: Transform - pos: -7.5,-9.5 parent: 1 + pos: -7.5,-9.5 - uid: 304 components: - type: Transform - pos: -8.5,-8.5 parent: 1 + pos: -8.5,-8.5 - uid: 305 components: - type: Transform - pos: -4.5,-14.5 parent: 1 + pos: -4.5,-14.5 - uid: 306 components: - type: Transform - pos: -4.5,-15.5 parent: 1 + pos: -4.5,-15.5 - uid: 307 components: - type: Transform - pos: -3.5,-15.5 parent: 1 + pos: -3.5,-15.5 - uid: 308 components: - type: Transform - pos: -2.5,-15.5 parent: 1 + pos: -2.5,-15.5 - uid: 309 components: - type: Transform - pos: 4.5,-16.5 parent: 1 + pos: 4.5,-16.5 - uid: 310 components: - type: Transform - pos: -2.5,-16.5 parent: 1 + pos: -2.5,-16.5 - uid: 311 components: - type: Transform - pos: 6.5,-13.5 parent: 1 + pos: 6.5,-13.5 - uid: 312 components: - type: Transform - pos: 6.5,-12.5 parent: 1 + pos: 6.5,-12.5 - uid: 313 components: - type: Transform - pos: 7.5,-12.5 parent: 1 + pos: 7.5,-12.5 - uid: 314 components: - type: Transform - pos: 7.5,-11.5 parent: 1 + pos: 7.5,-11.5 - uid: 315 components: - type: Transform - pos: 9.5,-2.5 parent: 1 + pos: 9.5,-2.5 - uid: 316 components: - type: Transform - pos: 9.5,-3.5 parent: 1 + pos: 9.5,-3.5 - uid: 317 components: - type: Transform - pos: 8.5,-3.5 parent: 1 + pos: 8.5,-3.5 - uid: 318 components: - type: Transform - pos: 8.5,-4.5 parent: 1 + pos: 8.5,-4.5 - uid: 319 components: - type: Transform - pos: 8.5,-6.5 parent: 1 + pos: 8.5,-6.5 - uid: 320 components: - type: Transform - pos: 8.5,-7.5 parent: 1 + pos: 8.5,-7.5 - uid: 321 components: - type: Transform - pos: 8.5,-8.5 parent: 1 + pos: 8.5,-8.5 - uid: 322 components: - type: Transform - pos: 8.5,1.5 parent: 1 + pos: 8.5,1.5 - uid: 323 components: - type: Transform - pos: 8.5,2.5 parent: 1 + pos: 8.5,2.5 - uid: 324 components: - type: Transform - pos: 8.5,3.5 parent: 1 + pos: 8.5,3.5 - uid: 325 components: - type: Transform - pos: 9.5,3.5 parent: 1 + pos: 9.5,3.5 - uid: 326 components: - type: Transform - pos: 9.5,4.5 parent: 1 + pos: 9.5,4.5 - uid: 327 components: - type: Transform - pos: 10.5,3.5 parent: 1 + pos: 10.5,3.5 - uid: 328 components: - type: Transform - pos: 10.5,4.5 parent: 1 + pos: 10.5,4.5 - uid: 329 components: - type: Transform - pos: 9.5,5.5 parent: 1 + pos: 9.5,5.5 - uid: 330 components: - type: Transform - pos: 7.5,14.5 parent: 1 + pos: 7.5,14.5 - uid: 331 components: - type: Transform - pos: 6.5,14.5 parent: 1 + pos: 6.5,14.5 - uid: 332 components: - type: Transform - pos: 6.5,15.5 parent: 1 + pos: 6.5,15.5 - uid: 417 components: - type: Transform - pos: 7.5,9.5 parent: 1 + pos: 7.5,9.5 - uid: 418 components: - type: Transform - pos: 7.5,8.5 parent: 1 + pos: 7.5,8.5 - uid: 419 components: - type: Transform - pos: 7.5,7.5 parent: 1 + pos: 7.5,7.5 - uid: 420 components: - type: Transform - pos: -6.5,8.5 parent: 1 + pos: -6.5,8.5 - uid: 421 components: - type: Transform - pos: -6.5,9.5 parent: 1 + pos: -6.5,9.5 - uid: 422 components: - type: Transform - pos: -6.5,7.5 parent: 1 + pos: -6.5,7.5 - uid: 423 components: - type: Transform - pos: -7.5,8.5 parent: 1 + pos: -7.5,8.5 - uid: 424 components: - type: Transform - pos: -3.5,-16.5 parent: 1 + pos: -3.5,-16.5 - uid: 425 components: - type: Transform - pos: -2.5,-17.5 parent: 1 + pos: -2.5,-17.5 - uid: 426 components: - type: Transform - pos: 3.5,-17.5 parent: 1 + pos: 3.5,-17.5 - uid: 427 components: - type: Transform - pos: 5.5,-15.5 parent: 1 + pos: 5.5,-15.5 - uid: 428 components: - type: Transform - pos: 4.5,-15.5 parent: 1 + pos: 4.5,-15.5 - uid: 429 components: - type: Transform - pos: 3.5,-16.5 parent: 1 + pos: 3.5,-16.5 - proto: FoodBreadJellySlice entities: - uid: 412 components: - type: Transform - pos: -1.7440716,-7.3519263 parent: 1 + pos: -1.7440716,-7.3519263 - uid: 413 components: - type: Transform - pos: 2.7871785,-7.3623433 parent: 1 + pos: 2.7871785,-7.3623433 - proto: FoodCakeBrain entities: - uid: 410 components: - type: Transform - pos: -2.0253217,-1.3147343 parent: 1 + pos: -2.0253217,-1.3147343 - proto: FoodJellyAmanita entities: - uid: 411 components: - type: Transform - pos: 2.9538453,-1.3147343 parent: 1 + pos: 2.9538453,-1.3147343 - proto: FoodSoupTomatoBlood entities: - uid: 367 components: - type: Transform - pos: 2.4641972,3.6333878 parent: 1 + pos: 2.4641972,3.6333878 - uid: 368 components: - type: Transform - pos: -1.4316361,3.6125546 parent: 1 + pos: -1.4316361,3.6125546 - proto: GoldRing entities: - uid: 447 components: - type: Transform - pos: -1.1354166,10.444935 parent: 1 + pos: -1.1354166,10.444935 - proto: GoldRingDiamond entities: - uid: 446 components: - type: Transform - pos: 2.3958333,10.444935 parent: 1 + pos: 2.3958333,10.444935 - proto: IngotGold1 entities: - uid: 449 components: - type: Transform - pos: 2.3020833,10.663685 parent: 1 + pos: 2.3020833,10.663685 - type: Stack count: 5 - uid: 450 components: - type: Transform - pos: -1.5416666,10.642852 parent: 1 + pos: -1.5416666,10.642852 - type: Stack count: 5 - proto: IngotSilver1 @@ -1389,15 +1384,15 @@ entities: - uid: 441 components: - type: Transform - pos: -1.28125,10.517852 parent: 1 + pos: -1.28125,10.517852 - type: Stack count: 5 - uid: 448 components: - type: Transform - pos: 2.625,10.569935 parent: 1 + pos: 2.625,10.569935 - type: Stack count: 5 - proto: KitchenKnife @@ -1405,1037 +1400,1037 @@ entities: - uid: 407 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: 3.4020393,-1.4902844 - parent: 1 - proto: KitchenSpike entities: - uid: 403 components: - type: Transform - pos: 0.5,5.5 parent: 1 + pos: 0.5,5.5 - proto: LootSpawnerMaterialsSurplus entities: - uid: 451 components: - type: Transform - pos: -2.5,-6.5 parent: 1 + pos: -2.5,-6.5 - uid: 453 components: - type: Transform - pos: 3.5,-5.5 parent: 1 + pos: 3.5,-5.5 - proto: Machete entities: - uid: 404 components: - type: Transform - pos: -1.5354606,-1.3923677 parent: 1 + pos: -1.5354606,-1.3923677 - proto: MiningWindow entities: - uid: 246 components: - type: Transform - pos: 0.5,-12.5 parent: 1 + pos: 0.5,-12.5 - uid: 247 components: - type: Transform - pos: 0.5,-11.5 parent: 1 + pos: 0.5,-11.5 - uid: 250 components: - type: Transform - pos: 4.5,-11.5 parent: 1 + pos: 4.5,-11.5 - uid: 251 components: - type: Transform - pos: 4.5,-10.5 parent: 1 + pos: 4.5,-10.5 - uid: 252 components: - type: Transform - pos: 5.5,-10.5 parent: 1 + pos: 5.5,-10.5 - uid: 253 components: - type: Transform - pos: -3.5,-11.5 parent: 1 + pos: -3.5,-11.5 - uid: 254 components: - type: Transform - pos: -3.5,-10.5 parent: 1 + pos: -3.5,-10.5 - uid: 255 components: - type: Transform - pos: -4.5,-10.5 parent: 1 + pos: -4.5,-10.5 - uid: 256 components: - type: Transform - pos: 5.5,-7.5 parent: 1 + pos: 5.5,-7.5 - uid: 257 components: - type: Transform - pos: 6.5,-7.5 parent: 1 + pos: 6.5,-7.5 - uid: 262 components: - type: Transform - pos: -4.5,-7.5 parent: 1 + pos: -4.5,-7.5 - uid: 263 components: - type: Transform - pos: -5.5,-7.5 parent: 1 + pos: -5.5,-7.5 - uid: 264 components: - type: Transform - pos: -5.5,-1.5 parent: 1 + pos: -5.5,-1.5 - uid: 265 components: - type: Transform - pos: -4.5,-1.5 parent: 1 + pos: -4.5,-1.5 - uid: 266 components: - type: Transform - pos: 5.5,-1.5 parent: 1 + pos: 5.5,-1.5 - uid: 267 components: - type: Transform - pos: 6.5,-1.5 parent: 1 + pos: 6.5,-1.5 - uid: 268 components: - type: Transform - pos: 6.5,4.5 parent: 1 + pos: 6.5,4.5 - uid: 269 components: - type: Transform - pos: 5.5,4.5 parent: 1 + pos: 5.5,4.5 - uid: 270 components: - type: Transform - pos: -4.5,4.5 parent: 1 + pos: -4.5,4.5 - uid: 271 components: - type: Transform - pos: -5.5,4.5 parent: 1 + pos: -5.5,4.5 - uid: 272 components: - type: Transform - pos: -4.5,10.5 parent: 1 + pos: -4.5,10.5 - uid: 273 components: - type: Transform - pos: -5.5,10.5 parent: 1 + pos: -5.5,10.5 - uid: 274 components: - type: Transform - pos: 5.5,10.5 parent: 1 + pos: 5.5,10.5 - uid: 275 components: - type: Transform - pos: 6.5,10.5 parent: 1 + pos: 6.5,10.5 - proto: OrganHumanHeart entities: - uid: 348 components: - type: Transform - pos: 0.8969749,10.398597 parent: 1 + pos: 0.8969749,10.398597 - proto: RailingCorner entities: - uid: 238 components: - type: Transform - pos: 1.5,8.5 parent: 1 + pos: 1.5,8.5 - uid: 239 components: - type: Transform + parent: 1 rot: -1.5707963267948966 rad pos: -0.5,8.5 - parent: 1 - proto: RitualDagger entities: - uid: 347 components: - type: Transform - pos: 0.5740583,10.565263 parent: 1 + pos: 0.5740583,10.565263 - proto: SilverDoor entities: - uid: 360 components: - type: Transform - pos: -0.5,-12.5 parent: 1 + pos: -0.5,-12.5 - uid: 361 components: - type: Transform - pos: 1.5,-12.5 parent: 1 + pos: 1.5,-12.5 - proto: SilverRing entities: - uid: 445 components: - type: Transform - pos: 2.0833333,10.736602 parent: 1 + pos: 2.0833333,10.736602 - proto: SilverRingDiamond entities: - uid: 444 components: - type: Transform - pos: -1.4791666,10.559518 parent: 1 + pos: -1.4791666,10.559518 - proto: StairStageDark entities: - uid: 175 components: - type: Transform - pos: -2.5,5.5 parent: 1 + pos: -2.5,5.5 - uid: 176 components: - type: Transform - pos: -2.5,6.5 parent: 1 + pos: -2.5,6.5 - uid: 177 components: - type: Transform - pos: -2.5,7.5 parent: 1 + pos: -2.5,7.5 - uid: 178 components: - type: Transform - pos: -2.5,8.5 parent: 1 + pos: -2.5,8.5 - uid: 179 components: - type: Transform - pos: 3.5,5.5 parent: 1 + pos: 3.5,5.5 - uid: 180 components: - type: Transform - pos: 3.5,6.5 parent: 1 + pos: 3.5,6.5 - uid: 181 components: - type: Transform - pos: 3.5,7.5 parent: 1 + pos: 3.5,7.5 - uid: 182 components: - type: Transform - pos: 3.5,8.5 parent: 1 + pos: 3.5,8.5 - uid: 183 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: 0.5,7.5 - parent: 1 - proto: SurvivalKnife entities: - uid: 409 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: 3.3291228,-7.4671426 - parent: 1 - proto: TableStone entities: - uid: 235 components: - type: Transform - pos: -0.5,10.5 parent: 1 + pos: -0.5,10.5 - uid: 237 components: - type: Transform - pos: 1.5,10.5 parent: 1 + pos: 1.5,10.5 - uid: 343 components: - type: Transform - pos: -1.5,3.5 parent: 1 + pos: -1.5,3.5 - uid: 344 components: - type: Transform - pos: 2.5,3.5 parent: 1 + pos: 2.5,3.5 - uid: 369 components: - type: Transform - pos: 3.5,-1.5 parent: 1 + pos: 3.5,-1.5 - uid: 370 components: - type: Transform - pos: 2.5,-1.5 parent: 1 + pos: 2.5,-1.5 - uid: 371 components: - type: Transform - pos: -2.5,-1.5 parent: 1 + pos: -2.5,-1.5 - uid: 372 components: - type: Transform - pos: -1.5,-1.5 parent: 1 + pos: -1.5,-1.5 - uid: 373 components: - type: Transform - pos: 3.5,-7.5 parent: 1 + pos: 3.5,-7.5 - uid: 374 components: - type: Transform - pos: 2.5,-7.5 parent: 1 + pos: 2.5,-7.5 - uid: 375 components: - type: Transform - pos: -1.5,-7.5 parent: 1 + pos: -1.5,-7.5 - uid: 376 components: - type: Transform - pos: -2.5,-7.5 parent: 1 + pos: -2.5,-7.5 - uid: 377 components: - type: Transform - pos: -1.5,-8.5 parent: 1 + pos: -1.5,-8.5 - uid: 378 components: - type: Transform - pos: -1.5,-9.5 parent: 1 + pos: -1.5,-9.5 - uid: 379 components: - type: Transform - pos: -1.5,-10.5 parent: 1 + pos: -1.5,-10.5 - uid: 380 components: - type: Transform - pos: 2.5,-8.5 parent: 1 + pos: 2.5,-8.5 - uid: 381 components: - type: Transform - pos: 2.5,-9.5 parent: 1 + pos: 2.5,-9.5 - uid: 382 components: - type: Transform - pos: 2.5,-10.5 parent: 1 + pos: 2.5,-10.5 - uid: 442 components: - type: Transform - pos: -1.5,10.5 parent: 1 + pos: -1.5,10.5 - uid: 443 components: - type: Transform - pos: 2.5,10.5 parent: 1 + pos: 2.5,10.5 - proto: ThrowingKnife entities: - uid: 405 components: - type: Transform - pos: 2.3603725,-1.5069512 parent: 1 + pos: 2.3603725,-1.5069512 - uid: 408 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: -2.2542107,-7.5088096 - parent: 1 - proto: TreasureCoinDiamond entities: - uid: 452 components: - type: Transform - pos: 0.40063152,10.722128 parent: 1 + pos: 0.40063152,10.722128 - proto: TreasureCoinGold entities: - uid: 430 components: - type: Transform + parent: 1 rot: -1.5707963267948966 rad pos: -1.3541666,-1.5263778 - parent: 1 - uid: 431 components: - type: Transform + parent: 1 rot: -1.5707963267948966 rad pos: -2.7604167,-1.6201278 - parent: 1 - uid: 432 components: - type: Transform - pos: -2.5208335,-1.297211 parent: 1 + pos: -2.5208335,-1.297211 - uid: 433 components: - type: Transform - pos: 2.4583333,-1.2867944 parent: 1 + pos: 2.4583333,-1.2867944 - uid: 434 components: - type: Transform + parent: 1 rot: -1.5707963267948966 rad pos: 3.4270833,-1.2242944 - parent: 1 - uid: 435 components: - type: Transform - pos: 3.7291667,-1.4117944 parent: 1 + pos: 3.7291667,-1.4117944 - proto: TreasureCoinSilver entities: - uid: 436 components: - type: Transform + parent: 1 rot: -1.5707963267948966 rad pos: -1.4895834,-1.2763778 - parent: 1 - uid: 437 components: - type: Transform + parent: 1 rot: -1.5707963267948966 rad pos: 2.2604167,-1.484711 - parent: 1 - uid: 438 components: - type: Transform + parent: 1 rot: -1.5707963267948966 rad pos: 3.75,-1.203461 - parent: 1 - uid: 439 components: - type: Transform + parent: 1 rot: -1.5707963267948966 rad pos: 2.6666667,3.6904576 - parent: 1 - uid: 440 components: - type: Transform + parent: 1 rot: -1.5707963267948966 rad pos: -1.28125,3.7008743 - parent: 1 - proto: WallBasaltCobblebrick entities: - uid: 2 components: - type: Transform - pos: -1.5,-12.5 parent: 1 + pos: -1.5,-12.5 - uid: 3 components: - type: Transform - pos: -1.5,-11.5 parent: 1 + pos: -1.5,-11.5 - uid: 4 components: - type: Transform - pos: -2.5,-12.5 parent: 1 + pos: -2.5,-12.5 - uid: 5 components: - type: Transform - pos: -2.5,-11.5 parent: 1 + pos: -2.5,-11.5 - uid: 6 components: - type: Transform - pos: 2.5,-12.5 parent: 1 + pos: 2.5,-12.5 - uid: 7 components: - type: Transform - pos: 2.5,-11.5 parent: 1 + pos: 2.5,-11.5 - uid: 8 components: - type: Transform - pos: 3.5,-12.5 parent: 1 + pos: 3.5,-12.5 - uid: 9 components: - type: Transform - pos: 3.5,-11.5 parent: 1 + pos: 3.5,-11.5 - uid: 10 components: - type: Transform - pos: 4.5,-9.5 parent: 1 + pos: 4.5,-9.5 - uid: 11 components: - type: Transform - pos: 4.5,-8.5 parent: 1 + pos: 4.5,-8.5 - uid: 12 components: - type: Transform - pos: 5.5,-9.5 parent: 1 + pos: 5.5,-9.5 - uid: 13 components: - type: Transform - pos: 5.5,-8.5 parent: 1 + pos: 5.5,-8.5 - uid: 14 components: - type: Transform - pos: -3.5,-9.5 parent: 1 + pos: -3.5,-9.5 - uid: 15 components: - type: Transform - pos: -3.5,-8.5 parent: 1 + pos: -3.5,-8.5 - uid: 16 components: - type: Transform - pos: -4.5,-9.5 parent: 1 + pos: -4.5,-9.5 - uid: 17 components: - type: Transform - pos: -4.5,-8.5 parent: 1 + pos: -4.5,-8.5 - uid: 18 components: - type: Transform - pos: -5.5,-6.5 parent: 1 + pos: -5.5,-6.5 - uid: 19 components: - type: Transform - pos: -5.5,-5.5 parent: 1 + pos: -5.5,-5.5 - uid: 20 components: - type: Transform - pos: -5.5,-4.5 parent: 1 + pos: -5.5,-4.5 - uid: 21 components: - type: Transform - pos: -5.5,-3.5 parent: 1 + pos: -5.5,-3.5 - uid: 22 components: - type: Transform - pos: -5.5,-2.5 parent: 1 + pos: -5.5,-2.5 - uid: 23 components: - type: Transform - pos: -4.5,-6.5 parent: 1 + pos: -4.5,-6.5 - uid: 24 components: - type: Transform - pos: -4.5,-5.5 parent: 1 + pos: -4.5,-5.5 - uid: 25 components: - type: Transform - pos: -4.5,-4.5 parent: 1 + pos: -4.5,-4.5 - uid: 26 components: - type: Transform - pos: -4.5,-3.5 parent: 1 + pos: -4.5,-3.5 - uid: 27 components: - type: Transform - pos: -4.5,-2.5 parent: 1 + pos: -4.5,-2.5 - uid: 28 components: - type: Transform - pos: 6.5,-6.5 parent: 1 + pos: 6.5,-6.5 - uid: 29 components: - type: Transform - pos: 6.5,-5.5 parent: 1 + pos: 6.5,-5.5 - uid: 30 components: - type: Transform - pos: 6.5,-4.5 parent: 1 + pos: 6.5,-4.5 - uid: 31 components: - type: Transform - pos: 6.5,-3.5 parent: 1 + pos: 6.5,-3.5 - uid: 32 components: - type: Transform - pos: 6.5,-2.5 parent: 1 + pos: 6.5,-2.5 - uid: 33 components: - type: Transform - pos: 5.5,-6.5 parent: 1 + pos: 5.5,-6.5 - uid: 34 components: - type: Transform - pos: 5.5,-5.5 parent: 1 + pos: 5.5,-5.5 - uid: 35 components: - type: Transform - pos: 5.5,-4.5 parent: 1 + pos: 5.5,-4.5 - uid: 36 components: - type: Transform - pos: 5.5,-3.5 parent: 1 + pos: 5.5,-3.5 - uid: 37 components: - type: Transform - pos: 5.5,-2.5 parent: 1 + pos: 5.5,-2.5 - uid: 38 components: - type: Transform - pos: -5.5,-0.5 parent: 1 + pos: -5.5,-0.5 - uid: 39 components: - type: Transform - pos: -5.5,0.5 parent: 1 + pos: -5.5,0.5 - uid: 40 components: - type: Transform - pos: -5.5,1.5 parent: 1 + pos: -5.5,1.5 - uid: 41 components: - type: Transform - pos: -5.5,2.5 parent: 1 + pos: -5.5,2.5 - uid: 42 components: - type: Transform - pos: -5.5,3.5 parent: 1 + pos: -5.5,3.5 - uid: 43 components: - type: Transform - pos: -4.5,-0.5 parent: 1 + pos: -4.5,-0.5 - uid: 44 components: - type: Transform - pos: -4.5,0.5 parent: 1 + pos: -4.5,0.5 - uid: 45 components: - type: Transform - pos: -4.5,1.5 parent: 1 + pos: -4.5,1.5 - uid: 46 components: - type: Transform - pos: -4.5,2.5 parent: 1 + pos: -4.5,2.5 - uid: 47 components: - type: Transform - pos: -4.5,3.5 parent: 1 + pos: -4.5,3.5 - uid: 48 components: - type: Transform - pos: 5.5,-0.5 parent: 1 + pos: 5.5,-0.5 - uid: 49 components: - type: Transform - pos: 5.5,0.5 parent: 1 + pos: 5.5,0.5 - uid: 50 components: - type: Transform - pos: 5.5,1.5 parent: 1 + pos: 5.5,1.5 - uid: 51 components: - type: Transform - pos: 5.5,2.5 parent: 1 + pos: 5.5,2.5 - uid: 52 components: - type: Transform - pos: 5.5,3.5 parent: 1 + pos: 5.5,3.5 - uid: 53 components: - type: Transform - pos: 6.5,-0.5 parent: 1 + pos: 6.5,-0.5 - uid: 54 components: - type: Transform - pos: 6.5,0.5 parent: 1 + pos: 6.5,0.5 - uid: 55 components: - type: Transform - pos: 6.5,1.5 parent: 1 + pos: 6.5,1.5 - uid: 56 components: - type: Transform - pos: 6.5,2.5 parent: 1 + pos: 6.5,2.5 - uid: 57 components: - type: Transform - pos: 6.5,3.5 parent: 1 + pos: 6.5,3.5 - uid: 58 components: - type: Transform - pos: 6.5,5.5 parent: 1 + pos: 6.5,5.5 - uid: 59 components: - type: Transform - pos: 6.5,6.5 parent: 1 + pos: 6.5,6.5 - uid: 60 components: - type: Transform - pos: 6.5,7.5 parent: 1 + pos: 6.5,7.5 - uid: 61 components: - type: Transform - pos: 6.5,8.5 parent: 1 + pos: 6.5,8.5 - uid: 62 components: - type: Transform - pos: 6.5,9.5 parent: 1 + pos: 6.5,9.5 - uid: 63 components: - type: Transform - pos: 5.5,5.5 parent: 1 + pos: 5.5,5.5 - uid: 64 components: - type: Transform - pos: 5.5,6.5 parent: 1 + pos: 5.5,6.5 - uid: 65 components: - type: Transform - pos: 5.5,7.5 parent: 1 + pos: 5.5,7.5 - uid: 66 components: - type: Transform - pos: 5.5,8.5 parent: 1 + pos: 5.5,8.5 - uid: 67 components: - type: Transform - pos: 5.5,9.5 parent: 1 + pos: 5.5,9.5 - uid: 68 components: - type: Transform - pos: -4.5,5.5 parent: 1 + pos: -4.5,5.5 - uid: 69 components: - type: Transform - pos: -4.5,6.5 parent: 1 + pos: -4.5,6.5 - uid: 70 components: - type: Transform - pos: -4.5,7.5 parent: 1 + pos: -4.5,7.5 - uid: 71 components: - type: Transform - pos: -4.5,8.5 parent: 1 + pos: -4.5,8.5 - uid: 72 components: - type: Transform - pos: -4.5,9.5 parent: 1 + pos: -4.5,9.5 - uid: 73 components: - type: Transform - pos: -5.5,5.5 parent: 1 + pos: -5.5,5.5 - uid: 74 components: - type: Transform - pos: -5.5,6.5 parent: 1 + pos: -5.5,6.5 - uid: 75 components: - type: Transform - pos: -5.5,7.5 parent: 1 + pos: -5.5,7.5 - uid: 76 components: - type: Transform - pos: -5.5,8.5 parent: 1 + pos: -5.5,8.5 - uid: 77 components: - type: Transform - pos: -5.5,9.5 parent: 1 + pos: -5.5,9.5 - uid: 78 components: - type: Transform - pos: -4.5,11.5 parent: 1 + pos: -4.5,11.5 - uid: 79 components: - type: Transform - pos: -4.5,12.5 parent: 1 + pos: -4.5,12.5 - uid: 80 components: - type: Transform - pos: -3.5,11.5 parent: 1 + pos: -3.5,11.5 - uid: 81 components: - type: Transform - pos: -3.5,12.5 parent: 1 + pos: -3.5,12.5 - uid: 82 components: - type: Transform - pos: 4.5,11.5 parent: 1 + pos: 4.5,11.5 - uid: 83 components: - type: Transform - pos: 4.5,12.5 parent: 1 + pos: 4.5,12.5 - uid: 84 components: - type: Transform - pos: 5.5,11.5 parent: 1 + pos: 5.5,11.5 - uid: 85 components: - type: Transform - pos: 5.5,12.5 parent: 1 + pos: 5.5,12.5 - uid: 86 components: - type: Transform - pos: -1.5,14.5 parent: 1 + pos: -1.5,14.5 - uid: 87 components: - type: Transform - pos: -1.5,13.5 parent: 1 + pos: -1.5,13.5 - uid: 88 components: - type: Transform - pos: -0.5,14.5 parent: 1 + pos: -0.5,14.5 - uid: 89 components: - type: Transform - pos: -0.5,13.5 parent: 1 + pos: -0.5,13.5 - uid: 90 components: - type: Transform - pos: 0.5,14.5 parent: 1 + pos: 0.5,14.5 - uid: 91 components: - type: Transform - pos: 0.5,13.5 parent: 1 + pos: 0.5,13.5 - uid: 92 components: - type: Transform - pos: 1.5,14.5 parent: 1 + pos: 1.5,14.5 - uid: 93 components: - type: Transform - pos: 1.5,13.5 parent: 1 + pos: 1.5,13.5 - uid: 94 components: - type: Transform - pos: 2.5,14.5 parent: 1 + pos: 2.5,14.5 - uid: 95 components: - type: Transform - pos: 2.5,13.5 parent: 1 + pos: 2.5,13.5 - uid: 96 components: - type: Transform - pos: -1.5,12.5 parent: 1 + pos: -1.5,12.5 - uid: 99 components: - type: Transform - pos: 3.5,13.5 parent: 1 + pos: 3.5,13.5 - uid: 100 components: - type: Transform - pos: 2.5,12.5 parent: 1 + pos: 2.5,12.5 - uid: 102 components: - type: Transform - pos: -2.5,14.5 parent: 1 + pos: -2.5,14.5 - uid: 103 components: - type: Transform - pos: 3.5,12.5 parent: 1 + pos: 3.5,12.5 - uid: 104 components: - type: Transform - pos: 4.5,13.5 parent: 1 + pos: 4.5,13.5 - uid: 105 components: - type: Transform - pos: 5.5,13.5 parent: 1 + pos: 5.5,13.5 - uid: 106 components: - type: Transform - pos: -2.5,13.5 parent: 1 + pos: -2.5,13.5 - uid: 107 components: - type: Transform - pos: -2.5,12.5 parent: 1 + pos: -2.5,12.5 - uid: 108 components: - type: Transform - pos: -3.5,13.5 parent: 1 + pos: -3.5,13.5 - uid: 109 components: - type: Transform - pos: -4.5,13.5 parent: 1 + pos: -4.5,13.5 - uid: 116 components: - type: Transform - pos: 3.5,14.5 parent: 1 + pos: 3.5,14.5 - uid: 118 components: - type: Transform - pos: 6.5,12.5 parent: 1 + pos: 6.5,12.5 - uid: 119 components: - type: Transform - pos: 6.5,11.5 parent: 1 + pos: 6.5,11.5 - uid: 120 components: - type: Transform - pos: -5.5,12.5 parent: 1 + pos: -5.5,12.5 - uid: 121 components: - type: Transform - pos: -5.5,11.5 parent: 1 + pos: -5.5,11.5 - uid: 248 components: - type: Transform - pos: 5.5,-11.5 parent: 1 + pos: 5.5,-11.5 - uid: 249 components: - type: Transform - pos: -4.5,-11.5 parent: 1 + pos: -4.5,-11.5 - uid: 258 components: - type: Transform - pos: 6.5,-8.5 parent: 1 + pos: 6.5,-8.5 - uid: 259 components: - type: Transform - pos: 6.5,-9.5 parent: 1 + pos: 6.5,-9.5 - uid: 260 components: - type: Transform - pos: -5.5,-8.5 parent: 1 + pos: -5.5,-8.5 - uid: 261 components: - type: Transform - pos: -5.5,-9.5 parent: 1 + pos: -5.5,-9.5 - proto: WaterCooler entities: - uid: 366 @@ -2443,211 +2438,209 @@ entities: - type: MetaData name: blood cooler - type: Transform - pos: 0.5,-10.5 parent: 1 - - type: SolutionContainerManager - solutions: - tank: - temperature: 293.15 - canReact: True - maxVol: 500 - name: null - reagents: - - data: [] - ReagentId: Blood - Quantity: 500 + pos: 0.5,-10.5 + - type: Solution + solution: + temperature: 293.15 + maxVol: 480 + reagents: + - ReagentId: Blood + data: [] + Quantity: 480 + canReact: True - proto: WoodenBench entities: - uid: 185 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: -2.5,1.5 - parent: 1 - uid: 186 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: -2.5,0.5 - parent: 1 - uid: 187 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: -2.5,-0.5 - parent: 1 - uid: 189 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: -2.5,-2.5 - parent: 1 - uid: 190 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: -2.5,-3.5 - parent: 1 - uid: 191 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: -2.5,-4.5 - parent: 1 - uid: 192 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: -2.5,-5.5 - parent: 1 - uid: 193 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: -2.5,-6.5 - parent: 1 - uid: 194 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: -1.5,1.5 - parent: 1 - uid: 195 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: -1.5,0.5 - parent: 1 - uid: 196 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: -1.5,-0.5 - parent: 1 - uid: 198 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: -1.5,-2.5 - parent: 1 - uid: 199 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: -1.5,-4.5 - parent: 1 - uid: 200 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: -1.5,-3.5 - parent: 1 - uid: 201 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: -1.5,-5.5 - parent: 1 - uid: 202 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: -1.5,-6.5 - parent: 1 - uid: 203 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: 2.5,1.5 - parent: 1 - uid: 204 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: 2.5,0.5 - parent: 1 - uid: 205 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: 2.5,-0.5 - parent: 1 - uid: 206 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: 3.5,1.5 - parent: 1 - uid: 207 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: 3.5,0.5 - parent: 1 - uid: 208 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: 3.5,-0.5 - parent: 1 - uid: 209 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: 2.5,-2.5 - parent: 1 - uid: 210 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: 2.5,-3.5 - parent: 1 - uid: 211 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: 2.5,-4.5 - parent: 1 - uid: 212 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: 2.5,-5.5 - parent: 1 - uid: 213 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: 2.5,-6.5 - parent: 1 - uid: 214 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: 3.5,-2.5 - parent: 1 - uid: 215 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: 3.5,-3.5 - parent: 1 - uid: 216 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: 3.5,-4.5 - parent: 1 - uid: 217 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: 3.5,-5.5 - parent: 1 - uid: 218 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: 3.5,-6.5 - parent: 1 ... diff --git a/Resources/Maps/Ruins/displaced_telescience.yml b/Resources/Maps/Ruins/displaced_telescience.yml index 87d35b4bb5..4fc7c9286f 100644 --- a/Resources/Maps/Ruins/displaced_telescience.yml +++ b/Resources/Maps/Ruins/displaced_telescience.yml @@ -1,11 +1,11 @@ meta: format: 7 category: Grid - engineVersion: 260.0.0 + engineVersion: 282.0.0 forkId: "" forkVersion: "" - time: 05/18/2025 11:12:07 - entityCount: 487 + time: 07/17/2026 15:32:24 + entityCount: 485 maps: [] grids: - 1 @@ -27,8 +27,8 @@ entities: - type: MetaData name: grid - type: Transform - pos: -1.0027034,-0.2303276 parent: invalid + pos: -1.0027034,-0.2303276 - type: MapGrid chunks: 0,0: @@ -49,11 +49,11 @@ entities: version: 7 - type: Broadphase - type: Physics - bodyStatus: InAir - angularDamping: 0.05 linearDamping: 0.05 fixedRotation: False bodyType: Dynamic + bodyStatus: InAir + angularDamping: 0.05 - type: Fixtures fixtures: {} - type: OccluderTree @@ -70,111 +70,111 @@ entities: nodes: - node: zIndex: 2 - color: '#FFFFFFFF' id: Caution + color: '#FFFFFFFF' decals: 1400: 4,-7 - node: - angle: 1.5707963267948966 rad - color: '#FFFFFFFF' id: Caution + color: '#FFFFFFFF' + angle: 1.5707963267948966 rad decals: 1023: 11.112959,-8.596471 - node: zIndex: 2 - angle: 1.5707963267948966 rad - color: '#9C2020FF' id: CautionGreyscale + color: '#9C2020FF' + angle: 1.5707963267948966 rad decals: 1399: -1,-8 - node: zIndex: 1 - color: '#FFFFFFFF' id: WarnBox + color: '#FFFFFFFF' decals: 1401: 2,-2 - node: zIndex: 2 - color: '#9C2020FF' id: WarnBoxGreyscale + color: '#9C2020FF' decals: 1395: -4,-10 - node: zIndex: 2 - color: '#FFFFFFFF' id: WarnBoxGreyscale + color: '#FFFFFFFF' decals: 1393: 5,-9 - node: - color: '#FFFFFFFF' id: WarnCornerNE + color: '#FFFFFFFF' decals: 0: 2,-6 - node: - color: '#FFFFFFFF' id: WarnCornerNW + color: '#FFFFFFFF' decals: 1: 0,-6 - node: zIndex: 2 - color: '#9C2020FF' id: WarnCornerSmallGreyscaleNW + color: '#9C2020FF' decals: 1397: -1,-9 - node: zIndex: 2 - color: '#334E6DFF' id: WarnCornerSmallGreyscaleSE + color: '#334E6DFF' decals: 16: -1,-5 - node: zIndex: 2 - color: '#334E6DFF' id: WarnCornerSmallGreyscaleSW + color: '#334E6DFF' decals: 17: 5,-5 - node: zIndex: 2 - color: '#9C2020FF' id: WarnCornerSmallGreyscaleSW + color: '#9C2020FF' decals: 1398: -1,-7 - node: - color: '#FFFFFFFF' id: WarnCornerSmallNE + color: '#FFFFFFFF' decals: 3: 2,-7 6: 4,-7 10: -1,-7 1405: 5,-3 - node: - color: '#FFFFFFFF' id: WarnCornerSmallNW + color: '#FFFFFFFF' decals: 2: 0,-7 4: 4,-7 1404: -1,-3 - node: - color: '#FFFFFFFF' id: WarnCornerSmallSE + color: '#FFFFFFFF' decals: 1406: 5,-1 - node: - color: '#FFFFFFFF' id: WarnCornerSmallSW + color: '#FFFFFFFF' decals: 1403: -1,-1 - node: - color: '#FFFFFFFF' id: WarnLineE + color: '#FFFFFFFF' decals: 8: 4,-6 1026: 9,-8 1407: 5,-2 - node: zIndex: 2 - color: '#334E6DFF' id: WarnLineGreyscaleS + color: '#334E6DFF' decals: 11: 0,-5 12: 1,-5 @@ -183,38 +183,38 @@ entities: 15: 4,-5 - node: zIndex: 2 - color: '#9C2020FF' id: WarnLineGreyscaleW + color: '#9C2020FF' decals: 1396: -1,-8 - node: - color: '#FFFFFFFF' id: WarnLineS + color: '#FFFFFFFF' decals: 7: 4,-6 1024: 11,-8 1025: 11,-9 1402: -1,-2 - node: - color: '#FFFFFFFF' id: WarnLineW + color: '#FFFFFFFF' decals: 5: 3,-7 9: 1,-6 - node: - cleanable: True - color: '#FFFFFFFF' id: burnt1 + color: '#FFFFFFFF' + cleanable: True decals: 975: 0,-3 976: 3,-1 1006: -7,0 1007: -6,1 - node: - cleanable: True zIndex: 2 - color: '#FFFFFFFF' id: burnt1 + color: '#FFFFFFFF' + cleanable: True decals: 1074: -3,-10 1075: -4,-6 @@ -225,18 +225,18 @@ entities: 1080: -7,-4 1081: 4,-6 - node: - cleanable: True - color: '#FFFFFFFF' id: burnt2 + color: '#FFFFFFFF' + cleanable: True decals: 971: 2,-2 972: 1,-2 977: 0,-4 - node: - cleanable: True zIndex: 2 - color: '#FFFFFFFF' id: burnt2 + color: '#FFFFFFFF' + cleanable: True decals: 1034: 11,-8 1036: -3,-9 @@ -254,9 +254,9 @@ entities: 1391: 7,-3 1392: 8,-3 - node: - cleanable: True - color: '#FFFFFFFF' id: burnt3 + color: '#FFFFFFFF' + cleanable: True decals: 973: 3,-2 978: 1,-3 @@ -278,10 +278,10 @@ entities: 1015: -6,-1 1016: -6,-3 - node: - cleanable: True zIndex: 2 - color: '#FFFFFFFF' id: burnt3 + color: '#FFFFFFFF' + cleanable: True decals: 1031: 7,-6 1032: 8,-5 @@ -294,9 +294,9 @@ entities: 1064: 8,-5 1065: 10,-4 - node: - cleanable: True - color: '#FFFFFFFF' id: burnt4 + color: '#FFFFFFFF' + cleanable: True decals: 974: 2,-3 982: 2,-2 @@ -306,10 +306,10 @@ entities: 1012: -8,1 1013: -6,1 - node: - cleanable: True zIndex: 2 - color: '#FFFFFFFF' id: burnt4 + color: '#FFFFFFFF' + cleanable: True decals: 1027: 11,-8 1028: 11,-9 @@ -331,10 +331,10 @@ entities: 1070: -6,-10 1073: -3,-7 - node: - cleanable: True zIndex: 3 - color: '#57121237' id: shortline + color: '#57121237' + cleanable: True decals: 758: 3.0981808,-4.063937 759: 2.9263058,-4.1264696 @@ -347,11 +347,11 @@ entities: 766: 2.9028683,-3.7200081 767: 3.0981808,-4.087387 - node: - cleanable: True zIndex: 3 - angle: 0.2617993877991494 rad - color: '#57121237' id: shortline + color: '#57121237' + cleanable: True + angle: 0.2617993877991494 rad decals: 768: 3.0278683,-4.0483046 769: 2.9575558,-4.0952034 @@ -363,10 +363,10 @@ entities: 775: 2.8403683,-3.6731093 776: 2.8794308,-3.7121918 - node: - cleanable: True zIndex: 3 - color: '#57121246' id: shortline + color: '#57121246' + cleanable: True decals: 452: 1.8425634,-2.4546344 453: 1.7800634,-2.5327995 @@ -388,11 +388,11 @@ entities: 469: 1.8425634,-2.6344154 470: 1.7253759,-2.6813152 - node: - cleanable: True zIndex: 3 - angle: 0.2617993877991494 rad - color: '#57121246' id: shortline + color: '#57121246' + cleanable: True + angle: 0.2617993877991494 rad decals: 777: 2.9653683,-4.0404873 778: 2.9263058,-3.9076064 @@ -407,10 +407,10 @@ entities: 787: 3.0278683,-4.0483046 788: 2.8169308,-3.6965592 - node: - cleanable: True zIndex: 3 - color: '#57121257' id: shortline + color: '#57121257' + cleanable: True decals: 620: 1.3269384,-4.5729256 621: 1.4597509,-4.526026 @@ -451,10 +451,10 @@ entities: 656: 1.3894384,-4.6432743 657: 1.4831884,-4.557292 - node: - cleanable: True zIndex: 3 - color: '#57121284' id: shortline + color: '#57121284' + cleanable: True decals: 471: 1.6628759,-2.5327995 472: 1.6785009,-2.2826698 @@ -593,11 +593,11 @@ entities: 618: 1.5300634,-3.9788654 619: 1.7019384,-3.8459842 - node: - cleanable: True zIndex: 3 - angle: 0.2617993877991494 rad - color: '#67121244' id: shortline + color: '#67121244' + cleanable: True + angle: 0.2617993877991494 rad decals: 789: 3.0044308,-4.189003 790: 2.9263058,-4.056121 @@ -676,10 +676,10 @@ entities: 863: 2.9888058,-4.3923945 864: 2.9419308,-4.579993 - node: - cleanable: True zIndex: 3 - color: '#76121284' id: shortline + color: '#76121284' + cleanable: True decals: 485: 1.7019384,-2.8923624 486: 1.6238134,-2.5249832 @@ -695,10 +695,10 @@ entities: 496: 2.1706884,-2.337386 497: 1.8972509,-2.6969478 - node: - cleanable: True zIndex: 2 - color: '#0600000A' id: smallbrush + color: '#0600000A' + cleanable: True decals: 1085: -1.6858704,-7.2935915 1086: -1.5139954,-7.309224 @@ -837,10 +837,10 @@ entities: 1219: 0.13632345,-6.5041175 1220: 0.19101095,-6.56665 - node: - cleanable: True zIndex: 2 - color: '#0600000E' id: smallbrush + color: '#0600000E' + cleanable: True decals: 1349: 5.524046,-8.350655 1350: 5.3443584,-8.061441 @@ -884,10 +884,10 @@ entities: 1388: 1.4381084,-9.398075 1389: 1.6881084,-9.22611 - node: - cleanable: True zIndex: 2 - color: '#0600001A' id: smallbrush + color: '#0600001A' + cleanable: True decals: 1221: -7.9557114,-1.0246365 1222: -7.9088364,-1.1809676 @@ -1011,19 +1011,19 @@ entities: 1340: 10.738945,-8.882181 1341: 10.94207,-8.944714 - node: - cleanable: True zIndex: 2 - color: '#0600001C' id: smallbrush + color: '#0600001C' + cleanable: True decals: 1082: -1.4358703,-7.0043783 1083: -1.3499328,-6.7698812 1084: -1.0686828,-6.5119343 - node: - cleanable: True zIndex: 3 - color: '#57121246' id: smallbrush + color: '#57121246' + cleanable: True decals: 424: 1.8347509,-2.2045038 425: 1.6238134,-1.9543736 @@ -1054,9 +1054,9 @@ entities: 450: 2.3113134,-2.673498 451: 2.6081884,-2.4859006 - node: - cleanable: True - color: '#5712121D' id: splatter + color: '#5712121D' + cleanable: True decals: 989: -0.6406853,-0.7189672 990: -0.5859978,-0.54700303 @@ -1072,10 +1072,10 @@ entities: 1000: 4.0077524,-0.47665334 1001: 5.0077524,-0.8205826 - node: - cleanable: True zIndex: 1 - color: '#57121227' id: splatter + color: '#57121227' + cleanable: True decals: 24: 1.6378884,-2.129091 25: 1.7238259,-1.8398778 @@ -1159,10 +1159,10 @@ entities: 103: 1.4582009,-3.9738023 104: 2.5441384,-3.833104 - node: - cleanable: True zIndex: 1 - color: '#5712122D' id: splatter + color: '#5712122D' + cleanable: True decals: 233: -1.3699241,-0.026433706 234: -1.1121116,0.3565781 @@ -1185,10 +1185,10 @@ entities: 251: -1.2839866,-3.371926 252: -1.1746116,-3.6845891 - node: - cleanable: True zIndex: 1 - color: '#5712122F' id: splatter + color: '#5712122F' + cleanable: True decals: 262: -0.97929907,-4.5678616 263: -1.0105491,-5.2322702 @@ -1216,10 +1216,10 @@ entities: 285: 4.2160134,-5.146288 286: 4.1222634,-5.1150217 - node: - cleanable: True zIndex: 3 - color: '#5712122F' id: splatter + color: '#5712122F' + cleanable: True decals: 287: 4.3097634,-5.177554 288: 3.755076,-5.146288 @@ -1286,10 +1286,10 @@ entities: 349: 4.2551928,-0.09293175 350: 4.6067553,-0.10074806 - node: - cleanable: True zIndex: 1 - color: '#57121235' id: splatter + color: '#57121235' + cleanable: True decals: 105: 1.4425759,-2.6528013 106: 1.3410134,-2.168174 @@ -1420,10 +1420,10 @@ entities: 231: 0.63007593,0.31749558 232: 1.3644509,0.09863114 - node: - cleanable: True zIndex: 3 - color: '#57121237' id: splatter + color: '#57121237' + cleanable: True decals: 658: -0.35274917,-4.064848 659: -0.28243667,-3.8772504 @@ -1526,10 +1526,10 @@ entities: 756: 3.1138058,-4.2828016 757: 3.1450558,-4.157736 - node: - cleanable: True zIndex: 3 - color: '#57121246' id: splatter + color: '#57121246' + cleanable: True decals: 351: 4.0208178,0.2171719 352: 3.7473803,0.2249887 @@ -1605,10 +1605,10 @@ entities: 422: 2.8995435,-2.415551 423: 1.9932935,-2.368652 - node: - cleanable: True zIndex: 1 - color: '#57121248' id: splatter + color: '#57121248' + cleanable: True decals: 253: -1.3230491,-3.4891746 254: -1.2996116,-2.6918848 @@ -1620,10 +1620,10 @@ entities: 260: -1.0886741,-4.7945423 261: 0.20820093,-4.8258085 - node: - cleanable: True zIndex: 1 - color: '#57121265' id: splatter + color: '#57121265' + cleanable: True decals: 18: 1.7472634,-1.8733788 19: 1.8800759,-1.8421125 @@ -1632,11 +1632,11 @@ entities: 22: 2.239451,-1.7014141 23: 2.4660134,-1.6779644 - node: - cleanable: True zIndex: 3 - angle: 0.2617993877991494 rad - color: '#6712122D' id: splatter + color: '#6712122D' + cleanable: True + angle: 0.2617993877991494 rad decals: 912: -1.8834603,-1.2950897 913: -2.3131478,-1.2169242 @@ -1698,11 +1698,11 @@ entities: 969: -1.4693978,-0.9589777 970: -1.4381478,-1.2950897 - node: - cleanable: True zIndex: 3 - angle: 0.2617993877991494 rad - color: '#67121244' id: splatter + color: '#67121244' + cleanable: True + angle: 0.2617993877991494 rad decals: 865: 3.3503788,-3.440471 866: 3.4128788,-3.2919562 @@ -1758,36 +1758,17 @@ entities: - type: GasTileOverlay - type: RadiationGridResistance - type: ImplicitRoof - - uid: 476 - mapInit: true - paused: true - components: - - type: MetaData - name: solution - beaker - - type: Transform - parent: 15 - - type: Solution - solution: - maxVol: 30 - name: beaker - reagents: - - data: [] - ReagentId: Frezon - Quantity: 20 - - data: [] - ReagentId: Fresium - Quantity: 10 - - type: ContainedSolution - containerName: beaker - container: 15 + - type: TileHistory + chunkHistory: {} + - type: ExplosionAirtightGrid - proto: AirAlarm entities: - uid: 2 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: 4.5,-9.5 - parent: 1 - type: DeviceList devices: - 306 @@ -1798,18 +1779,18 @@ entities: - uid: 3 components: - type: Transform + parent: 1 rot: -1.5707963267948966 rad pos: -4.5,-2.5 - parent: 1 - type: DeviceList devices: - 308 - uid: 4 components: - type: Transform + parent: 1 rot: -1.5707963267948966 rad pos: 6.5,-0.5 - parent: 1 - type: DeviceList devices: - 228 @@ -1823,11 +1804,11 @@ entities: - uid: 5 components: - type: MetaData - desc: It opens, it closes, and maybe crushes you. This one will probably crush you. name: broken command airlock + desc: It opens, it closes, and maybe crushes you. This one will probably crush you. - type: Transform - pos: 4.5,-5.5 parent: 1 + pos: 4.5,-5.5 missingComponents: - Anchorable - proto: AirlockCommandGlass @@ -1835,18 +1816,18 @@ entities: - uid: 6 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: 6.5,-7.5 - parent: 1 - uid: 7 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: -1.5,-7.5 - parent: 1 - type: Door - secondsUntilStateChange: -5774.7476 state: Opening + secondsUntilStateChange: -5859.55 - type: DeviceLinkSource lastSignals: DoorStatus: True @@ -1855,22 +1836,22 @@ entities: - uid: 8 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: -4.5,-0.5 - parent: 1 - uid: 9 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: -4.5,-1.5 - parent: 1 - proto: AirSensor entities: - uid: 10 components: - type: Transform - pos: 1.5,1.5 parent: 1 + pos: 1.5,1.5 - type: DeviceNetwork deviceLists: - 4 @@ -1881,57 +1862,57 @@ entities: - type: MetaData desc: An impossible object. Arcs flash between it and the telepad. There's a slight blue glow around it. - type: Transform - pos: 2.5000086,-1.333174 parent: 1 + pos: 2.5000086,-1.333174 - type: Anomaly - healthChangePerSecond: 0 - minPulseLength: 1500 - maxPulseLength: 1800 + supercriticalSoundAtAnimationStart: !type:SoundPathSpecifier + path: /Audio/Ambience/ambiruin2.ogg + params: + volume: 2 + variation: null + rolloffFactor: 1 + referenceDistance: 1 + playOffsetSeconds: 0 + pitch: 1 + maxDistance: 15 + loop: False + supercriticalSound: !type:SoundPathSpecifier + path: /Audio/Ambience/ambiruin3.ogg + params: + volume: 1.7 + variation: null + rolloffFactor: 1 + referenceDistance: 1 + playOffsetSeconds: 0 + pitch: 1 + maxDistance: 250 + loop: False pulseVariation: 0 pulseStabilityVariation: 0,0 - supercriticalSound: !type:SoundPathSpecifier - params: - variation: null - playOffsetSeconds: 0 - loop: False - referenceDistance: 1 - rolloffFactor: 1 - maxDistance: 250 - pitch: 1 - volume: 1.7 - path: /Audio/Ambience/ambiruin3.ogg - supercriticalSoundAtAnimationStart: !type:SoundPathSpecifier - params: - variation: null - playOffsetSeconds: 0 - loop: False - referenceDistance: 1 - rolloffFactor: 1 - maxDistance: 15 - pitch: 1 - volume: 2 - path: /Audio/Ambience/ambiruin2.ogg + minPulseLength: 1500 minPointsPerSecond: 40 + maxPulseLength: 1800 maxPointsPerSecond: 170 + healthChangePerSecond: 0 growingPointMultiplier: 0 + offset: 0,0.05 corePrototype: AnomalyBluespace coreInertPrototype: MobAbomination animationTime: 7 - offset: 0,0.05 - type: AmbientSound volume: 0 - range: 10 sound: !type:SoundPathSpecifier - params: - variation: null - playOffsetSeconds: 0 - loop: False - referenceDistance: 1 - rolloffFactor: 1 - maxDistance: 10 - pitch: 1 - volume: 0 path: /Audio/Ambience/ambiruin5.ogg + params: + volume: 0 + variation: null + rolloffFactor: 1 + referenceDistance: 1 + playOffsetSeconds: 0 + pitch: 1 + maxDistance: 10 + loop: False + range: 10 - type: RadiationSource slope: 0.7 intensity: 4.5 @@ -1940,97 +1921,65 @@ entities: - uid: 12 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: -7.5,-5.5 - parent: 1 - proto: APCHighCapacity entities: - uid: 13 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: -0.5,-9.5 - parent: 1 -- proto: BaseChemistryEmptyVial - entities: - - uid: 15 - mapInit: true - paused: true - components: - - type: MetaData - name: vial (frezon coolant) - - type: Transform - parent: 14 - - type: Tag - tags: - - CentrifugeCompatible - - type: SolutionContainerManager - solutions: null - containers: - - beaker - - type: MeleeWeapon - nextAttack: -32.1421018 - - type: EmitSoundOnCollide - nextSound: -1171.0409639 - - type: Physics - canCollide: False - - type: ContainerContainer - containers: - solution@beaker: !type:ContainerSlot - ent: 476 - - type: Label - currentLabel: frezon coolant - - type: NameModifier - baseName: vial - - type: InsideEntityStorage - proto: BaseComputer entities: - uid: 19 components: - type: MetaData - desc: The monitor is displaying readings from an array of sensors. They're all flashing red. name: telescience computer + desc: The monitor is displaying readings from an array of sensors. They're all flashing red. - type: Transform - pos: 0.5,-5.5 parent: 1 + pos: 0.5,-5.5 - proto: BlastDoor entities: - uid: 20 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: -3.5,2.5 - parent: 1 - uid: 21 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: -2.5,2.5 - parent: 1 - uid: 22 components: - type: Transform - pos: 10.5,-7.5 parent: 1 + pos: 10.5,-7.5 - uid: 23 components: - type: Transform - pos: 10.5,-8.5 parent: 1 + pos: 10.5,-8.5 - proto: BlastDoorFrame entities: - uid: 24 components: - type: Transform - anchored: True - pos: -5.5,-8.5 parent: 1 + pos: -5.5,-8.5 + anchored: True - uid: 25 components: - type: Transform - anchored: True - pos: -5.5,-7.5 parent: 1 + pos: -5.5,-7.5 + anchored: True - proto: BlueprintFulton entities: - uid: 382 @@ -2038,740 +1987,740 @@ entities: - type: MetaData name: blueprint - type: Transform - pos: 1.579378,-6.642523 parent: 1 + pos: 1.579378,-6.642523 - proto: BluespaceBeaker entities: - uid: 471 components: - type: Transform + parent: 1 rot: -2.9363906402140856 rad pos: -7.928747,0.6358436 - parent: 1 - proto: ButtonFrameCaution entities: - uid: 26 components: - type: Transform - pos: 1.5,-5.25 parent: 1 + pos: 1.5,-5.25 - proto: ButtonFrameCautionSecurity entities: - uid: 27 components: - type: Transform + parent: 1 rot: -1.5707963267948966 rad pos: -5.5,-2.5 - parent: 1 - proto: CableApcExtension entities: - uid: 28 components: - type: Transform - pos: 5.5,-7.5 parent: 1 + pos: 5.5,-7.5 - uid: 29 components: - type: Transform - pos: -7.5,-5.5 parent: 1 + pos: -7.5,-5.5 - uid: 30 components: - type: Transform - pos: -7.5,-4.5 parent: 1 + pos: -7.5,-4.5 - uid: 31 components: - type: Transform - pos: -6.5,-4.5 parent: 1 + pos: -6.5,-4.5 - uid: 32 components: - type: Transform - pos: -6.5,-3.5 parent: 1 + pos: -6.5,-3.5 - uid: 33 components: - type: Transform - pos: -0.5,-9.5 parent: 1 + pos: -0.5,-9.5 - uid: 34 components: - type: Transform - pos: -0.5,-8.5 parent: 1 + pos: -0.5,-8.5 - uid: 35 components: - type: Transform - pos: -0.5,-7.5 parent: 1 + pos: -0.5,-7.5 - uid: 36 components: - type: Transform - pos: 0.5,-7.5 parent: 1 + pos: 0.5,-7.5 - uid: 37 components: - type: Transform - pos: 1.5,-7.5 parent: 1 + pos: 1.5,-7.5 - uid: 38 components: - type: Transform - pos: 2.5,-7.5 parent: 1 + pos: 2.5,-7.5 - uid: 39 components: - type: Transform - pos: 3.5,-7.5 parent: 1 + pos: 3.5,-7.5 - uid: 40 components: - type: Transform - pos: 4.5,-7.5 parent: 1 + pos: 4.5,-7.5 - uid: 41 components: - type: Transform - pos: 4.5,-6.5 parent: 1 + pos: 4.5,-6.5 - uid: 42 components: - type: Transform - pos: 4.5,-5.5 parent: 1 + pos: 4.5,-5.5 - uid: 43 components: - type: Transform - pos: 4.5,-4.5 parent: 1 + pos: 4.5,-4.5 - uid: 44 components: - type: Transform - pos: 4.5,-3.5 parent: 1 + pos: 4.5,-3.5 - uid: 45 components: - type: Transform - pos: 4.5,-2.5 parent: 1 + pos: 4.5,-2.5 - uid: 46 components: - type: Transform - pos: 1.5,-2.5 parent: 1 + pos: 1.5,-2.5 - uid: 47 components: - type: Transform - pos: 3.5,-5.5 parent: 1 + pos: 3.5,-5.5 - uid: 48 components: - type: Transform - pos: 7.5,-7.5 parent: 1 + pos: 7.5,-7.5 - uid: 49 components: - type: Transform - pos: 6.5,-7.5 parent: 1 + pos: 6.5,-7.5 - uid: 50 components: - type: Transform - pos: -1.5,-7.5 parent: 1 + pos: -1.5,-7.5 - uid: 51 components: - type: Transform - pos: -2.5,-7.5 parent: 1 + pos: -2.5,-7.5 - uid: 52 components: - type: Transform - pos: -3.5,-7.5 parent: 1 + pos: -3.5,-7.5 - uid: 53 components: - type: Transform - pos: -4.5,-7.5 parent: 1 + pos: -4.5,-7.5 - uid: 54 components: - type: Transform - pos: 4.5,-1.5 parent: 1 + pos: 4.5,-1.5 - uid: 55 components: - type: Transform - pos: 4.5,-0.5 parent: 1 + pos: 4.5,-0.5 - uid: 56 components: - type: Transform - pos: 3.5,0.5 parent: 1 + pos: 3.5,0.5 - uid: 57 components: - type: Transform - pos: 2.5,0.5 parent: 1 + pos: 2.5,0.5 - uid: 58 components: - type: Transform - pos: 1.5,0.5 parent: 1 + pos: 1.5,0.5 - uid: 59 components: - type: Transform - pos: 0.5,0.5 parent: 1 + pos: 0.5,0.5 - uid: 60 components: - type: Transform - pos: -0.5,0.5 parent: 1 + pos: -0.5,0.5 - uid: 61 components: - type: Transform - pos: 4.5,0.5 parent: 1 + pos: 4.5,0.5 - uid: 62 components: - type: Transform - pos: -0.5,-0.5 parent: 1 + pos: -0.5,-0.5 - uid: 63 components: - type: Transform - pos: -0.5,-1.5 parent: 1 + pos: -0.5,-1.5 - uid: 64 components: - type: Transform - pos: -0.5,-2.5 parent: 1 + pos: -0.5,-2.5 - uid: 65 components: - type: Transform - pos: 1.5,-3.5 parent: 1 + pos: 1.5,-3.5 - uid: 66 components: - type: Transform - pos: 2.5,-3.5 parent: 1 + pos: 2.5,-3.5 - uid: 67 components: - type: Transform - pos: 3.5,-3.5 parent: 1 + pos: 3.5,-3.5 - uid: 68 components: - type: Transform - pos: 8.5,-7.5 parent: 1 + pos: 8.5,-7.5 - uid: 69 components: - type: Transform - pos: 9.5,-7.5 parent: 1 + pos: 9.5,-7.5 - uid: 70 components: - type: Transform - pos: 10.5,-7.5 parent: 1 + pos: 10.5,-7.5 - uid: 71 components: - type: Transform - pos: 11.5,-7.5 parent: 1 + pos: 11.5,-7.5 - uid: 72 components: - type: Transform - pos: 12.5,-7.5 parent: 1 + pos: 12.5,-7.5 - uid: 459 components: - type: Transform - pos: -6.5,-2.5 parent: 1 + pos: -6.5,-2.5 - proto: CableApcStack1 entities: - uid: 73 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: -6.777521,-2.6875072 - parent: 1 - uid: 74 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: 12.546303,-7.5623555 - parent: 1 - uid: 75 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: 12.874428,-7.2262425 - parent: 1 - proto: CableHV entities: - uid: 76 components: - type: Transform - pos: -5.5,0.5 parent: 1 + pos: -5.5,0.5 - uid: 77 components: - type: Transform - pos: -5.5,1.5 parent: 1 + pos: -5.5,1.5 - uid: 78 components: - type: Transform - pos: -7.5,1.5 parent: 1 + pos: -7.5,1.5 - uid: 79 components: - type: Transform - pos: -5.5,-0.5 parent: 1 + pos: -5.5,-0.5 - uid: 80 components: - type: Transform - pos: -5.5,-1.5 parent: 1 + pos: -5.5,-1.5 - uid: 81 components: - type: Transform - pos: -5.5,-2.5 parent: 1 + pos: -5.5,-2.5 - uid: 82 components: - type: Transform - pos: -5.5,-3.5 parent: 1 + pos: -5.5,-3.5 - uid: 83 components: - type: Transform - pos: -5.5,-4.5 parent: 1 + pos: -5.5,-4.5 - uid: 84 components: - type: Transform - pos: -6.5,-4.5 parent: 1 + pos: -6.5,-4.5 - uid: 85 components: - type: Transform - pos: -7.5,-4.5 parent: 1 + pos: -7.5,-4.5 - uid: 86 components: - type: Transform - pos: -8.5,-3.5 parent: 1 + pos: -8.5,-3.5 - uid: 87 components: - type: Transform - pos: -7.5,-3.5 parent: 1 + pos: -7.5,-3.5 - uid: 88 components: - type: Transform - pos: -8.5,-2.5 parent: 1 + pos: -8.5,-2.5 - uid: 89 components: - type: Transform - pos: -6.5,-0.5 parent: 1 + pos: -6.5,-0.5 - uid: 90 components: - type: Transform - pos: -7.5,-0.5 parent: 1 + pos: -7.5,-0.5 - uid: 463 components: - type: Transform - pos: -8.5,-0.5 parent: 1 + pos: -8.5,-0.5 - proto: CableHVStack1 entities: - uid: 91 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: -6.114647,1.358743 - parent: 1 - uid: 92 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: -5.917657,-3.1817186 - parent: 1 - uid: 93 components: - type: Transform - pos: -5.245782,-0.60224986 parent: 1 + pos: -5.245782,-0.60224986 - uid: 94 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: -7.083397,-0.34526896 - parent: 1 - uid: 95 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: -7.2162094,0.09245896 - parent: 1 - uid: 458 components: - type: Transform + parent: 1 rot: -2.9466295252230505 rad pos: -8.780957,-0.45470548 - parent: 1 - uid: 464 components: - type: Transform + parent: 1 rot: 2.9480044841766357 rad pos: -9.499638,-0.5635517 - parent: 1 - proto: CableMV entities: - uid: 96 components: - type: Transform - pos: -8.5,-2.5 parent: 1 + pos: -8.5,-2.5 - uid: 97 components: - type: Transform - pos: -7.5,-2.5 parent: 1 + pos: -7.5,-2.5 - uid: 98 components: - type: Transform - pos: -6.5,-4.5 parent: 1 + pos: -6.5,-4.5 - uid: 99 components: - type: Transform - pos: -7.5,-4.5 parent: 1 + pos: -7.5,-4.5 - uid: 100 components: - type: Transform - pos: -7.5,-1.5 parent: 1 + pos: -7.5,-1.5 - uid: 101 components: - type: Transform - pos: -7.5,-0.5 parent: 1 + pos: -7.5,-0.5 - uid: 102 components: - type: Transform - pos: -6.5,-0.5 parent: 1 + pos: -6.5,-0.5 - uid: 103 components: - type: Transform - pos: -5.5,-0.5 parent: 1 + pos: -5.5,-0.5 - uid: 104 components: - type: Transform - pos: -4.5,-0.5 parent: 1 + pos: -4.5,-0.5 - uid: 105 components: - type: Transform - pos: -3.5,-0.5 parent: 1 + pos: -3.5,-0.5 - uid: 106 components: - type: Transform - pos: -2.5,-0.5 parent: 1 + pos: -2.5,-0.5 - uid: 107 components: - type: Transform - pos: -1.5,-0.5 parent: 1 + pos: -1.5,-0.5 - uid: 108 components: - type: Transform - pos: -0.5,-0.5 parent: 1 + pos: -0.5,-0.5 - uid: 109 components: - type: Transform - pos: 0.5,-0.5 parent: 1 + pos: 0.5,-0.5 - uid: 110 components: - type: Transform - pos: -2.5,-1.5 parent: 1 + pos: -2.5,-1.5 - uid: 111 components: - type: Transform - pos: -2.5,-2.5 parent: 1 + pos: -2.5,-2.5 - uid: 112 components: - type: Transform - pos: -1.5,-2.5 parent: 1 + pos: -1.5,-2.5 - uid: 113 components: - type: Transform - pos: -0.5,-2.5 parent: 1 + pos: -0.5,-2.5 - uid: 114 components: - type: Transform - pos: 1.5,-2.5 parent: 1 + pos: 1.5,-2.5 - uid: 115 components: - type: Transform - pos: -7.5,-5.5 parent: 1 + pos: -7.5,-5.5 - uid: 116 components: - type: Transform - pos: 2.5,-1.5 parent: 1 + pos: 2.5,-1.5 - uid: 117 components: - type: Transform - pos: 1.5,-0.5 parent: 1 + pos: 1.5,-0.5 - uid: 118 components: - type: Transform - pos: 2.5,-0.5 parent: 1 + pos: 2.5,-0.5 - uid: 119 components: - type: Transform - pos: 4.5,-0.5 parent: 1 + pos: 4.5,-0.5 - uid: 120 components: - type: Transform - pos: 5.5,-0.5 parent: 1 + pos: 5.5,-0.5 - uid: 121 components: - type: Transform - pos: 5.5,-1.5 parent: 1 + pos: 5.5,-1.5 - uid: 122 components: - type: Transform - pos: 5.5,-2.5 parent: 1 + pos: 5.5,-2.5 - uid: 123 components: - type: Transform - pos: 4.5,-2.5 parent: 1 + pos: 4.5,-2.5 - uid: 124 components: - type: Transform - pos: 3.5,-2.5 parent: 1 + pos: 3.5,-2.5 - uid: 125 components: - type: Transform - pos: -6.5,-3.5 parent: 1 + pos: -6.5,-3.5 - uid: 126 components: - type: Transform - pos: -5.5,-3.5 parent: 1 + pos: -5.5,-3.5 - uid: 127 components: - type: Transform - pos: -4.5,-3.5 parent: 1 + pos: -4.5,-3.5 - uid: 128 components: - type: Transform - pos: -3.5,-3.5 parent: 1 + pos: -3.5,-3.5 - uid: 129 components: - type: Transform - pos: -3.5,-4.5 parent: 1 + pos: -3.5,-4.5 - uid: 130 components: - type: Transform - pos: -3.5,-5.5 parent: 1 + pos: -3.5,-5.5 - uid: 131 components: - type: Transform - pos: -3.5,-7.5 parent: 1 + pos: -3.5,-7.5 - uid: 132 components: - type: Transform - pos: -3.5,-6.5 parent: 1 + pos: -3.5,-6.5 - uid: 133 components: - type: Transform - pos: -2.5,-7.5 parent: 1 + pos: -2.5,-7.5 - uid: 134 components: - type: Transform - pos: -1.5,-7.5 parent: 1 + pos: -1.5,-7.5 - uid: 135 components: - type: Transform - pos: -0.5,-7.5 parent: 1 + pos: -0.5,-7.5 - uid: 136 components: - type: Transform - pos: 0.5,-7.5 parent: 1 + pos: 0.5,-7.5 - uid: 137 components: - type: Transform - pos: -0.5,-8.5 parent: 1 + pos: -0.5,-8.5 - uid: 138 components: - type: Transform - pos: -0.5,-9.5 parent: 1 + pos: -0.5,-9.5 - uid: 139 components: - type: Transform - pos: 1.5,-7.5 parent: 1 + pos: 1.5,-7.5 - uid: 140 components: - type: Transform - pos: 2.5,-7.5 parent: 1 + pos: 2.5,-7.5 - uid: 141 components: - type: Transform - pos: 3.5,-7.5 parent: 1 + pos: 3.5,-7.5 - uid: 142 components: - type: Transform - pos: 4.5,-7.5 parent: 1 + pos: 4.5,-7.5 - uid: 143 components: - type: Transform - pos: 5.5,-7.5 parent: 1 + pos: 5.5,-7.5 - uid: 144 components: - type: Transform - pos: 6.5,-7.5 parent: 1 + pos: 6.5,-7.5 - uid: 145 components: - type: Transform - pos: 7.5,-7.5 parent: 1 + pos: 7.5,-7.5 - uid: 146 components: - type: Transform - pos: 7.5,-8.5 parent: 1 + pos: 7.5,-8.5 - uid: 147 components: - type: Transform - pos: 8.5,-8.5 parent: 1 + pos: 8.5,-8.5 - uid: 148 components: - type: Transform - pos: 9.5,-8.5 parent: 1 + pos: 9.5,-8.5 - uid: 149 components: - type: Transform - pos: 10.5,-8.5 parent: 1 + pos: 10.5,-8.5 - proto: CableMVStack1 entities: - uid: 150 components: - type: Transform + parent: 1 rot: -1.5707963267948966 rad pos: -8.309632,-4.3932867 - parent: 1 - uid: 151 components: - type: Transform + parent: 1 rot: -1.5707963267948966 rad pos: -7.7783823,-4.268222 - parent: 1 - uid: 152 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: 3.3402357,-0.5727961 - parent: 1 - uid: 153 components: - type: Transform + parent: 1 rot: -1.5707963267948966 rad pos: 0.029247046,-2.2611752 - parent: 1 - uid: 154 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: 0.74799705,-2.1673765 - parent: 1 - uid: 155 components: - type: Transform - pos: 2.232372,-2.2220926 parent: 1 + pos: 2.232372,-2.2220926 - proto: CableTerminal entities: - uid: 156 components: - type: Transform - pos: -5.5,-3.5 parent: 1 + pos: -5.5,-3.5 - uid: 157 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: 2.5,-1.5 - parent: 1 - proto: CargoTelepad entities: - uid: 158 components: - type: MetaData - desc: An experimental telepad, akin to cargo telepads. Something went horribly wrong with this one. name: experimental telepad + desc: An experimental telepad, akin to cargo telepads. Something went horribly wrong with this one. - type: Transform - pos: 2.5,-1.5 parent: 1 + pos: 2.5,-1.5 missingComponents: - DeviceLinkSink - CargoTelepad @@ -2782,98 +2731,98 @@ entities: - uid: 159 components: - type: Transform - pos: -2.5,-5.5 parent: 1 + pos: -2.5,-5.5 - uid: 160 components: - type: Transform - pos: -2.5,-4.5 parent: 1 + pos: -2.5,-4.5 - uid: 161 components: - type: Transform - pos: -2.5,-3.5 parent: 1 + pos: -2.5,-3.5 - uid: 162 components: - type: Transform - pos: -3.5,-4.5 parent: 1 + pos: -3.5,-4.5 - uid: 163 components: - type: Transform - pos: -3.5,-3.5 parent: 1 + pos: -3.5,-3.5 - uid: 164 components: - type: Transform - pos: -3.5,-2.5 parent: 1 + pos: -3.5,-2.5 - uid: 165 components: - type: Transform - pos: -3.5,-1.5 parent: 1 + pos: -3.5,-1.5 - uid: 166 components: - type: Transform - pos: -2.5,-1.5 parent: 1 + pos: -2.5,-1.5 - uid: 167 components: - type: Transform - pos: -3.5,0.5 parent: 1 + pos: -3.5,0.5 - uid: 168 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: -3.5,1.5 - parent: 1 - uid: 169 components: - type: Transform - pos: -2.5,1.5 parent: 1 + pos: -2.5,1.5 - uid: 170 components: - type: Transform - pos: 2.5,-8.5 parent: 1 + pos: 2.5,-8.5 - uid: 171 components: - type: Transform - pos: 3.5,-8.5 parent: 1 + pos: 3.5,-8.5 - proto: ChairOfficeDark entities: - uid: 172 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: 1.2353792,-6.0455465 - parent: 1 - proto: ClockworkGrilleBroken entities: - uid: 173 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: 3.5,1.5 - parent: 1 - uid: 174 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: 1.5,1.5 - parent: 1 - proto: ClosetRadiationSuit entities: - uid: 175 components: - type: Transform - pos: -9.5,-0.5 parent: 1 + pos: -9.5,-0.5 - proto: ClothingHandsGlovesCombat entities: - uid: 483 @@ -2883,37 +2832,38 @@ entities: - type: Physics canCollide: False - type: InsideEntityStorage + storage: 477 - proto: ClothingShoesBootsJack entities: - uid: 176 components: - type: Transform - pos: 2.4916928,-1.5949614 parent: 1 + pos: 2.4916928,-1.5949614 - proto: CrateEngineeringSecure entities: - uid: 477 components: - type: Transform - pos: -7.0570393,2.6675224 parent: 1 + pos: -7.0570393,2.6675224 - type: ContainerContainer containers: entity_storage: !type:Container - showEnts: False - occludes: True ents: - - 483 - 482 - - 481 - - 480 - - 479 - - 478 - 484 - paper_label: !type:ContainerSlot + - 478 + - 479 + - 480 + - 481 + - 483 showEnts: False occludes: True + paper_label: !type:ContainerSlot ent: null + showEnts: False + occludes: True - type: Pullable prevFixedRotation: True - proto: CrateSecure @@ -2921,21 +2871,25 @@ entities: - uid: 14 components: - type: MetaData - desc: A secure crate supposedly holding highly fragile vials of frezon. It's dented on the edges. name: secure frezon vial crate + desc: A secure crate supposedly holding highly fragile vials of frezon. It's dented on the edges. - type: Transform - pos: 7.842639,-6.7983217 parent: 1 + pos: 7.842639,-6.7983217 - type: Fixtures fixtures: fix1: shape: !type:PolygonShape - radius: 0.01 vertices: - -0.4,-0.4 - 0.4,-0.4 - 0.4,0.29 - -0.4,0.29 + radius: 0.01 + restitution: 0 + hard: True + friction: 0.4 + density: 50 mask: - Impassable - HighImpassable @@ -2943,12 +2897,6 @@ entities: layer: - BulletImpassable - Opaque - density: 50 - hard: True - restitution: 0 - friction: 0.4 - - type: PlaceableSurface - isPlaceable: True - type: Pullable prevFixedRotation: True - type: AccessReader @@ -2956,36 +2904,23 @@ entities: - - ResearchDirector - type: EntityStorage air: - volume: 200 - immutable: False temperature: 21.349998 - moles: - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 720 - - 0 - - 0 - - 0 + volume: 200 + moles: {} + immutable: False - type: ContainerContainer containers: entity_storage: !type:Container - showEnts: False - occludes: True ents: - - 15 - 18 - - 17 - 16 - paper_label: !type:ContainerSlot + - 17 showEnts: False occludes: True + paper_label: !type:ContainerSlot ent: null + showEnts: False + occludes: True - proto: DimLightBulb entities: - uid: 179 @@ -2999,281 +2934,281 @@ entities: - uid: 180 components: - type: Transform - pos: -3.5,5.5 parent: 1 + pos: -3.5,5.5 - proto: DisposalJunctionFlipped entities: - uid: 181 components: - type: Transform + parent: 1 rot: -1.5707963267948966 rad pos: 5.5,-7.5 - parent: 1 - proto: DisposalPipe entities: - uid: 182 components: - type: Transform + parent: 1 rot: -1.5707963267948966 rad pos: 6.5,-7.5 - parent: 1 - uid: 183 components: - type: Transform + parent: 1 rot: -1.5707963267948966 rad pos: 7.5,-7.5 - parent: 1 - uid: 184 components: - type: Transform + parent: 1 rot: -1.5707963267948966 rad pos: 8.5,-7.5 - parent: 1 - uid: 185 components: - type: Transform + parent: 1 rot: -1.5707963267948966 rad pos: 9.5,-7.5 - parent: 1 - uid: 186 components: - type: Transform + parent: 1 rot: -1.5707963267948966 rad pos: 10.5,-7.5 - parent: 1 - uid: 187 components: - type: Transform + parent: 1 rot: -1.5707963267948966 rad pos: 11.5,-7.5 - parent: 1 - uid: 188 components: - type: Transform + parent: 1 rot: -1.5707963267948966 rad pos: 4.5,-7.5 - parent: 1 - uid: 189 components: - type: Transform + parent: 1 rot: -1.5707963267948966 rad pos: 3.5,-7.5 - parent: 1 - uid: 190 components: - type: Transform + parent: 1 rot: -1.5707963267948966 rad pos: 2.5,-7.5 - parent: 1 - uid: 191 components: - type: Transform + parent: 1 rot: -1.5707963267948966 rad pos: 1.5,-7.5 - parent: 1 - uid: 192 components: - type: Transform + parent: 1 rot: -1.5707963267948966 rad pos: 0.5,-7.5 - parent: 1 - uid: 193 components: - type: Transform + parent: 1 rot: -1.5707963267948966 rad pos: -0.5,-7.5 - parent: 1 - uid: 194 components: - type: Transform + parent: 1 rot: -1.5707963267948966 rad pos: -1.5,-7.5 - parent: 1 - uid: 195 components: - type: Transform + parent: 1 rot: -1.5707963267948966 rad pos: -2.5,-7.5 - parent: 1 - uid: 196 components: - type: Transform - pos: -3.5,4.5 parent: 1 + pos: -3.5,4.5 - uid: 197 components: - type: Transform - pos: -3.5,3.5 parent: 1 + pos: -3.5,3.5 - uid: 198 components: - type: Transform - pos: -3.5,2.5 parent: 1 + pos: -3.5,2.5 - uid: 199 components: - type: Transform - pos: -3.5,1.5 parent: 1 + pos: -3.5,1.5 - uid: 200 components: - type: Transform - pos: -3.5,0.5 parent: 1 + pos: -3.5,0.5 - uid: 201 components: - type: Transform - pos: -3.5,-0.5 parent: 1 + pos: -3.5,-0.5 - uid: 202 components: - type: Transform - pos: -3.5,-1.5 parent: 1 + pos: -3.5,-1.5 - uid: 203 components: - type: Transform - pos: -3.5,-2.5 parent: 1 + pos: -3.5,-2.5 - uid: 204 components: - type: Transform - pos: -3.5,-3.5 parent: 1 + pos: -3.5,-3.5 - uid: 205 components: - type: Transform - pos: -3.5,-4.5 parent: 1 + pos: -3.5,-4.5 - uid: 206 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: -3.5,-5.5 - parent: 1 - uid: 207 components: - type: Transform - pos: -3.5,-6.5 parent: 1 + pos: -3.5,-6.5 - uid: 208 components: - type: Transform + parent: 1 rot: -1.5707963267948966 rad pos: -7.5,-7.5 - parent: 1 - proto: DisposalPipeBroken entities: - uid: 209 components: - type: Transform + parent: 1 rot: -1.5707963267948966 rad pos: 12.5,-7.5 - parent: 1 - uid: 210 components: - type: Transform - pos: -3.5,6.5 parent: 1 + pos: -3.5,6.5 - uid: 211 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: -4.5,-7.5 - parent: 1 - uid: 212 components: - type: Transform + parent: 1 rot: -1.5707963267948966 rad pos: -6.5,-7.5 - parent: 1 - uid: 213 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: -8.5,-7.5 - parent: 1 - proto: DisposalTrunk entities: - uid: 214 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: 5.5,-8.5 - parent: 1 - proto: DisposalUnit entities: - uid: 215 components: - type: Transform - pos: 5.5,-8.5 parent: 1 + pos: 5.5,-8.5 - proto: DisposalYJunction entities: - uid: 216 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: -3.5,-7.5 - parent: 1 - proto: DoubleEmergencyOxygenTankFilled entities: - uid: 355 components: - type: Transform + parent: 1 rot: -1.5707963267948966 rad pos: 9.016434,-3.9197845 - parent: 1 - proto: EmergencyLight entities: - uid: 217 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: 3.5,-4.5 - parent: 1 - uid: 218 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: 2.5,-8.5 - parent: 1 - uid: 219 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: 7.5,-8.5 - parent: 1 - uid: 220 components: - type: Transform + parent: 1 rot: -1.5707963267948966 rad pos: -5.5,-2.5 - parent: 1 - uid: 221 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: -3.5,1.5 - parent: 1 - proto: ExtinguisherCabinetOpen entities: - uid: 222 components: - type: Transform + parent: 1 rot: -1.5707963267948966 rad pos: 6.5,-6.5 - parent: 1 - proto: FaxMachineBase entities: - uid: 223 components: - type: MetaData - desc: Bluespace technologies on the application of bureaucracy. This one looks really old. name: old long range fax machine + desc: Bluespace technologies on the application of bureaucracy. This one looks really old. - type: Transform - pos: 4.5,-8.5 parent: 1 + pos: 4.5,-8.5 - type: FaxMachine name: Telescience Research Laboratory - type: Pullable @@ -3283,12 +3218,12 @@ entities: - uid: 224 components: - type: MetaData - desc: A fire alarm. It's busted. name: broken fire alarm + desc: A fire alarm. It's busted. - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: -1.5,-3.5 - parent: 1 missingComponents: - Construction - proto: FirelockEdge @@ -3296,32 +3231,32 @@ entities: - uid: 225 components: - type: Transform - pos: 2.5,-4.5 parent: 1 + pos: 2.5,-4.5 - type: DeviceNetwork deviceLists: - 4 - uid: 226 components: - type: Transform - pos: 1.5,-4.5 parent: 1 + pos: 1.5,-4.5 - type: DeviceNetwork deviceLists: - 4 - uid: 227 components: - type: Transform - pos: 0.5,-4.5 parent: 1 + pos: 0.5,-4.5 - type: DeviceNetwork deviceLists: - 4 - uid: 228 components: - type: Transform - pos: 3.5,-4.5 parent: 1 + pos: 3.5,-4.5 - type: DeviceNetwork deviceLists: - 4 @@ -3330,9 +3265,9 @@ entities: - uid: 229 components: - type: Transform + parent: 1 rot: -1.5707963267948966 rad pos: 4.5,-5.5 - parent: 1 - type: DeviceNetwork deviceLists: - 2 @@ -3340,18 +3275,18 @@ entities: - uid: 230 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: -1.5,-7.5 - parent: 1 - type: DeviceNetwork deviceLists: - 2 - uid: 231 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: 6.5,-7.5 - parent: 1 - type: DeviceNetwork deviceLists: - 2 @@ -3360,555 +3295,555 @@ entities: - uid: 232 components: - type: Transform + parent: 1 rot: 4.427054287049856 rad pos: -5.8714786,-9.549382 - parent: 1 - uid: 233 components: - type: Transform + parent: 1 rot: 2.229738708211938 rad pos: -6.362634,-7.4310646 - parent: 1 - uid: 234 components: - type: Transform + parent: 1 rot: 5.098679819562537 rad pos: 7.1832304,-7.5247245 - parent: 1 - uid: 235 components: - type: Transform + parent: 1 rot: 1.9395802012722982 rad pos: 8.443088,-8.874636 - parent: 1 - uid: 236 components: - type: Transform + parent: 1 rot: 5.511605602261332 rad pos: 12.312578,-7.6115174 - parent: 1 - uid: 237 components: - type: Transform + parent: 1 rot: 1.6469409036108125 rad pos: -2.8823411,-7.337399 - parent: 1 - uid: 238 components: - type: Transform + parent: 1 rot: 3.9097657833244788 rad pos: -3.4943893,-8.840513 - parent: 1 - proto: FultonBeacon entities: - uid: 474 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: 10.177677,-3.9586577 - parent: 1 - proto: GasPipeBend entities: - uid: 239 components: - type: Transform - pos: 0.5,3.5 parent: 1 + pos: 0.5,3.5 - proto: GasPipeBroken entities: - uid: 240 components: - type: Transform - pos: 4.5,3.5 parent: 1 + pos: 4.5,3.5 - uid: 241 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: -0.5,3.5 - parent: 1 - proto: GasPipeHalf entities: - uid: 242 components: - type: Transform + parent: 1 rot: -1.5707963267948966 rad pos: 8.5,-8.5 - parent: 1 - type: AtmosPipeColor color: '#990000FF' - uid: 243 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: -5.5,-7.5 - parent: 1 - type: AtmosPipeColor color: '#0055CCFF' - uid: 244 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: -6.5,-1.5 - parent: 1 - type: AtmosPipeColor color: '#0055CCFF' - uid: 245 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: -0.5,3.5 - parent: 1 - uid: 246 components: - type: Transform - pos: 4.5,3.5 parent: 1 + pos: 4.5,3.5 - proto: GasPipeStraight entities: - uid: 247 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: 2.5,-8.5 - parent: 1 - type: AtmosPipeColor color: '#990000FF' - uid: 248 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: 1.5,-8.5 - parent: 1 - type: AtmosPipeColor color: '#990000FF' - uid: 249 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: 0.5,-8.5 - parent: 1 - type: AtmosPipeColor color: '#990000FF' - uid: 250 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: -0.5,-8.5 - parent: 1 - type: AtmosPipeColor color: '#990000FF' - uid: 251 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: -1.5,-8.5 - parent: 1 - type: AtmosPipeColor color: '#990000FF' - uid: 252 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: -3.5,-8.5 - parent: 1 - type: AtmosPipeColor color: '#990000FF' - uid: 253 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: -4.5,-8.5 - parent: 1 - type: AtmosPipeColor color: '#990000FF' - uid: 254 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: -5.5,-8.5 - parent: 1 - type: AtmosPipeColor color: '#990000FF' - uid: 255 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: 0.5,-7.5 - parent: 1 - type: AtmosPipeColor color: '#0055CCFF' - uid: 256 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: -0.5,-7.5 - parent: 1 - type: AtmosPipeColor color: '#0055CCFF' - uid: 257 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: -1.5,-7.5 - parent: 1 - type: AtmosPipeColor color: '#0055CCFF' - uid: 258 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: 4.5,-8.5 - parent: 1 - type: AtmosPipeColor color: '#990000FF' - uid: 259 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: 5.5,-8.5 - parent: 1 - type: AtmosPipeColor color: '#990000FF' - uid: 260 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: 6.5,-8.5 - parent: 1 - type: AtmosPipeColor color: '#990000FF' - uid: 261 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: 7.5,-8.5 - parent: 1 - type: AtmosPipeColor color: '#990000FF' - uid: 262 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: 2.5,-7.5 - parent: 1 - type: AtmosPipeColor color: '#0055CCFF' - uid: 263 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: 3.5,-7.5 - parent: 1 - type: AtmosPipeColor color: '#0055CCFF' - uid: 264 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: 4.5,-7.5 - parent: 1 - type: AtmosPipeColor color: '#0055CCFF' - uid: 265 components: - type: Transform - pos: 3.5,-7.5 parent: 1 + pos: 3.5,-7.5 - type: AtmosPipeColor color: '#990000FF' - uid: 266 components: - type: Transform + parent: 1 rot: -1.5707963267948966 rad pos: 5.5,-7.5 - parent: 1 - type: AtmosPipeColor color: '#0055CCFF' - uid: 267 components: - type: Transform + parent: 1 rot: -1.5707963267948966 rad pos: 6.5,-7.5 - parent: 1 - type: AtmosPipeColor color: '#0055CCFF' - uid: 268 components: - type: Transform + parent: 1 rot: -1.5707963267948966 rad pos: 7.5,-7.5 - parent: 1 - type: AtmosPipeColor color: '#0055CCFF' - uid: 269 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: -2.5,-7.5 - parent: 1 - type: AtmosPipeColor color: '#0055CCFF' - uid: 270 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: -4.5,-7.5 - parent: 1 - type: AtmosPipeColor color: '#0055CCFF' - uid: 271 components: - type: Transform - pos: -3.5,-6.5 parent: 1 + pos: -3.5,-6.5 - type: AtmosPipeColor color: '#0055CCFF' - uid: 272 components: - type: Transform - pos: -3.5,-5.5 parent: 1 + pos: -3.5,-5.5 - type: AtmosPipeColor color: '#0055CCFF' - uid: 273 components: - type: Transform - pos: -3.5,-4.5 parent: 1 + pos: -3.5,-4.5 - type: AtmosPipeColor color: '#0055CCFF' - uid: 274 components: - type: Transform - pos: -3.5,-3.5 parent: 1 + pos: -3.5,-3.5 - type: AtmosPipeColor color: '#0055CCFF' - uid: 275 components: - type: Transform - pos: -3.5,-0.5 parent: 1 + pos: -3.5,-0.5 - type: AtmosPipeColor color: '#0055CCFF' - uid: 276 components: - type: Transform - pos: -3.5,0.5 parent: 1 + pos: -3.5,0.5 - type: AtmosPipeColor color: '#0055CCFF' - uid: 277 components: - type: Transform - pos: -3.5,1.5 parent: 1 + pos: -3.5,1.5 - type: AtmosPipeColor color: '#0055CCFF' - uid: 278 components: - type: Transform - pos: -3.5,2.5 parent: 1 + pos: -3.5,2.5 - type: AtmosPipeColor color: '#0055CCFF' - uid: 279 components: - type: Transform - pos: -3.5,-2.5 parent: 1 + pos: -3.5,-2.5 - type: AtmosPipeColor color: '#0055CCFF' - uid: 280 components: - type: Transform - pos: -3.5,3.5 parent: 1 + pos: -3.5,3.5 - type: AtmosPipeColor color: '#0055CCFF' - uid: 281 components: - type: Transform - pos: -2.5,-7.5 parent: 1 + pos: -2.5,-7.5 - type: AtmosPipeColor color: '#990000FF' - uid: 282 components: - type: Transform - pos: -2.5,-6.5 parent: 1 + pos: -2.5,-6.5 - type: AtmosPipeColor color: '#990000FF' - uid: 283 components: - type: Transform - pos: -2.5,-5.5 parent: 1 + pos: -2.5,-5.5 - type: AtmosPipeColor color: '#990000FF' - uid: 284 components: - type: Transform - pos: -2.5,-4.5 parent: 1 + pos: -2.5,-4.5 - type: AtmosPipeColor color: '#990000FF' - uid: 285 components: - type: Transform - pos: -2.5,-3.5 parent: 1 + pos: -2.5,-3.5 - type: AtmosPipeColor color: '#990000FF' - uid: 286 components: - type: Transform - pos: -2.5,-2.5 parent: 1 + pos: -2.5,-2.5 - type: AtmosPipeColor color: '#990000FF' - uid: 287 components: - type: Transform - pos: -2.5,-1.5 parent: 1 + pos: -2.5,-1.5 - type: AtmosPipeColor color: '#990000FF' - uid: 288 components: - type: Transform - pos: -2.5,1.5 parent: 1 + pos: -2.5,1.5 - type: AtmosPipeColor color: '#990000FF' - uid: 289 components: - type: Transform - pos: -2.5,2.5 parent: 1 + pos: -2.5,2.5 - type: AtmosPipeColor color: '#990000FF' - uid: 290 components: - type: Transform - pos: -2.5,3.5 parent: 1 + pos: -2.5,3.5 - type: AtmosPipeColor color: '#990000FF' - uid: 291 components: - type: Transform - pos: -2.5,4.5 parent: 1 + pos: -2.5,4.5 - type: AtmosPipeColor color: '#990000FF' - uid: 292 components: - type: Transform - pos: -2.5,0.5 parent: 1 + pos: -2.5,0.5 - type: AtmosPipeColor color: '#990000FF' - uid: 293 components: - type: Transform + parent: 1 rot: -1.5707963267948966 rad pos: -4.5,-1.5 - parent: 1 - type: AtmosPipeColor color: '#0055CCFF' - uid: 294 components: - type: Transform + parent: 1 rot: -1.5707963267948966 rad pos: -5.5,-1.5 - parent: 1 - type: AtmosPipeColor color: '#0055CCFF' - uid: 295 components: - type: Transform + parent: 1 rot: -1.5707963267948966 rad pos: -3.5,-0.5 - parent: 1 - type: AtmosPipeColor color: '#990000FF' - uid: 296 components: - type: Transform + parent: 1 rot: -1.5707963267948966 rad pos: -4.5,-0.5 - parent: 1 - type: AtmosPipeColor color: '#990000FF' - uid: 297 components: - type: Transform + parent: 1 rot: -1.5707963267948966 rad pos: -5.5,-0.5 - parent: 1 - type: AtmosPipeColor color: '#990000FF' - uid: 298 components: - type: Transform - pos: 4.5,2.5 parent: 1 + pos: 4.5,2.5 - uid: 299 components: - type: Transform - pos: 0.5,2.5 parent: 1 + pos: 0.5,2.5 - proto: GasPipeTJunction entities: - uid: 300 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: 1.5,-7.5 - parent: 1 - type: AtmosPipeColor color: '#0055CCFF' - uid: 301 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: 3.5,-8.5 - parent: 1 - type: AtmosPipeColor color: '#990000FF' - uid: 302 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: -2.5,-8.5 - parent: 1 - type: AtmosPipeColor color: '#990000FF' - uid: 303 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: -3.5,-7.5 - parent: 1 - type: AtmosPipeColor color: '#0055CCFF' - uid: 304 components: - type: Transform + parent: 1 rot: -1.5707963267948966 rad pos: -2.5,-0.5 - parent: 1 - type: AtmosPipeColor color: '#990000FF' - uid: 305 components: - type: Transform + parent: 1 rot: -1.5707963267948966 rad pos: -3.5,-1.5 - parent: 1 - type: AtmosPipeColor color: '#0055CCFF' - proto: GasVentPump @@ -3916,8 +3851,8 @@ entities: - uid: 306 components: - type: Transform - pos: 1.5,-6.5 parent: 1 + pos: 1.5,-6.5 - type: DeviceNetwork deviceLists: - 2 @@ -3928,8 +3863,8 @@ entities: - uid: 307 components: - type: Transform - pos: 3.5,-6.5 parent: 1 + pos: 3.5,-6.5 - type: DeviceNetwork deviceLists: - 2 @@ -3938,9 +3873,9 @@ entities: - uid: 308 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: -6.5,-0.5 - parent: 1 - type: DeviceNetwork deviceLists: - 3 @@ -3951,35 +3886,35 @@ entities: - uid: 310 components: - type: Transform - pos: -5.5,0.5 parent: 1 + pos: -5.5,0.5 - proto: GeneratorRTGDamaged entities: - uid: 311 components: - type: Transform - pos: -7.5,1.5 parent: 1 + pos: -7.5,1.5 - uid: 312 components: - type: Transform - pos: -5.5,1.5 parent: 1 + pos: -5.5,1.5 - proto: Girder entities: - uid: 314 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: -1.5,0.5 - parent: 1 - uid: 315 components: - type: Transform - anchored: False + parent: 1 rot: -0.4829698940131326 rad pos: -2.9930477,-0.07659909 - parent: 1 + anchored: False - type: Physics bodyType: Dynamic - type: Pullable @@ -3989,92 +3924,79 @@ entities: - uid: 465 components: - type: Transform - pos: -8.5,-3.5 parent: 1 + pos: -8.5,-3.5 - proto: Grille entities: - uid: 316 components: - type: Transform - pos: 3.5,-5.5 parent: 1 + pos: 3.5,-5.5 - uid: 317 components: - type: Transform - pos: 0.5,1.5 parent: 1 + pos: 0.5,1.5 - uid: 318 components: - type: Transform - pos: 4.5,1.5 parent: 1 + pos: 4.5,1.5 - proto: GrilleBroken entities: - uid: 319 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: 2.5,1.5 - parent: 1 - uid: 320 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: 3.5,1.5 - parent: 1 - uid: 321 components: - type: Transform + parent: 1 rot: -1.5707963267948966 rad pos: 1.5,1.5 - parent: 1 -- proto: HeadHuman - entities: - - uid: 456 - components: - - type: MetaData - desc: You swear that you can see it blinking when you look away. It still looks fresh no matter how much time passes. - name: severed human head - - type: Transform - rot: -1.5707963267948966 rad - pos: 2.4745088,-4.8270464 - parent: 1 - - type: StaticPrice - price: 1200 - proto: HeatExchanger entities: - uid: 322 components: - type: Transform + parent: 1 rot: -1.5707963267948966 rad pos: 3.5,1.5 - parent: 1 - uid: 323 components: - type: Transform + parent: 1 rot: -1.5707963267948966 rad pos: 2.5,1.5 - parent: 1 - uid: 324 components: - type: Transform + parent: 1 rot: -1.5707963267948966 rad pos: 1.5,1.5 - parent: 1 - proto: HeatExchangerBend entities: - uid: 325 components: - type: Transform + parent: 1 rot: -1.5707963267948966 rad pos: 4.5,1.5 - parent: 1 - uid: 326 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: 0.5,1.5 - parent: 1 - proto: HellfireFreezerMachineCircuitBoard entities: - uid: 462 @@ -4092,6 +4014,7 @@ entities: - type: Physics canCollide: False - type: InsideEntityStorage + storage: 477 - uid: 484 components: - type: Transform @@ -4099,6 +4022,7 @@ entities: - type: Physics canCollide: False - type: InsideEntityStorage + storage: 477 - proto: IngotSilver entities: - uid: 481 @@ -4108,63 +4032,53 @@ entities: - type: Physics canCollide: False - type: InsideEntityStorage + storage: 477 - proto: IntercomAll entities: - uid: 469 components: - type: MetaData - desc: An intercom for emergency situations. It's in pristine condition. name: emergency intercom + desc: An intercom for emergency situations. It's in pristine condition. - type: Transform - anchored: False + parent: 1 rot: 3.141592653589793 rad pos: 0.125,-9.5 - parent: 1 -- proto: LeftArmHuman - entities: - - uid: 327 - components: - - type: MetaData - desc: There's a faint amount of blood flowing through it with no apparent source. Holy shit. - name: severed human arm - - type: Transform - rot: -1.5707963267948966 rad - pos: 3.4338455,-3.8538203 - parent: 1 + anchored: False - proto: LightTubeBroken entities: - uid: 328 components: - type: Transform + parent: 1 rot: -1.416310431090404 rad pos: 0.57831144,-2.58745 - parent: 1 - proto: MachineFrame entities: - uid: 329 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: 3.5,-8.5 - parent: 1 - type: ContainerContainer containers: machine_board: !type:Container - showEnts: False - occludes: True ents: - 330 - machine_parts: !type:Container showEnts: False occludes: True + machine_parts: !type:Container ents: [] + showEnts: False + occludes: True - uid: 461 components: - type: Transform - anchored: False + parent: 1 rot: -2.8760533769938608 rad pos: 8.73963,-1.5786963 - parent: 1 + anchored: False - type: Physics bodyType: Dynamic - type: Pullable @@ -4172,33 +4086,57 @@ entities: - type: ContainerContainer containers: machine_board: !type:Container - showEnts: False - occludes: True ents: - 462 - machine_parts: !type:Container showEnts: False occludes: True + machine_parts: !type:Container ents: [] + showEnts: False + occludes: True - proto: MagazinePistolIncendiary entities: - uid: 331 components: - type: Transform - pos: 5.019086,-7.5772476 parent: 1 + pos: 5.019086,-7.5772476 - proto: NTFlag entities: - uid: 309 components: - type: Transform + parent: 1 rot: 0.13962634015954636 rad pos: 3.5,-9.5 - parent: 1 - type: Physics fixedRotation: False missingComponents: - Rotatable +- proto: OrganHumanArmLeft + entities: + - uid: 327 + components: + - type: MetaData + name: severed human arm + desc: There's a faint amount of blood flowing through it with no apparent source. Holy shit. + - type: Transform + parent: 1 + rot: -1.5707963267948966 rad + pos: 3.4338455,-3.8538203 +- proto: OrganHumanHead + entities: + - uid: 456 + components: + - type: MetaData + name: severed human head + desc: You swear that you can see it blinking when you look away. It still looks fresh no matter how much time passes. + - type: Transform + parent: 1 + rot: -1.5707963267948966 rad + pos: 2.4745088,-4.8270464 + - type: StaticPrice + price: 1200 - proto: OrganHumanHeart entities: - uid: 353 @@ -4206,17 +4144,17 @@ entities: - type: MetaData desc: It's still beating, with blood flowing out of it. - type: Transform + parent: 1 rot: -1.9273808757450919 rad pos: -2.6602058,0.56129754 - parent: 1 - proto: Paper entities: - uid: 332 components: - type: Transform + parent: 1 rot: -0.20943951023931956 rad pos: 2.037424,-5.5461926 - parent: 1 - type: Paper content: Why did they turn it on? - proto: PaperBin5 @@ -4224,90 +4162,90 @@ entities: - uid: 333 components: - type: Transform - pos: 2.6850836,-5.5076914 parent: 1 + pos: 2.6850836,-5.5076914 - proto: PartRodMetal1 entities: - uid: 334 components: - type: Transform + parent: 1 rot: 3.5735224829460006 rad pos: 2.8325648,-2.6332126 - parent: 1 - uid: 335 components: - type: Transform + parent: 1 rot: 5.415333711435719 rad pos: 4.5388713,-2.242306 - parent: 1 - uid: 336 components: - type: Transform + parent: 1 rot: 1.072605518318313 rad pos: 3.2665815,-1.8669751 - parent: 1 - uid: 337 components: - type: Transform + parent: 1 rot: 0.0825442216232209 rad pos: 1.3239778,-1.7438174 - parent: 1 - uid: 338 components: - type: Transform + parent: 1 rot: 3.317215669866568 rad pos: 1.8479091,-2.4235706 - parent: 1 - uid: 339 components: - type: Transform + parent: 1 rot: 2.623097249808306 rad pos: 0.4738374,-6.1469135 - parent: 1 - uid: 340 components: - type: Transform + parent: 1 rot: 2.8105587448093674 rad pos: 3.7485664,-0.12830475 - parent: 1 - uid: 341 components: - type: Transform + parent: 1 rot: 0.24859504401683807 rad pos: -2.495243,1.0401144 - parent: 1 - uid: 342 components: - type: Transform + parent: 1 rot: -0.90249103307724 rad pos: -2.3941262,1.0222735 - parent: 1 - uid: 343 components: - type: Transform + parent: 1 rot: -1.5707963267948966 rad pos: -2.6789339,-2.7247334 - parent: 1 - uid: 344 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: -3.6711214,-5.3432846 - parent: 1 - proto: PenCentcom entities: - uid: 177 components: - type: Transform - pos: 1.7905452,-5.500127 parent: 1 + pos: 1.7905452,-5.500127 - proto: PhoneInstrument entities: - uid: 468 components: - type: Transform - pos: 2.330452,-5.4928937 parent: 1 + pos: 2.330452,-5.4928937 - proto: PlasmaChemistryVial entities: - uid: 479 @@ -4317,34 +4255,35 @@ entities: - type: Physics canCollide: False - type: InsideEntityStorage + storage: 477 - proto: PlasmaReinforcedWindowDirectional entities: - uid: 345 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: 1.5,-5.5 - parent: 1 - uid: 346 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: 2.5,-5.5 - parent: 1 - uid: 347 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: 0.5,-5.5 - parent: 1 - proto: PosterBroken entities: - uid: 466 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: 6.482854,-4.201713 - parent: 1 - proto: PosterLegit50thAnniversaryVintageReprint entities: - uid: 350 @@ -4352,55 +4291,55 @@ entities: - type: MetaData desc: A poster advertising the 50th anniversary of this research facility - the year on this poster is 22 years ahead of now. - type: Transform - pos: 2.5,-9.5 parent: 1 + pos: 2.5,-9.5 - proto: PosterLegitHelpOthers entities: - uid: 349 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: 1.3414617,-9.541878 - parent: 1 - proto: PosterLegitJustAWeekAway entities: - uid: 354 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: 1.769932,-9.483023 - parent: 1 - proto: PosterLegitSafetyEyeProtection entities: - uid: 352 components: - type: Transform + parent: 1 rot: -1.5707963267948966 rad pos: 6.431637,-3.7712698 - parent: 1 - proto: PosterLegitSafetyInternals entities: - uid: 351 components: - type: Transform + parent: 1 rot: -1.5707963267948966 rad pos: 6.5175743,-3.3569915 - parent: 1 - proto: PosterLegitScience entities: - uid: 348 components: - type: Transform + parent: 1 rot: -1.5707963267948966 rad pos: -4.598712,-4.6862397 - parent: 1 - proto: PottedPlantBioluminscent entities: - uid: 356 components: - type: Transform - pos: -0.45099998,-6.104999 parent: 1 + pos: -0.45099998,-6.104999 - type: Pullable prevFixedRotation: True - proto: PoweredlightCyan @@ -4408,58 +4347,58 @@ entities: - uid: 357 components: - type: Transform + parent: 1 rot: -1.5707963267948966 rad pos: 5.5,-1.5 - parent: 1 - proto: PoweredlightEmpty entities: - uid: 358 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: -0.5,-1.5 - parent: 1 - uid: 359 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: 1.5,-8.5 - parent: 1 - proto: PoweredSmallLightEmpty entities: - uid: 486 components: - type: Transform + parent: 1 rot: -1.5707963267948966 rad pos: -2.5,-1.5 - parent: 1 - proto: PoweredStrobeLightEmpty entities: - uid: 178 components: - type: Transform - pos: 3.5,-6.5 parent: 1 + pos: 3.5,-6.5 - type: AmbientSound volume: -12 - range: 6 sound: !type:SoundPathSpecifier - params: - variation: null - playOffsetSeconds: 0 - loop: False - referenceDistance: 1 - rolloffFactor: 1 - maxDistance: 15 - pitch: 1 - volume: 0 path: /Audio/Misc/adminlarm.ogg + params: + volume: 0 + variation: null + rolloffFactor: 1 + referenceDistance: 1 + playOffsetSeconds: 0 + pitch: 1 + maxDistance: 15 + loop: False + range: 6 - type: ContainerContainer containers: light_bulb: !type:ContainerSlot + ent: 179 showEnts: False occludes: True - ent: 179 - type: PoweredLight on: True - type: ApcPowerReceiver @@ -4471,137 +4410,137 @@ entities: - uid: 360 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: -6.5,-4.5 - parent: 1 - uid: 361 components: - type: Transform + parent: 1 rot: -1.5707963267948966 rad pos: -5.5,0.5 - parent: 1 - uid: 487 components: - type: Transform + parent: 1 rot: -1.5707963267948966 rad pos: -2.5,-5.5 - parent: 1 - proto: Railing entities: - uid: 362 components: - type: Transform - pos: 2.5,-4.5 parent: 1 + pos: 2.5,-4.5 - uid: 363 components: - type: Transform - pos: 0.5,-4.5 parent: 1 + pos: 0.5,-4.5 - uid: 364 components: - type: Transform - pos: 1.5,-4.5 parent: 1 + pos: 1.5,-4.5 - uid: 365 components: - type: Transform - pos: 3.5,-4.5 parent: 1 + pos: 3.5,-4.5 - proto: RailingCorner entities: - uid: 366 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: 2.5,-8.5 - parent: 1 - uid: 367 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: 3.5,-8.5 - parent: 1 - proto: RailingCornerSmall entities: - uid: 368 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: -0.5,-4.5 - parent: 1 - proto: RandomCommandCorpseSpawner entities: - uid: 369 components: - type: Transform - pos: 9.5,-3.5 parent: 1 + pos: 9.5,-3.5 - proto: RandomEngineerCorpseSpawner entities: - uid: 370 components: - type: Transform - pos: -6.5,-7.5 parent: 1 + pos: -6.5,-7.5 - uid: 371 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: -6.5,-2.5 - parent: 1 - proto: RandomScienceCorpseSpawner entities: - uid: 372 components: - type: Transform - pos: 1.5,-6.5 parent: 1 + pos: 1.5,-6.5 - proto: RandomSecurityCorpseSpawner entities: - uid: 373 components: - type: Transform - pos: 4.5,-7.5 parent: 1 + pos: 4.5,-7.5 - proto: ReinforcedGirder entities: - uid: 374 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: -1.5,-2.5 - parent: 1 - uid: 375 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: -4.5,-3.5 - parent: 1 - uid: 376 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: -7.5,-6.5 - parent: 1 - uid: 377 components: - type: Transform - pos: -1.5,-8.5 parent: 1 + pos: -1.5,-8.5 - uid: 378 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: -4.5,2.5 - parent: 1 - proto: ReinforcedPlasmaWindow entities: - uid: 379 components: - type: Transform - pos: 3.5,-5.5 parent: 1 + pos: 3.5,-5.5 - proto: ResearchAndDevelopmentServerMachineCircuitboard entities: - uid: 330 @@ -4615,70 +4554,70 @@ entities: - uid: 457 components: - type: Transform - pos: -7.5,-4.5 parent: 1 + pos: -7.5,-4.5 - proto: SalvageLootSpawner entities: - uid: 380 components: - type: Transform - pos: -7.5,-7.5 parent: 1 + pos: -7.5,-7.5 - proto: SalvageMaterialCrateSpawner entities: - uid: 381 components: - type: Transform - pos: -5.5,2.5 parent: 1 + pos: -5.5,2.5 - uid: 473 components: - type: Transform - pos: -8.5,-4.5 parent: 1 + pos: -8.5,-4.5 - proto: SalvageSpawnerTreasureValuable entities: - uid: 475 components: - type: Transform - pos: 11.5,-8.5 parent: 1 + pos: 11.5,-8.5 - uid: 485 components: - type: Transform - pos: -3.5,6.5 parent: 1 + pos: -3.5,6.5 - proto: ScrapFireExtinguisher entities: - uid: 470 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: 4.492197,-6.3380527 - parent: 1 - proto: ScrapFirelock3 entities: - uid: 384 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: 4.3577194,-6.0863066 - parent: 1 - proto: ScrapGeneratorUraniumLeaking entities: - uid: 383 components: - type: Transform - pos: -5.5,-3.5 parent: 1 + pos: -5.5,-3.5 - proto: ScrapSteel entities: - uid: 385 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: -6.479542,-1.5957811 - parent: 1 - proto: ShardGlass entities: - uid: 16 @@ -4688,6 +4627,7 @@ entities: - type: Physics canCollide: False - type: InsideEntityStorage + storage: 14 - uid: 17 components: - type: Transform @@ -4695,6 +4635,7 @@ entities: - type: Physics canCollide: False - type: InsideEntityStorage + storage: 14 - uid: 18 components: - type: Transform @@ -4702,24 +4643,25 @@ entities: - type: Physics canCollide: False - type: InsideEntityStorage + storage: 14 - uid: 386 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: -0.53894794,-1.957128 - parent: 1 - uid: 387 components: - type: Transform + parent: 1 rot: -1.5707963267948966 rad pos: -0.09363544,-1.148113 - parent: 1 - uid: 388 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: -7.4977655,-7.5847235 - parent: 1 - proto: SheetPlasma10 entities: - uid: 480 @@ -4729,6 +4671,7 @@ entities: - type: Physics canCollide: False - type: InsideEntityStorage + storage: 477 - uid: 482 components: - type: Transform @@ -4736,24 +4679,25 @@ entities: - type: Physics canCollide: False - type: InsideEntityStorage + storage: 477 - proto: SignalButtonDirectional entities: - uid: 389 components: - type: Transform - pos: 1.5,-5.25 parent: 1 + pos: 1.5,-5.25 - proto: SignalSwitchDirectional entities: - uid: 390 components: - type: MetaData - desc: It's a switch for toggling power to the telepad. It's popping out of it's frame. name: telepad power switch + desc: It's a switch for toggling power to the telepad. It's popping out of it's frame. - type: Transform + parent: 1 rot: -1.5707963267948966 rad pos: -5.5,-2.5 - parent: 1 - type: SignalSwitch state: True - type: DeviceLinkSource @@ -4768,41 +4712,41 @@ entities: - uid: 313 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: 5.5,-5.5 - parent: 1 - uid: 391 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: -4.5,0.35 - parent: 1 - proto: SignScience entities: - uid: 467 components: - type: Transform - pos: -1.5797484,-9.469645 parent: 1 + pos: -1.5797484,-9.469645 - proto: SignSecureSmallRed entities: - uid: 392 components: - type: Transform - pos: -1.5,-6.75 parent: 1 + pos: -1.5,-6.75 - uid: 393 components: - type: Transform - pos: 6.5,-8.25 parent: 1 + pos: 6.5,-8.25 - proto: SMESBasic entities: - uid: 394 components: - type: Transform - pos: -5.5,-4.5 parent: 1 + pos: -5.5,-4.5 - proto: SubstationBasic entities: - uid: 395 @@ -4810,34 +4754,34 @@ entities: - type: MetaData name: main substation - type: Transform - pos: -6.5,-4.5 parent: 1 + pos: -6.5,-4.5 - uid: 396 components: - type: MetaData - desc: Increases the voltage of electricity put into it. The chassis looks severely dented. This one doesn't look very safe... name: teleportation room substation + desc: Increases the voltage of electricity put into it. The chassis looks severely dented. This one doesn't look very safe... - type: Transform - pos: -8.5,-2.5 parent: 1 + pos: -8.5,-2.5 - type: Explosive intensitySlope: 1.5 - type: Electrified - highVoltageDamageMultiplier: 8 - highVoltageTimeMultiplier: 3 - shockDamage: 12 - shockNoises: !type:SoundPathSpecifier - params: - variation: null - playOffsetSeconds: 0 - loop: False - referenceDistance: 1 - rolloffFactor: 1 - maxDistance: 15 - pitch: 1 - volume: 0 - path: /Audio/Effects/tesla_consume.ogg shockVolume: 25 + shockNoises: !type:SoundPathSpecifier + path: /Audio/Effects/tesla_consume.ogg + params: + volume: 0 + variation: null + rolloffFactor: 1 + referenceDistance: 1 + playOffsetSeconds: 0 + pitch: 1 + maxDistance: 15 + loop: False + shockDamage: 12 + highVoltageTimeMultiplier: 3 + highVoltageDamageMultiplier: 8 - type: AmbientSound range: 6 - proto: SurveillanceCameraAssembly @@ -4845,63 +4789,63 @@ entities: - uid: 397 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: 5.5,-0.5 - parent: 1 - uid: 398 components: - type: Transform - pos: 0.5,-8.5 parent: 1 + pos: 0.5,-8.5 - uid: 399 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: -5.5,-2.5 - parent: 1 - uid: 400 components: - type: Transform + parent: 1 rot: -1.5707963267948966 rad pos: -3.5,-4.5 - parent: 1 - proto: SyringeBluespace entities: - uid: 472 components: - type: Transform + parent: 1 rot: -2.750853778794408 rad pos: -7.858965,-0.85789263 - parent: 1 - proto: TableReinforced entities: - uid: 401 components: - type: Transform - pos: 2.5,-5.5 parent: 1 + pos: 2.5,-5.5 - uid: 402 components: - type: Transform - pos: 1.5,-5.5 parent: 1 + pos: 1.5,-5.5 - uid: 403 components: - type: Transform - pos: -5.5,-2.5 parent: 1 + pos: -5.5,-2.5 - uid: 404 components: - type: Transform - pos: 4.5,-8.5 parent: 1 + pos: 4.5,-8.5 - proto: TelecomServer entities: - uid: 405 components: - type: Transform - pos: 2.5,-8.5 parent: 1 + pos: 2.5,-8.5 - type: AmbientSound volume: -15 - proto: ToolboxEmergency @@ -4909,282 +4853,282 @@ entities: - uid: 406 components: - type: Transform + parent: 1 rot: -0.4363323129985824 rad pos: -7.315751,-2.832624 - parent: 1 - proto: WallReinforced entities: - uid: 407 components: - type: Transform - pos: -0.5,-5.5 parent: 1 + pos: -0.5,-5.5 - uid: 408 components: - type: Transform - pos: -1.5,-5.5 parent: 1 + pos: -1.5,-5.5 - uid: 409 components: - type: Transform - pos: -1.5,-4.5 parent: 1 + pos: -1.5,-4.5 - uid: 410 components: - type: Transform - pos: -1.5,-3.5 parent: 1 + pos: -1.5,-3.5 - uid: 411 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: -4.5,-5.5 - parent: 1 - uid: 412 components: - type: Transform - pos: -1.5,-1.5 parent: 1 + pos: -1.5,-1.5 - uid: 413 components: - type: Transform - pos: -1.5,1.5 parent: 1 + pos: -1.5,1.5 - uid: 414 components: - type: Transform - pos: -0.5,1.5 parent: 1 + pos: -0.5,1.5 - uid: 415 components: - type: Transform - pos: 5.5,1.5 parent: 1 + pos: 5.5,1.5 - uid: 416 components: - type: Transform - pos: 6.5,1.5 parent: 1 + pos: 6.5,1.5 - uid: 417 components: - type: Transform - pos: 6.5,0.5 parent: 1 + pos: 6.5,0.5 - uid: 418 components: - type: Transform - pos: 6.5,-0.5 parent: 1 + pos: 6.5,-0.5 - uid: 419 components: - type: Transform - pos: 6.5,-1.5 parent: 1 + pos: 6.5,-1.5 - uid: 420 components: - type: Transform - pos: 6.5,-2.5 parent: 1 + pos: 6.5,-2.5 - uid: 421 components: - type: Transform - pos: 6.5,-3.5 parent: 1 + pos: 6.5,-3.5 - uid: 422 components: - type: Transform - pos: 6.5,-4.5 parent: 1 + pos: 6.5,-4.5 - uid: 423 components: - type: Transform - pos: 6.5,-5.5 parent: 1 + pos: 6.5,-5.5 - uid: 424 components: - type: Transform - pos: 5.5,-5.5 parent: 1 + pos: 5.5,-5.5 - uid: 425 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: -1.5,-6.5 - parent: 1 - uid: 426 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: -1.5,-9.5 - parent: 1 - uid: 427 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: -0.5,-9.5 - parent: 1 - uid: 428 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: 0.5,-9.5 - parent: 1 - uid: 429 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: 1.5,-9.5 - parent: 1 - uid: 430 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: 2.5,-9.5 - parent: 1 - uid: 431 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: 5.5,-9.5 - parent: 1 - uid: 432 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: 4.5,-9.5 - parent: 1 - uid: 433 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: 3.5,-9.5 - parent: 1 - uid: 434 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: 6.5,-9.5 - parent: 1 - uid: 435 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: -1.5,2.5 - parent: 1 - uid: 436 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: -0.5,2.5 - parent: 1 - uid: 437 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: 2.5,2.5 - parent: 1 - uid: 438 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: 3.5,2.5 - parent: 1 - uid: 439 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: 4.5,2.5 - parent: 1 - uid: 440 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: 6.5,2.5 - parent: 1 - uid: 441 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: -4.5,-4.5 - parent: 1 - uid: 442 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: -4.5,-2.5 - parent: 1 - uid: 443 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: -4.5,0.5 - parent: 1 - uid: 444 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: -4.5,1.5 - parent: 1 - uid: 445 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: -5.5,-5.5 - parent: 1 - uid: 446 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: -6.5,-5.5 - parent: 1 - uid: 447 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: -7.5,-5.5 - parent: 1 - uid: 448 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: 6.5,-6.5 - parent: 1 - uid: 449 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: 6.5,-8.5 - parent: 1 - uid: 450 components: - type: Transform - pos: 5.5,2.5 parent: 1 + pos: 5.5,2.5 - uid: 451 components: - type: Transform - pos: 1.5,2.5 parent: 1 + pos: 1.5,2.5 - uid: 452 components: - type: Transform - pos: 0.5,2.5 parent: 1 + pos: 0.5,2.5 - proto: WeaponTurretHostile entities: - uid: 453 components: - type: Transform + parent: 1 rot: 3.141592653589793 rad pos: -3.5,-9.5 - parent: 1 - proto: WeldingFuelTankHighCapacity entities: - uid: 454 components: - type: Transform - pos: -8.9164915,2.2247021 parent: 1 + pos: -8.9164915,2.2247021 - type: Pullable prevFixedRotation: True - proto: WindowReinforcedDirectional @@ -5192,18 +5136,18 @@ entities: - uid: 455 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: 5.5,-1.5 - parent: 1 - proto: ZiptiesBroken entities: - uid: 460 components: - type: MetaData - desc: They smell like burning plastic, yet are cold to the touch. name: twisted zipties + desc: They smell like burning plastic, yet are cold to the touch. - type: Transform + parent: 1 rot: -1.5707963267948966 rad pos: 3.358805,-3.7183802 - parent: 1 ... diff --git a/Resources/Maps/Salvage/meatball.yml b/Resources/Maps/Salvage/meatball.yml index 41cc1d178a..2d434d62e7 100644 --- a/Resources/Maps/Salvage/meatball.yml +++ b/Resources/Maps/Salvage/meatball.yml @@ -1,10 +1,10 @@ meta: format: 7 category: Grid - engineVersion: 267.2.0 + engineVersion: 282.0.0 forkId: "" forkVersion: "" - time: 10/15/2025 02:40:28 + time: 07/17/2026 15:37:47 entityCount: 237 maps: [] grids: @@ -26,8 +26,8 @@ entities: - type: MetaData name: meatball - type: Transform - pos: -0.4765625,-0.4296875 parent: invalid + pos: -0.4765625,-0.4296875 - type: MapGrid chunks: 0,0: @@ -48,9 +48,9 @@ entities: version: 7 - type: Broadphase - type: Physics - bodyStatus: InAir fixedRotation: False bodyType: Dynamic + bodyStatus: InAir - type: Fixtures fixtures: {} - type: OccluderTree @@ -72,145 +72,146 @@ entities: chunkSize: 4 - type: GasTileOverlay - type: RadiationGridResistance + - type: TileHistory + chunkHistory: {} + - type: ExplosionAirtightGrid - proto: AirlockFreezerLocked entities: - uid: 14 components: - type: Transform - pos: 2.5,0.5 parent: 1 + pos: 2.5,0.5 - proto: AnomalyFlesh entities: - uid: 3 components: - type: Transform - pos: 0.5,0.5 parent: 1 + pos: 0.5,0.5 - proto: ChairMeat entities: - uid: 162 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: 2.578125,3.640625 - parent: 1 - proto: ChairWood entities: - uid: 163 components: - type: Transform + parent: 1 rot: -1.5707963267948966 rad pos: 4.3125,3.53125 - parent: 1 - proto: CrateFreezer entities: - uid: 119 components: - type: Transform - pos: -0.5,1.5 parent: 1 + pos: -0.5,1.5 - proto: ExplosivesSignMed entities: - uid: 217 components: - type: Transform - pos: -3.5,-5.5 parent: 1 - - type: Fixtures - fixtures: {} + pos: -3.5,-5.5 - proto: FleshBlocker entities: - uid: 90 components: - type: Transform - pos: 0.5,-3.5 parent: 1 + pos: 0.5,-3.5 - uid: 100 components: - type: Transform - pos: 1.5,-3.5 parent: 1 + pos: 1.5,-3.5 - uid: 101 components: - type: Transform - pos: -2.5,3.5 parent: 1 + pos: -2.5,3.5 - uid: 102 components: - type: Transform - pos: -5.5,-0.5 parent: 1 + pos: -5.5,-0.5 - uid: 104 components: - type: Transform - pos: -2.5,-1.5 parent: 1 + pos: -2.5,-1.5 - uid: 106 components: - type: Transform - pos: 5.5,4.5 parent: 1 + pos: 5.5,4.5 - uid: 107 components: - type: Transform - pos: 4.5,4.5 parent: 1 + pos: 4.5,4.5 - uid: 108 components: - type: Transform - pos: 5.5,1.5 parent: 1 + pos: 5.5,1.5 - uid: 109 components: - type: Transform - pos: 6.5,-3.5 parent: 1 + pos: 6.5,-3.5 - uid: 110 components: - type: Transform - pos: 0.5,5.5 parent: 1 + pos: 0.5,5.5 - uid: 111 components: - type: Transform - pos: -0.5,7.5 parent: 1 + pos: -0.5,7.5 - uid: 112 components: - type: Transform - pos: -4.5,2.5 parent: 1 + pos: -4.5,2.5 - proto: FoodMeat entities: - uid: 184 components: - type: Transform - pos: -3.28125,-2.359375 parent: 1 + pos: -3.28125,-2.359375 - proto: FoodMeatAnomaly entities: - uid: 158 components: - type: Transform - pos: 2.5,-3.5 parent: 1 + pos: 2.5,-3.5 - uid: 159 components: - type: Transform - pos: -0.5,3.5 parent: 1 + pos: -0.5,3.5 - uid: 160 components: - type: Transform - pos: -5.5,1.5 parent: 1 + pos: -5.5,1.5 - proto: FoodMeatAnomalyCooked entities: - uid: 157 components: - type: Transform - pos: -2.484375,-2.265625 parent: 1 + pos: -2.484375,-2.265625 - type: CollisionWake enabled: False - proto: FoodMeatClown @@ -218,55 +219,55 @@ entities: - uid: 165 components: - type: Transform - pos: -4.453125,6.390625 parent: 1 + pos: -4.453125,6.390625 - proto: FoodMeatDragon entities: - uid: 120 components: - type: Transform - pos: 1.390625,1.671875 parent: 1 + pos: 1.390625,1.671875 - uid: 121 components: - type: Transform - pos: 1.625,1.515625 parent: 1 + pos: 1.625,1.515625 - proto: FoodMeatDragonCutletCooked entities: - uid: 161 components: - type: Transform - pos: -3.109375,-2.53125 parent: 1 + pos: -3.109375,-2.53125 - proto: FoodMeatHuman entities: - uid: 183 components: - type: Transform - pos: -3.5,-2.5 parent: 1 + pos: -3.5,-2.5 - proto: FoodMeatRouny entities: - uid: 56 components: - type: Transform - pos: 4.5,-4.53125 parent: 1 + pos: 4.5,-4.53125 - proto: Grille entities: - uid: 43 components: - type: Transform - pos: 5.5,5.5 parent: 1 + pos: 5.5,5.5 - proto: KitchenElectricGrill entities: - uid: 127 components: - type: Transform - pos: -2.5,-2.5 parent: 1 + pos: -2.5,-2.5 - type: ItemPlacer placedEntities: - 157 @@ -275,1207 +276,1196 @@ entities: - uid: 187 components: - type: Transform - pos: 4.390625,-1.40625 parent: 1 + pos: 4.390625,-1.40625 - uid: 188 components: - type: Transform - pos: 4.640625,-1.4375 parent: 1 + pos: 4.640625,-1.4375 - proto: MachineAPE entities: - uid: 118 components: - type: Transform + parent: 1 rot: -1.5707963267948966 rad pos: 1.5,0.5 - parent: 1 - proto: MachineFrameDestroyed entities: - uid: 122 components: - type: Transform - pos: -0.5,0.5 parent: 1 + pos: -0.5,0.5 - proto: OrganHumanAppendix entities: - uid: 186 components: - type: Transform - pos: 3.484375,3.609375 parent: 1 + pos: 3.484375,3.609375 - proto: PuddleBlood entities: - uid: 189 components: - type: Transform - pos: 2.5,-0.5 parent: 1 + pos: 2.5,-0.5 - uid: 190 components: - type: Transform - pos: 2.5,-1.5 parent: 1 + pos: 2.5,-1.5 - uid: 193 components: - type: Transform - pos: 1.5,-1.5 parent: 1 + pos: 1.5,-1.5 - uid: 194 components: - type: Transform - pos: 1.5,-0.5 parent: 1 + pos: 1.5,-0.5 - uid: 195 components: - type: Transform - pos: 2.5,-2.5 parent: 1 + pos: 2.5,-2.5 - uid: 198 components: - type: Transform - pos: 0.5,4.5 parent: 1 + pos: 0.5,4.5 - uid: 199 components: - type: Transform - pos: 1.5,4.5 parent: 1 + pos: 1.5,4.5 - uid: 200 components: - type: Transform - pos: 1.5,5.5 parent: 1 + pos: 1.5,5.5 - uid: 201 components: - type: Transform - pos: 1.5,3.5 parent: 1 + pos: 1.5,3.5 - uid: 204 components: - type: Transform - pos: -3.5,0.5 parent: 1 + pos: -3.5,0.5 - uid: 205 components: - type: Transform - pos: -4.5,0.5 parent: 1 + pos: -4.5,0.5 - uid: 206 components: - type: Transform - pos: -4.5,-0.5 parent: 1 + pos: -4.5,-0.5 - uid: 211 components: - type: Transform - pos: 5.5,3.5 parent: 1 + pos: 5.5,3.5 - proto: PuddleBloodSmall entities: - uid: 196 components: - type: Transform - pos: 0.5,-1.5 parent: 1 + pos: 0.5,-1.5 - uid: 197 components: - type: Transform - pos: 3.5,-1.5 parent: 1 + pos: 3.5,-1.5 - uid: 202 components: - type: Transform - pos: 2.5,4.5 parent: 1 + pos: 2.5,4.5 - uid: 203 components: - type: Transform - pos: -0.5,4.5 parent: 1 + pos: -0.5,4.5 - uid: 207 components: - type: Transform - pos: -3.5,-0.5 parent: 1 + pos: -3.5,-0.5 - uid: 208 components: - type: Transform - pos: -3.5,1.5 parent: 1 + pos: -3.5,1.5 - uid: 209 components: - type: Transform - pos: -4.5,-1.5 parent: 1 + pos: -4.5,-1.5 - uid: 210 components: - type: Transform - pos: 0.5,3.5 parent: 1 + pos: 0.5,3.5 - uid: 212 components: - type: Transform - pos: 5.5,2.5 parent: 1 + pos: 5.5,2.5 - uid: 213 components: - type: Transform - pos: 4.5,3.5 parent: 1 + pos: 4.5,3.5 - proto: Rack entities: - uid: 117 components: - type: Transform - pos: 1.5,1.5 parent: 1 + pos: 1.5,1.5 - uid: 155 components: - type: Transform - pos: 4.5,-1.5 parent: 1 + pos: 4.5,-1.5 - proto: RandomMeat entities: - uid: 166 components: - type: Transform - pos: -3.5,-0.5 parent: 1 + pos: -3.5,-0.5 - uid: 167 components: - type: Transform - pos: -3.5,0.5 parent: 1 + pos: -3.5,0.5 - uid: 168 components: - type: Transform - pos: -4.5,-0.5 parent: 1 + pos: -4.5,-0.5 - uid: 169 components: - type: Transform - pos: -1.5,3.5 parent: 1 + pos: -1.5,3.5 - uid: 170 components: - type: Transform - pos: 1.5,5.5 parent: 1 + pos: 1.5,5.5 - uid: 171 components: - type: Transform - pos: 2.5,4.5 parent: 1 + pos: 2.5,4.5 - uid: 172 components: - type: Transform - pos: 6.5,-0.5 parent: 1 + pos: 6.5,-0.5 - uid: 173 components: - type: Transform - pos: 7.5,2.5 parent: 1 + pos: 7.5,2.5 - uid: 174 components: - type: Transform - pos: 6.5,1.5 parent: 1 + pos: 6.5,1.5 - uid: 175 components: - type: Transform - pos: 4.5,5.5 parent: 1 + pos: 4.5,5.5 - uid: 176 components: - type: Transform - pos: 5.5,6.5 parent: 1 + pos: 5.5,6.5 - uid: 177 components: - type: Transform - pos: -0.5,-3.5 parent: 1 + pos: -0.5,-3.5 - uid: 178 components: - type: Transform - pos: 2.5,-2.5 parent: 1 + pos: 2.5,-2.5 - uid: 179 components: - type: Transform - pos: 0.5,-0.5 parent: 1 + pos: 0.5,-0.5 - uid: 180 components: - type: Transform - pos: -1.5,-4.5 parent: 1 + pos: -1.5,-4.5 - uid: 181 components: - type: Transform - pos: -2.5,-3.5 parent: 1 + pos: -2.5,-3.5 - proto: RandomScienceCorpseSpawner entities: - uid: 115 components: - type: Transform - pos: -3.5,0.5 parent: 1 + pos: -3.5,0.5 - proto: RandomServiceCorpseSpawner entities: - uid: 156 components: - type: Transform - pos: 1.5,4.5 parent: 1 + pos: 1.5,4.5 - proto: SalvageFleshSpawner entities: - uid: 113 components: - type: Transform - pos: 1.5,4.5 parent: 1 + pos: 1.5,4.5 - uid: 114 components: - type: Transform - pos: -4.5,0.5 parent: 1 + pos: -4.5,0.5 - uid: 123 components: - type: Transform - pos: -1.5,-3.5 parent: 1 + pos: -1.5,-3.5 - uid: 215 components: - type: Transform - pos: -0.5,3.5 parent: 1 + pos: -0.5,3.5 - uid: 216 components: - type: Transform - pos: -2.5,2.5 parent: 1 + pos: -2.5,2.5 - proto: SalvageHumanCorpseSpawner entities: - uid: 97 components: - type: Transform - pos: 1.5,-1.5 parent: 1 + pos: 1.5,-1.5 - uid: 214 components: - type: Transform - pos: 5.5,3.5 parent: 1 + pos: 5.5,3.5 - proto: SalvageLootSpawner entities: - uid: 182 components: - type: Transform - pos: 2.5,-0.5 parent: 1 + pos: 2.5,-0.5 - proto: SalvageMaterialCrateSpawner entities: - uid: 128 components: - type: Transform - pos: -1.5,4.5 parent: 1 + pos: -1.5,4.5 - proto: SalvageSpawnerEquipmentValuable entities: - uid: 116 components: - type: Transform - pos: 3.5,-0.5 parent: 1 + pos: 3.5,-0.5 - uid: 154 components: - type: Transform - pos: 1.5,-1.5 parent: 1 + pos: 1.5,-1.5 - proto: SalvageSpawnerMobShark entities: - uid: 99 components: - type: Transform - pos: 2.5,-1.5 parent: 1 + pos: 2.5,-1.5 - proto: SalvageSpawnerScrapCommon entities: - uid: 98 components: - type: Transform - pos: -3.5,-1.5 parent: 1 + pos: -3.5,-1.5 - uid: 150 components: - type: Transform - pos: 1.5,3.5 parent: 1 + pos: 1.5,3.5 - uid: 185 components: - type: Transform - pos: -4.5,-2.5 parent: 1 + pos: -4.5,-2.5 - uid: 221 components: - type: Transform - pos: -3.5,1.5 parent: 1 + pos: -3.5,1.5 - uid: 237 components: - type: Transform - pos: -2.5,-1.5 parent: 1 + pos: -2.5,-1.5 - proto: SalvageSpawnerScrapCommon75 entities: - uid: 129 components: - type: Transform - pos: 5.5,2.5 parent: 1 + pos: 5.5,2.5 - uid: 130 components: - type: Transform - pos: 6.5,4.5 parent: 1 + pos: 6.5,4.5 - uid: 133 components: - type: Transform - pos: -2.5,1.5 parent: 1 + pos: -2.5,1.5 - uid: 134 components: - type: Transform - pos: -5.5,0.5 parent: 1 + pos: -5.5,0.5 - uid: 135 components: - type: Transform - pos: -3.5,3.5 parent: 1 + pos: -3.5,3.5 - uid: 138 components: - type: Transform - pos: -0.5,4.5 parent: 1 + pos: -0.5,4.5 - uid: 140 components: - type: Transform - pos: 0.5,4.5 parent: 1 + pos: 0.5,4.5 - uid: 141 components: - type: Transform - pos: 0.5,3.5 parent: 1 + pos: 0.5,3.5 - uid: 143 components: - type: Transform - pos: 1.5,-0.5 parent: 1 + pos: 1.5,-0.5 - uid: 149 components: - type: Transform - pos: 3.5,5.5 parent: 1 + pos: 3.5,5.5 - uid: 151 components: - type: Transform - pos: 2.5,-3.5 parent: 1 + pos: 2.5,-3.5 - proto: SalvageSpawnerScrapValuable entities: - uid: 139 components: - type: Transform - pos: 3.5,-2.5 parent: 1 + pos: 3.5,-2.5 - uid: 142 components: - type: Transform - pos: 0.5,-1.5 parent: 1 + pos: 0.5,-1.5 - uid: 224 components: - type: Transform - pos: 6.5,0.5 parent: 1 + pos: 6.5,0.5 - uid: 227 components: - type: Transform - pos: 4.5,2.5 parent: 1 + pos: 4.5,2.5 - uid: 236 components: - type: Transform - pos: 6.5,5.5 parent: 1 + pos: 6.5,5.5 - proto: SalvageSpawnerScrapValuable75 entities: - uid: 136 components: - type: Transform - pos: -0.5,-4.5 parent: 1 + pos: -0.5,-4.5 - uid: 137 components: - type: Transform - pos: -4.5,-3.5 parent: 1 + pos: -4.5,-3.5 - uid: 152 components: - type: Transform - pos: 4.5,-0.5 parent: 1 + pos: 4.5,-0.5 - uid: 218 components: - type: Transform - pos: -3.5,-3.5 parent: 1 + pos: -3.5,-3.5 - uid: 219 components: - type: Transform - pos: 1.5,-2.5 parent: 1 + pos: 1.5,-2.5 - uid: 220 components: - type: Transform - pos: 0.5,1.5 parent: 1 + pos: 0.5,1.5 - uid: 222 components: - type: Transform - pos: 3.5,0.5 parent: 1 + pos: 3.5,0.5 - uid: 223 components: - type: Transform - pos: -4.5,-1.5 parent: 1 + pos: -4.5,-1.5 - uid: 225 components: - type: Transform - pos: -3.5,-0.5 parent: 1 + pos: -3.5,-0.5 - uid: 226 components: - type: Transform - pos: 2.5,-1.5 parent: 1 + pos: 2.5,-1.5 - uid: 228 components: - type: Transform - pos: -4.5,2.5 parent: 1 + pos: -4.5,2.5 - uid: 229 components: - type: Transform - pos: -2.5,3.5 parent: 1 + pos: -2.5,3.5 - uid: 230 components: - type: Transform - pos: -5.5,1.5 parent: 1 + pos: -5.5,1.5 - uid: 231 components: - type: Transform - pos: 2.5,3.5 parent: 1 + pos: 2.5,3.5 - uid: 232 components: - type: Transform - pos: 4.5,5.5 parent: 1 + pos: 4.5,5.5 - uid: 233 components: - type: Transform - pos: 0.5,5.5 parent: 1 + pos: 0.5,5.5 - uid: 234 components: - type: Transform - pos: 7.5,3.5 parent: 1 + pos: 7.5,3.5 - uid: 235 components: - type: Transform - pos: 7.5,4.5 parent: 1 + pos: 7.5,4.5 - proto: SalvageSpawnerTreasure entities: - uid: 145 components: - type: Transform - pos: 2.5,5.5 parent: 1 + pos: 2.5,5.5 - uid: 146 components: - type: Transform - pos: 3.5,4.5 parent: 1 + pos: 3.5,4.5 - uid: 147 components: - type: Transform - pos: -3.5,2.5 parent: 1 + pos: -3.5,2.5 - uid: 148 components: - type: Transform - pos: -4.5,1.5 parent: 1 + pos: -4.5,1.5 - proto: SalvageSpawnerTreasureValuable entities: - uid: 131 components: - type: Transform - pos: -0.5,-0.5 parent: 1 + pos: -0.5,-0.5 - uid: 132 components: - type: Transform - pos: -1.5,-2.5 parent: 1 + pos: -1.5,-2.5 - uid: 144 components: - type: Transform - pos: 3.5,-1.5 parent: 1 + pos: 3.5,-1.5 - proto: SignKitchen entities: - uid: 191 components: - type: Transform - pos: 6.5,3.5 parent: 1 - - type: Fixtures - fixtures: {} + pos: 6.5,3.5 - proto: SmallLight entities: - uid: 192 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: 7.5,3.5 - parent: 1 - proto: TableReinforced entities: - uid: 124 components: - type: Transform - pos: -1.5,-2.5 parent: 1 + pos: -1.5,-2.5 - uid: 125 components: - type: Transform - pos: -2.5,-2.5 parent: 1 + pos: -2.5,-2.5 - uid: 126 components: - type: Transform - pos: -3.5,-2.5 parent: 1 + pos: -3.5,-2.5 - proto: TableWood entities: - uid: 164 components: - type: Transform - pos: 3.5,3.5 parent: 1 + pos: 3.5,3.5 - proto: WallMeat entities: - uid: 2 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: -4.5,-5.5 - parent: 1 - uid: 7 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: -1.5,-0.5 - parent: 1 - uid: 8 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: -1.5,-1.5 - parent: 1 - uid: 9 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: 2.5,1.5 - parent: 1 - uid: 10 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: -0.5,-1.5 - parent: 1 - uid: 11 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: 2.5,2.5 - parent: 1 - uid: 12 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: 1.5,2.5 - parent: 1 - uid: 15 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: -0.5,-2.5 - parent: 1 - uid: 16 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: 0.5,-2.5 - parent: 1 - uid: 17 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: -2.5,-0.5 - parent: 1 - uid: 18 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: -2.5,0.5 - parent: 1 - uid: 19 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: 3.5,2.5 - parent: 1 - uid: 20 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: 3.5,1.5 - parent: 1 - uid: 21 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: 4.5,1.5 - parent: 1 - uid: 22 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: 4.5,0.5 - parent: 1 - uid: 23 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: 5.5,0.5 - parent: 1 - uid: 24 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: 5.5,-0.5 - parent: 1 - uid: 25 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: 5.5,-1.5 - parent: 1 - uid: 26 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: 4.5,-2.5 - parent: 1 - uid: 27 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: 5.5,-2.5 - parent: 1 - uid: 28 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: 4.5,-3.5 - parent: 1 - uid: 29 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: 3.5,-3.5 - parent: 1 - uid: 30 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: 3.5,-4.5 - parent: 1 - uid: 31 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: 2.5,-4.5 - parent: 1 - uid: 32 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: 1.5,-4.5 - parent: 1 - uid: 33 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: 0.5,-4.5 - parent: 1 - uid: 34 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: -2.5,4.5 - parent: 1 - uid: 35 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: -3.5,4.5 - parent: 1 - uid: 36 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: -4.5,4.5 - parent: 1 - uid: 37 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: -4.5,3.5 - parent: 1 - uid: 38 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: -4.5,5.5 - parent: 1 - uid: 39 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: -3.5,5.5 - parent: 1 - uid: 40 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: -2.5,5.5 - parent: 1 - uid: 41 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: -1.5,5.5 - parent: 1 - uid: 42 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: -0.5,5.5 - parent: 1 - uid: 44 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: -4.5,-4.5 - parent: 1 - uid: 45 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: -3.5,-5.5 - parent: 1 - type: Destructible thresholds: - - trigger: !type:DamageTrigger - damage: 20 - triggersOnce: False + - triggersOnce: False triggered: False + trigger: !type:DamageTrigger + damage: 20 behaviors: - !type:SpawnEntitiesBehavior - offset: 0.5 spawnInContainer: False - transferForensics: False + spawnAfter: 0 spawn: Girder: - max: 1 min: 1 + max: 1 + offset: 0.5 + transferForensics: False - !type:DoActsBehavior acts: Destruction - uid: 46 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: -2.5,-5.5 - parent: 1 - uid: 47 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: -1.5,-5.5 - parent: 1 - uid: 48 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: -0.5,-5.5 - parent: 1 - uid: 49 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: 0.5,-5.5 - parent: 1 - uid: 50 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: 1.5,-5.5 - parent: 1 - uid: 51 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: 2.5,-5.5 - parent: 1 - uid: 52 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: 3.5,-5.5 - parent: 1 - uid: 53 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: 4.5,-5.5 - parent: 1 - uid: 54 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: -3.5,6.5 - parent: 1 - uid: 55 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: -2.5,6.5 - parent: 1 - uid: 57 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: 5.5,-4.5 - parent: 1 - uid: 58 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: -1.5,6.5 - parent: 1 - uid: 59 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: 5.5,-3.5 - parent: 1 - uid: 60 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: -0.5,6.5 - parent: 1 - uid: 61 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: 6.5,-1.5 - parent: 1 - uid: 62 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: 6.5,-2.5 - parent: 1 - uid: 63 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: 0.5,6.5 - parent: 1 - uid: 66 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: 1.5,6.5 - parent: 1 - uid: 68 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: -5.5,5.5 - parent: 1 - uid: 69 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: -5.5,3.5 - parent: 1 - uid: 70 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: -5.5,4.5 - parent: 1 - uid: 71 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: -5.5,2.5 - parent: 1 - uid: 72 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: -5.5,-2.5 - parent: 1 - uid: 73 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: -5.5,-3.5 - parent: 1 - uid: 74 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: -5.5,-4.5 - parent: 1 - uid: 77 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: -1.5,7.5 - parent: 1 - uid: 78 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: 0.5,7.5 - parent: 1 - uid: 79 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: 1.5,7.5 - parent: 1 - uid: 80 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: 2.5,7.5 - parent: 1 - uid: 81 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: 3.5,7.5 - parent: 1 - uid: 82 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: -6.5,-2.5 - parent: 1 - uid: 83 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: -6.5,-1.5 - parent: 1 - uid: 84 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: -6.5,-0.5 - parent: 1 - uid: 85 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: -6.5,0.5 - parent: 1 - uid: 86 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: -6.5,1.5 - parent: 1 - uid: 87 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: -6.5,3.5 - parent: 1 - uid: 88 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: -6.5,2.5 - parent: 1 - uid: 89 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: -5.5,-1.5 - parent: 1 - uid: 91 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: -2.5,-6.5 - parent: 1 - uid: 92 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: -1.5,-6.5 - parent: 1 - uid: 93 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: -0.5,-6.5 - parent: 1 - uid: 94 components: - type: Transform + parent: 1 rot: 1.5707963267948966 rad pos: 0.5,-6.5 - parent: 1 - proto: WallReinforced entities: - uid: 4 components: - type: Transform - pos: -1.5,0.5 parent: 1 + pos: -1.5,0.5 - uid: 5 components: - type: Transform - pos: -1.5,2.5 parent: 1 + pos: -1.5,2.5 - uid: 6 components: - type: Transform - pos: -1.5,1.5 parent: 1 + pos: -1.5,1.5 - uid: 13 components: - type: Transform - pos: 0.5,2.5 parent: 1 + pos: 0.5,2.5 - uid: 105 components: - type: Transform - pos: -0.5,2.5 parent: 1 + pos: -0.5,2.5 - proto: WallSolid entities: - uid: 64 components: - type: Transform - pos: 2.5,6.5 parent: 1 + pos: 2.5,6.5 - uid: 65 components: - type: Transform - pos: 3.5,6.5 parent: 1 + pos: 3.5,6.5 - uid: 67 components: - type: Transform - pos: 4.5,6.5 parent: 1 + pos: 4.5,6.5 - uid: 75 components: - type: Transform - pos: 6.5,3.5 parent: 1 + pos: 6.5,3.5 - uid: 76 components: - type: Transform - pos: 6.5,2.5 parent: 1 + pos: 6.5,2.5 - uid: 95 components: - type: Transform - pos: 1.5,-6.5 parent: 1 + pos: 1.5,-6.5 - uid: 96 components: - type: Transform - pos: 2.5,-6.5 parent: 1 + pos: 2.5,-6.5 - proto: WaterTankFull entities: - uid: 153 components: - type: Transform - pos: -2.5,-4.5 parent: 1 -- proto: WeldingFuelTankFull + pos: -2.5,-4.5 +- proto: WeldingFuelTank entities: - uid: 103 components: - type: MetaData - desc: A fuel tank. It used to store high amounts of welding fuel, now it's only good as a small explosive. name: damaged fuel tank - type: Transform - anchored: True - pos: -3.5,-4.5 parent: 1 - - type: SolutionContainerManager - solutions: - tank: - temperature: 293.15 - canReact: True - maxVol: 200 - name: null - reagents: - - data: [] - ReagentId: WeldingFuel - Quantity: 1500 - - type: Explosive - totalIntensity: 25 - intensitySlope: 3 - maxIntensity: 5 - - type: Physics - bodyType: Static + pos: -3.5,-4.5 + - type: Solution + solution: + temperature: 293.15 + maxVol: 960 + reagents: + - ReagentId: WeldingFuel + data: [] + Quantity: 400 + canReact: True ... From b43de90b2b651a2930f949b9e56ed24fb8ffc23d Mon Sep 17 00:00:00 2001 From: ProPeperos <61984624+ProPeperos@users.noreply.github.com> Date: Fri, 17 Jul 2026 20:42:59 +0200 Subject: [PATCH 058/108] Firealarm sprite offset + sprite cleanup (#44707) * Firealarm offset + sprite cleanup * optimazied pngs, maybe * optimazing the sprites a little bit more * forgor * removed directions: 1 as it is defualt * xeno variant --- .../Wallmounts/air_monitors.rsi/alarm0.png | Bin 1223 -> 260 bytes .../Wallmounts/air_monitors.rsi/alarm1.png | Bin 1085 -> 264 bytes .../Wallmounts/air_monitors.rsi/alarm2.png | Bin 1070 -> 259 bytes .../Wallmounts/air_monitors.rsi/alarm_b1.png | Bin 5459 -> 332 bytes .../Wallmounts/air_monitors.rsi/alarm_b2.png | Bin 5524 -> 340 bytes .../air_monitors.rsi/alarm_bitem.png | Bin 4537 -> 305 bytes .../Wallmounts/air_monitors.rsi/alarmp.png | Bin 5349 -> 323 bytes .../Wallmounts/air_monitors.rsi/alarmx.png | Bin 5714 -> 356 bytes .../Wallmounts/air_monitors.rsi/auth_off.png | Bin 231 -> 231 bytes .../Wallmounts/air_monitors.rsi/auth_on.png | Bin 434 -> 334 bytes .../Wallmounts/air_monitors.rsi/fire0.png | Bin 835 -> 254 bytes .../Wallmounts/air_monitors.rsi/fire_0.png | Bin 200 -> 167 bytes .../Wallmounts/air_monitors.rsi/fire_1.png | Bin 222 -> 170 bytes .../Wallmounts/air_monitors.rsi/fire_2.png | Bin 264 -> 172 bytes .../Wallmounts/air_monitors.rsi/fire_3.png | Bin 351 -> 195 bytes .../Wallmounts/air_monitors.rsi/fire_b0.png | Bin 851 -> 241 bytes .../Wallmounts/air_monitors.rsi/fire_b1.png | Bin 929 -> 258 bytes .../Wallmounts/air_monitors.rsi/fire_b2.png | Bin 1205 -> 279 bytes .../air_monitors.rsi/fire_bitem.png | Bin 317 -> 241 bytes .../air_monitors.rsi/fire_detected.png | Bin 427 -> 191 bytes .../air_monitors.rsi/fire_emagged.png | Bin 798 -> 269 bytes .../Wallmounts/air_monitors.rsi/fire_off.png | Bin 203 -> 167 bytes .../Wallmounts/air_monitors.rsi/fire_on.png | Bin 380 -> 200 bytes .../air_monitors.rsi/fire_overlay.png | Bin 247 -> 166 bytes .../Wallmounts/air_monitors.rsi/firex.png | Bin 1451 -> 296 bytes .../Wallmounts/air_monitors.rsi/meta.json | 168 ++---------------- .../air_monitors_xeno.rsi/alarm0.png | Bin 19296 -> 622 bytes .../air_monitors_xeno.rsi/alarm1.png | Bin 17732 -> 685 bytes .../air_monitors_xeno.rsi/alarm2.png | Bin 17694 -> 664 bytes .../air_monitors_xeno.rsi/alarm_b1.png | Bin 16251 -> 355 bytes .../air_monitors_xeno.rsi/alarm_b2.png | Bin 16329 -> 364 bytes .../air_monitors_xeno.rsi/alarm_bitem.png | Bin 15309 -> 307 bytes .../air_monitors_xeno.rsi/alarmp.png | Bin 16238 -> 347 bytes .../air_monitors_xeno.rsi/alarmx.png | Bin 16602 -> 386 bytes .../air_monitors_xeno.rsi/fire0.png | Bin 15802 -> 286 bytes .../air_monitors_xeno.rsi/fire_0.png | Bin 200 -> 167 bytes .../air_monitors_xeno.rsi/fire_1.png | Bin 222 -> 170 bytes .../air_monitors_xeno.rsi/fire_2.png | Bin 264 -> 172 bytes .../air_monitors_xeno.rsi/fire_3.png | Bin 351 -> 195 bytes .../air_monitors_xeno.rsi/fire_b0.png | Bin 15789 -> 273 bytes .../air_monitors_xeno.rsi/fire_b1.png | Bin 15867 -> 290 bytes .../air_monitors_xeno.rsi/fire_b2.png | Bin 16603 -> 316 bytes .../air_monitors_xeno.rsi/fire_bitem.png | Bin 15230 -> 251 bytes .../air_monitors_xeno.rsi/fire_detected.png | Bin 427 -> 191 bytes .../air_monitors_xeno.rsi/fire_emagged.png | Bin 798 -> 253 bytes .../air_monitors_xeno.rsi/fire_off.png | Bin 203 -> 167 bytes .../air_monitors_xeno.rsi/fire_on.png | Bin 380 -> 200 bytes .../air_monitors_xeno.rsi/fire_overlay.png | Bin 247 -> 166 bytes .../air_monitors_xeno.rsi/firex.png | Bin 16351 -> 336 bytes .../air_monitors_xeno.rsi/meta.json | 168 ++---------------- 50 files changed, 26 insertions(+), 310 deletions(-) diff --git a/Resources/Textures/Structures/Wallmounts/air_monitors.rsi/alarm0.png b/Resources/Textures/Structures/Wallmounts/air_monitors.rsi/alarm0.png index cee119f79e955c120ed15383290279e493c3cb23..fef65c29aafd02bcfb46f2cee13b8ae6e9aef064 100644 GIT binary patch literal 260 zcmeAS@N?(olHy`uVBq!ia0vp^2|({j z8a1k_p(6V>Zq%G>x`CUkYw?GvQ?3O5ICkurhLnYsm6gZC{-!_!F1Ldje;r)@K6vz~ zYyB2C{j)C@G~PXWR5rf0Auhh>8vkMjZ3c$f$7L@rc;LPfXd#2AtDnm{r-UW|%AZ?V literal 1223 zcmeAS@N?(olHy`uVBq!ia0vp^3qY8I8A$FCoG#D6z}TGW>>S|f?5q$_l%JNFlghxL zaenGVTaUvIGDqWsw=NQOwC=EQS>aa}D0n=oRVjpHtJ7*ewdr+^liO5|9t|wewfM0y zqO_p!+SP-h0xb3pb7bd;#4b7VU$s?iVH5lDzZK>03%~OTWT`HTlnr#aoNFxE-}&;) zDv1hLeYOj%_HL+4Kid^{ zh^9>aF{k3t5^f>;qS%i=dW-L+Hm0|o2`QRq;iB^_IwCVM%)svf9fKI3>4aYRU^BOt(0Q1wQ~g;kT26g_`$H2ar$U4NptVz^+B z47Y}J^P67>|34_-9+sDN$(!p~!#VNeKP8x%c025SWpV#_U$8ynpYsQ%-up5=`@kFZ zmsgjG*)jdv-q`(m*|Il`)2$C&n5;N^llIR{uAMR;>fG*6VPwm1oM*az`!PE|`38~F zsXG|?_!>Xjq^{pySzext0c%T_&*FVY&xTJ9w^FL;1OBOz`!jG!i)^F z=12eqB}!Z)N`mv#O3D+9QW*jgGxJLH{9Hp6O!W-)ETl7EtpKX&NsaJK^YqkW-~e)1 z8Kf9l85n^qFCdnNvO(!bgOM35&IDu|GBPm;0O=?o&TMA^i)R7ZAmAy<$nXM~%wRN{ zr3^s*6WAG8fGQ1)j13qUKurDrAFP>S9n+NG62du}!1Vdf)5S5QBJS<2+d(Y`0~?)cQu;P3Y}D>FZOu*D40MF6eR)ZPa24Wm&}$^7Me7 zcKc%K=aq(gTo=mp9jZ<_W3QC_Pg3&p*VmjrPY&3zetTMQWw}H0yu5@n!3zxI_uH}a zMOw<-wODUwsf%Wq;0mRHujb6Xwtk;x)K7iA-z;vvoxSLe!s)xDGTsPc zf37+t&!2bZ`%ji@bL2ASOjGUunf2h<>(9@RdLcu>}*d6E9144Pf_&wh9bK<(4-3<;` z|8u`_;@JDqJMI0S9|wMjb7?EoIY)l}!Rx+2)M3HmzX#^}XRe$hFIQm#2@jz01x8;K zSsvGY{h9R8#<`}~;GOxA>m5gHHWtW%l)UnPxx_ABXGERLtq#b}*frA-HPId0v2Ba8^gWR1M)}51i3FNS( zJNh~@Fl_AS{*%Z$nTJWD-Z;P~#1$xG%*a|h?S9XqNAov6-+uJ%t;dt@&#!&>V)4_b zGoN2w{H9y~&HG<(Z*2eh>CNBgNB{r-&zrKz0AzYekY6x^!?PP{Ku(~ii(`m{&z761CdLoNUfQ< xp7Y$o>x|iolVcvl1WnhAc+T)#F5pzYt+fi%q#vR8vw@~Fc)I$ztaD0e0stF`W5@si literal 1085 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD3?#3*wF4y>n=_rA13aCb6#|O#(=u~X85lIq zPn~G%ao9oTXne5i+NpeH0);06=Du09sBbHm>k5Ia)-YKgy}wOryq;a%iyuT4d`RB- z>cOKmtD9FVaMU$eSX*fB^632U&86$a%HQ|<I^a zH$E5r%dwE3@yv-cM$c3L)|N6U{pJjGS&p6q(`QTln)X{Pf$vtM4ZDV!0Zvt{F@V{0<9jszbO485!wf1+Yd z(Y;4&rmkL7>HqIgf?s^(Gpnjm=n^`$L2zlP`cbE@Z;xgF99|c%G~H>P zkc6dJKqK4Dug(7tzRz3x=SjYeqtM&8=*G0O*g=J2Z1@hh1( z&tGyqD(VRbM=rDYbzR?^%zEVw3)P*?Qo}!87Wq{9;BU`9O>UlhOpT`Nw?DJzt4|8e6je}<4Mo2E`EDs`_E5rfcjp3pQ{0+1WSVa zf`PhF0E6n$cc0dZzK3s^i0$OZvVNk)bjz$6Hx(JW;E>Yu>QzyefhU}S8-xBz16|Nmgk4C|Pt z{FV^T(FCSl4^J1zkPPRyHxl!k6$Ba*pNiN9-2VSRTYN#}iOQ!NJg%vJuTgq_M_Rme z%i+zN8~NTXW1Pt5B9*}F8Fjh2T%wmT`PhzkLNj~}j+ahv=nYSJ{A)hjq#b^ZHHRXF ztk!+xO1XX{Qc!l$^2bu8jl6=hn2PtTSF8GPz3-skanm4$dLs+>KfNy9F&wb=}T)tAgphH`> zzJ=H1%{BiU2j-e6?2_4V%`f@knxnt}o`_>=m4ABkL*$BrYeMrbzUO0*(3rE;!r{8e zi#pc3%-7Bx-JNmw*1JWkO%yIQcrY*0G3Y6N*?sW&;~U$*ehO3OZ@C_!DG--@UzUM6 wfXjjfs_n7LUDtctS$HYaZfQjEnx?oJHr&dIz4a#+$GeH|GX zHuiJ>Nn{1`ISV`@iy0XB4ude`@%$AjKtbIApAc6dZOq78JMDhYqDS*LKHq-y?b+J< zx0qP(*WP>7bNkKvUvIZx`}OAg-=jzW|NnnABGn$Kfw3gWFPOpM*^M+HC&<&qF~s6@ za)JcwVg^n=_rA13aCb6#|O#(=u~X85lIq zPn~G%ao9oTXne5i+NpeH0);06=Du09sBbHm>k5Ia)-YKgy}wOryq;a%iyuT4d`RB- z>cOKmtD9FVaMU$eSX*fB^632U&86$a%HQ|<I^a zH$E5r%dwE3@yv-cM$c3L)|N6U{pJjGS&p6q(`QTln)X{Pf$vtM4ZDV!0Zvt{F@V{0<9jszbO485!wf1+Yd z(Y;4&rmkL7>HqIgf?s^(Gpnjm=n^`$L2zlP`cbE@Z;xgF99|c%G~H>P zkc6dJKqK4Dug(7tzRz3x=SjYeqtM&8=*G0O*g=J2Z1@hh1( z&tGyqD(VRbM=rDYbzR?^%zEVw3)P*?Qo}!87Wq{9;BU`9O>UlhOpT`Nw?DJ-L15RjOeSEA?V8lqsTXQ*c( zo%w17P)$#2glC$krxpVTki*I##mLIQ2xNHyu{4woN>dt)%wTaQAls0Ui9rBJM*(qW zI}2Dm3&;imPf13G7r>+kqtPs70P3H>&cFgxX<%e*z_i_>>%?#_9ru>!=&d~&> zSw~M7$B+!?w>J{|n-zE(5*J2s@A~_Hel_DX?nW;|kG$z$e!3LAje)qmRB!vs7o(6_d{?lQ1<-aId^Z*2@mr7zN7AP zdxpaj#))h$QUaMk#>M+AZ2KN-=OiRd4@zWa{=J4vTH=Og*gB@Z7gejP*nyn2;WrLU zHc{9m>u}_%$+=s5?a#eYyilRZe>i{PvB>Hj?)$A75*8L-d)II$AmJC+GIoLO&q7<8 z!!O1{EC>{fICJe+@`t}x{QcXvOI0e^9E)oFAo2ShLqtQ^0l^&$4}1~z;hzz@r|XYL m0w2)#3YQu@z`>v}OYR5b3-h-%6XutPfuqIM&t;ucLK6Td<+Z{9 diff --git a/Resources/Textures/Structures/Wallmounts/air_monitors.rsi/alarm_b1.png b/Resources/Textures/Structures/Wallmounts/air_monitors.rsi/alarm_b1.png index 50211ca0daa66bce56de17b7750a89c0ff3af25f..24959cc930cf54f83369e647aa00fd7e86b860e4 100644 GIT binary patch literal 332 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyjKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucLCXN25LX}#1hNX6^78Up=5fZ1tk#af?q1RH zne9nAT?N&%YNy@rNMq<(^l1LZ=i86IJ$U^3@k<}yy#Hk(czqgBCu2#FUoeBivm0qZ zPQRy%V~EA+x0AfZ4k_?3BsWF4N;Z04|HPE}05aeZewyI*;L`wtH7t_Ochk7wU& z^*FR5fI(kyUV)&MziGEYvaj-zON(?1^IO>$6kCKo43KTQmLwfz@nQ4+9gO|iJgOJ} R>`MoE(bLt>Wt~$(696m-bwU6D literal 5459 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 W>x-n0mfPR_(O=9cc_biyqD2_dwu0*nIfk ZBd(4)yv1`SO-=-P)zj6_Wt~$(69AH;d-VVS literal 5524 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 literal 4537 zcmeHKe^3)w9$!c)7)7o11Sy_tbX2_A?2l|9Sre!xK%xdwQjNA$Hk%h%A=!{DNubpt z0;kscqo>ujRIBxr^A}oA=1!eciVn7;bKG4!%#A;L-qcR3SF3d7D$2dxgn)CMxnbt| zAIrRb-~GPN`@Hu)@B6;ttuHLdPgbTW5d=xLTFi@KjY=iyS@;gr)O5qD6F97Ht92HV z1V11$?inOb!oU(Y$c~RwAPVSfgk>DGC5%+k;u7R~BeY+L+S{N#Gm43aHW?R>B*VH1 z77E(qVSNx5{@0PQ{se95Ns|98(2|(@>wK%N5T(>4q1NbNe}bYJl4M9NN=R=;lLgUn z9}dh&V%mA?cs*pP=S`+UtI34={DPaW00O!itx3k8B?u99wy@@Pj*h z_ij3=%xxaKvSG=j1?tCj)03?m-u&q1a^F4f_%}EIarn^MLuk_KTHS12#wpACzWGYb zY0&+v#t>1F_h|<{db$;rqBxjy;fA)+G8R1PWul4lQ zq}*C|{q~b|#k}jT+J)#Q&9!6eveq5Q!ajJAU0J_7$`09rv$L08oga3Xj@E11c z&l^+U?KV`_J7xxtU2Qw;YCd0deo^ihGjHs!TK46c3(Jmt?)Y|BZ^NE5tsh^idT*-5 z`P}@mQ(nwV2KJIEd57{gtf%kJF!Z)>S}|?Mf}>QbenMe`^3(6v_O*TIz5K~P>)#(g z54nc7J|>mjcj7Of^1LzmO7OumNe0Ezk4(KcF&Ar zYFfUsvpYq3?$N|mMWa*CB-E9Ag(It)vXP13%&JnPr^j=-pS}7p91==}zFqte4;4Fj z|H=1%tJn@>FwEN>qQka;;RKJGbqP+O4tspkh9QQWu#e@+frvUmDepC^zB_$Zh4L<= zYN^&n*nB2X##?Iqps1$6&efE2dY39ETWJV0kiY{(77cqUya6U`RLQ&yv?VvLLS=|p zZd5s79GL_^Kxs9tCa~NvAEZ>-O4Q(YxtYc0yeI|yGOEf%(Z}F;C=^nMG-|lCU)qe=za(f;{)d^TH*-W!Oj z0QJDbtPdyE1n%+RgL?$T+#n>0PUt6l1nkv5fG-9Cp~}yJ+#v9ZQwLMHxLAK*mA^t> zj*G)V1@J&<0FFvNHKcUnVm%}YN_me@?ghnu3MumL0kNK%o75sNXYfQ|_ZaU}=>E0K zV2HBW7_-1tNz=2MjVft;#wBpPi;+!EuhqG=S~muCln$dcE&^knqziKbj&{;6w@V5S zN%aVo)f*65F9#$l=uz{KM^ABDN<(TetxnHjG{I$JI@SrWOqyV`^ml?6g?=7J zC0j9gRuYv03%W2lyj%tB5ex;7XyW5r8tEIvLCL6G5G;23VypFR2WsUtQ%{#!Qbuax=anmQZ#{4 zZdR)SG)ZTH$f{!O0l_VXSU;Fk3U!29!SIxSq0pJ~MrFvF#n7QLAngJa3?oU5)b!$4A<5~Ms`sB{e*0zie^FiEl zvT4gNC#-bT-!Uzoba8IMv8^v$HP1eG=|F?GVN#=_by9WWo)cd*uiV=8`OCf&mD4{d zpOHcyEp{x_+<@=Ri^h`duYR{}pT60v&l#g>?@CEbSoc}uI8}u`RNG2reZRib{^kz$ z_URVI(&W%SvbVIPq-4uWoxQua{q2XGj04}EJzV!yU(coB+hsemcmDDI{rkOAxfmq5 zz`0!~M!hu(KE3gKliyg~=L|pkF{8a>Ov}V4PafOGJ-+=AZ`?fjRn6-^-rK)*&6+h| z-s;$#le4QL70(Y)*K0-pjm)Vh%1l=0$Bx3E%P{C|MkXJC)b@jI&eS7fu_2ZX5zIp#EAg%K$P#a@OkY6x^!?PP{Ku)Kp zi(`nz>9>_u9`we`#)is$o1 z?bvQACasO0w)(ZK)ANr_-4R(#s*Z0ASQAsMe^jdJI7TcIC=zgAvSzIUw=?UnuZtLN zT`_CCGP9Ap!inqHf}}(*#;7Y&)nZc5KUD^5>Nx-D@0OXD#2!A2TRks4&`Ixc~qF literal 5349 zcmeHKc~n!!8ox2riWQZLD+O`4h+3Z;eWJd(VG+;kIq!JR>whL^?tC-zo8Qd*zHh$d zZU_kuv>-c?AqcXNi2de)+8ZxsBf+y0i|Yi{MKnSpmq?~UW}pF(1QUpWV?ZGcvxx)} zL;`&opx6Q%$Kb_@Fv3`81KWAP-U@8D0Spn?ECLa-0ChenY+&1gx)KyDvwy8)z{Wpj z#;+JyIP+i~D3OLx*mM??&f$akOg2}@VhLI96ef6j2w6OUCKP?x5zcgP|7x5i4fFL4 zk@)&j)Ebo>i$x*Gke~dONPNoMrD@qB|Eg`4dh56|Aq71pCAsxv|8naU=?lgM(ch*{ zvXE@tRN57({zG=KyX*G;ee3s8%+{pvr}L*A5pQ@un@o%H-Z;gOTbr~%H+RP`yw%vWu&OQMQDI+tapR%y&&BVYAda$`ZSCqEV1b4$cMaGVuyF(T@np}w zQ@P6~<^>&KI|{xCNhdcyTmSyVQ)SD^yJ@@ZWqLU;|C5 zoq$vHbNHcJnFdqqFqM*mbHY)oc%6t!1>=;#{VCK^=@7kAJD>v4gJFQx3>KZqP$(F~ zXJ~c)dO$L;p}(A=4O^u~8S_xBDqbT){q?9)H(@vhA{&~oj@QH*kAuh_f2BVhUv??>ptvm3zxC6x;ORI+${ zdlEkp6<=S7sAL!-G@2|qU&iJ}v1vRMWzx7&OgT-!aYtz!cMrLo!}o9($dO@G5~WrL zD`hB71<2_b;6Yh(o;!;dMPqX0TpE|_fzn_m-h^S4!$R4BiZzU4js^o!3C9lK6;6c! zDz+Svd&u}~8kfTq(70?4LW5z1N8`hMcXyP>mh<=?Mk+)m3{YtlFmNZPfTK}{S{ZE| zzy%ljgh)hGHl6vQCnOfu$-x8>H3(D28$Jw#VG1-<2jgn8cpR382b;y?b9o#-kN*L* z0M%$gB;uUL+-V%a-68~s0m8y~oB{%4KRAofSA)Vjl_pH3iWO0ZvhL8Z6kI0+*1>+T z4h5t`c{pq^57U@@A+vw`IGt35VDeS}3yohMiYLGWmy0niSbvqVtN%uYqH+DL{$?y@ zyh;>`@lpt3S^p8VupaIAH{j|YlEuKvXcT0Rfp8t{$NnM|xB`UF5wQ3)IVwkJT$v1| z@!1GMLl7Rq62PzrliBaTA$F}wu1kP5s82M|5oiU%)A$QTaWgt`9sHf20bl%` zOHe4E7x^T8Kg;!5u1`|nlfa*&>$6;+q`)VEKS$U9O)m0>*C|v9{skp~m!*rVPiBG_ zt&vf)1O1>kPzTgh-aAVLdPb?m3$+krJ_auYXlK47=rq+yr2eK4&8Q zsS-b*FvE?#K4a^=f%@@oni;YS!H_lTBO4@2R_7s<5&r zkGJ1rHvcQ~_{1%gtcb=94y~Ia4!^rnVm7a8V&p+TG%4n4@TA%q&uiuT|D?p;K7am6 z(wj~m=cY5kwxKfwS;L>RbjPHU-H%nvMn4Yv`mM#i`$;=C|2u&rew0#FJ(C2vO?gd% zyys&7xO{NWZ)@YKs$I*MOffY{wvW7XJCz7+`TaZ*N_ly2Ri&(K`lH)7nhpjuof)<9 zoTYU$;aEn|A^sIdS@rDueLPo&)UIN-17Ydf+WW}+?w%T|!o={lC9-Socb5*ghD;Xc z5##6c{&|4$YL8RlqIR!!tybYNqJZ4_6zxmeltdIJQG;x zHS$eTX|{9E(;VT~HFa@8eQ%zuNjs0PaOLWy6DXwmvizC8J#B5_nD*q3KmGfT{?e0E ze<(igxPPNnemYi~@~Y8(al^Aq-;i?e$HyzU=9d~_?t_8hrQ2rn(bT&jx%qGd3ZDxL0x7myRFK{ z#H?K8;I8VL7<> z%nNR!Rp^c9rDvKFNg_09bjQ?UlR-76mo+6~gJ*cvYTjV zaE?ngv!wVtsRTFg`Snh3BJ`?%3Du7&B+9kWWU6=Cvy&3*j%i(piMWLj90&zB#65s^ z?OgwpBZ2H?n?+8BExq?OKY4+;F@n}7b&md7p8AEaay1pYIp@XiUA^=8-X@b5-&lIf zJ9N5BhHuUH+-a9RQ!w|3ZR3gi?lF&%q^CJ?=2Sf#EoiK-IN8=~ot>*&luI;lYsl2L zDSrf77w;;4RPR%|c9Bo}_GY*VBKu&Msf`e3-_z3{#E^QZXoXB%j2U8T|D;ms9mzGf#A=O!nO1KLMwbX&H( z+U)ROA!73ic nDb;M#ApN6Npv*$lt!f{m_8Y#-ZPp(WL5}ux^>bP0l+XkK4B~@T literal 5714 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 S^BMdaKs@hXy$*SVCjAGhZfu_b diff --git a/Resources/Textures/Structures/Wallmounts/air_monitors.rsi/auth_off.png b/Resources/Textures/Structures/Wallmounts/air_monitors.rsi/auth_off.png index 8f05605743c877ace62b36d284246518e2993e35..6115c32af0534aa67900bb51a7de1fe800ab78ec 100644 GIT binary patch delta 215 zcmaFP_?&TqL_G^L0|P^2NcwRg#aJBV?!>U}oXkrghb7(7*O7r?V?XzwL{=c5v%n*= zn1O-sFbFdq&tH)O6qF0_32_C|K)}M|$R!dfAe~`oXt-j; z(u^fRe!&b5&u*jvIj){Ajv*T7lM^HYZZ!l7usBU*u}Wt;7?Q%cps6D$g;7vhHKg&v zg$pNwOpMbOaBwVJn!1Rign_Zk!BRkhb3_|aHin?r;>DN#K6L?E@9FC2vd$@? F2>{NEL+tbM396bXqt;ed{7{7Qf8>&vzb7=~dO8?#gP-L-~91OQ-WmG@q2 zEFy5usd_^QT3da9hWCE9PDIE#gPFVhx&r{f;dsJy8!(NRmr&~U8>{{R&mEsp~tDX{l| R4b}hv002ovPDHLkV1j4QTUh`A diff --git a/Resources/Textures/Structures/Wallmounts/air_monitors.rsi/auth_on.png b/Resources/Textures/Structures/Wallmounts/air_monitors.rsi/auth_on.png index 12103c62ad90da20f18a4e57907ba935d0786253..7cbdd65888e473291826f94c9b5029bd9519d742 100644 GIT binary patch delta 318 zcmdnQe2!^?WIZzj1H)A3zHLB?u{g-xiDBJ2nU_EgOS+@4BLl<6e(pbstUx|zfk$L9 z0|Vb-5N14{zaj-F=n>!(;tHgJfQdzrg~yRYIFd^wl3OC5N4iNsIzvXIK|!lP)ohia zp&YZns{=#(&mtR}4V#WIP>rdC8y>-YPimU8;eqTkVUCS&|Ig`aRNXe0tDlqY*X&|G_FW&}?UgTRFmh}(SRt@n z-kiZ)-y&~=N=isM(Eo2)9lrCP`hEWR4UjiI MUHx3vIVCg!0C>86zW@LL delta 419 zcmV;U0bKsh0GegdH>u)(`UM8qwOf(Xr_@*%H=umXK>&MOh> z{Kk6@|04(QMt;-(>vF6ws^?!=|gzLm`a(n~;$fm!}t#}uy*%Shwm&aZ}qtOVh^?E&S9GN>egHkb# zgZ+)rp5-MA?Hk_P8~F{W)oLR(&-1u(ECtubdSwLwP_0%+>Wd2=+BdvR_5zGCp|wf= z1BR|H!ynlw^VtiS)GI%&`J@Y@lp=o!4gKba(6r|ZAsmDdLJ08(y#ux*W?2h3$5{XX N002ovPDHLkV1lYt#}NPk diff --git a/Resources/Textures/Structures/Wallmounts/air_monitors.rsi/fire0.png b/Resources/Textures/Structures/Wallmounts/air_monitors.rsi/fire0.png index aa9559b7dce5255c74b9bd17732e84f183113292..f82055d33eb9b56f83a0f9ee3f1ca901c18d19f2 100644 GIT binary patch literal 254 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfv#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6;>1s;*b3=DjSL74G){)!Z!pmcywh%1n0V`Jmx{iG&dWvx-d^<@#*#L4dgL3HFXUZ?8mM0WneJM(M-wq_S(c$JO8`Kg z=lyXEo=ztyrLF{4O7-Fojlg2J!?A5=+jbTJz*X{Ggf*}QuIsuNUu%stO##5WPhJ8{ zQI;k0JnxU!gp#LY9}#}~2BOAk6mZJ2Tr7DK*nYh1KKT+f0>)HcdIU_h8~QkUjR4?d zxY;7mo#Br{Y-j{<_(%+SFL?>T8(;GU2rMVC_jdpvhBO6ftx;7~-?6HyqIJ*(J}c2w z?TV8C$F{}u$VUgChq*Yf+pTjaT(AY^-vM@PV+?k?om0EB0_?jEha|zv`86N|JvGPJIbYb?gT^->l1|Ci%}AP9mW2!bF8g75`6ua!gA<+0Y{ zOU8D(C}d|QhBdxMZ0B8JvdLXIwyl#h>k}Ioc8G`YvE{v-A!E$dPV5j()8JX_=}puC zY=@Zp5@d{o*z!Tv7~gy6{@~JP$&dxly}}S%-rE`jK5TL_BPem(Ed3XVVveqrI5$VA zKA^7an;a=`0VpUhNLZ_2LMb&EgU%_X)_Di;pmt?Os6#Uc_aVpVfA@F+dkbK9!oDMO zoxBC!?odfgNL()gT$1a}(#Ym0kIx^s(AprvdloRp^fLg5&c!N^8-o`^0N3xJv3kWR zydQy~YOOR)7b}q)Bi0CrRwcF;B)FY;=*aUHz@Cfg@0!&iLw7r53IqZKunQH4C96Y# zzooCmOw~tU72;4KN;nI!?>eu!lvI6;>1s;*b3=DjSK$uZf!>a)(XyfVP7!u+B_QF9<1_KV~K>fTqlDosYA8{;Q z_+kE&2bxJhH4NsSx28tkfAvW6v|#8gZR>0LH%>9uXgy*$peR+m$>4=ANR6kfpUXO@ GgeCx$R57Cf literal 200 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC={hlt4Ar*7p-a5$ZtjNI-aOujz ze{pAS@I5^k_se`i=;P{poQek}6qy(p5(;Np8Wo>8m)vzm=IvFt>aCZQY*sP-b>3g~ zW%YT# sY*@Ege|dFt_V%|EINmo{fz?U>VpzJt=bN@o|6GtBPgg&ebxsLQ0B?XzrvLx| diff --git a/Resources/Textures/Structures/Wallmounts/air_monitors.rsi/fire_1.png b/Resources/Textures/Structures/Wallmounts/air_monitors.rsi/fire_1.png index 765fdc6e594785b9925b5ad71880b815323bee37..ac1799194646dc91b55fb6cfbfb7136aaed7a286 100644 GIT binary patch literal 170 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnH3?%tPCZz)@#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6;>1s;*bK&6L4nDKc2iWHzAPk>K|E0E^$-p)JoZ%Ii>)>3DXfs7?Ve!&b5 z&u*jvIZ~c3jv*44lM^HsHT-0la&SB2sRz0a(-$!@Fnp6^I&|UPhBBZk22WQ%mvv4F FO#rOLE&c!i literal 222 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=OFdm2Ln`LHy>*cDumKOlfeYV6 zPbkDLneVXtqEY1H`3?&wmrQ$L=VVrpEPa3P7a=EwIRrL^nFv_e2$2&ie0icZ$<;J+3PQ zZ3cp$rGLNF{jq!cM{(a1k3*fi+ysA+N{8k;A=Lmbxm2aC OAWfdGelF{r5}E-1>r!|C diff --git a/Resources/Textures/Structures/Wallmounts/air_monitors.rsi/fire_2.png b/Resources/Textures/Structures/Wallmounts/air_monitors.rsi/fire_2.png index 7f004eb9b7b4b48b6035bb5d258b82f8b5c8c955..8277eadd3c5df1959ee6bed2d3e51690747e26d7 100644 GIT binary patch literal 172 zcmeAS@N?(olHy`uVBq!ia0vp^4nVBH#0(_wf1V}|q!^2X+?^QKos)S9a~60+7BevL9RguSQ4OyKpde3xPlzj!UL?)+PL}b%9D|JGsz@N8u_VYZ zn8D%MjWi%f#?!?yMB{vNf&{AxqYrNe(;fZ`EEd8XnUX9F46~jvMLHi%TMJaj;OXk; Jvd$@?2>^x7D3$;K literal 264 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGo=RI8hE=VwJIJo7cz^*5@TVE}IsSxp5Vk+6S{i^~zq=XZ^-nnwk!x@rG_M|V?G+rBI7uDtN#b(PTn zDqXN6S4k;p`;N3@M$^Ptz(#@zhsRN}z5cf+{9JmSExG%)Wqlw++JdWa75Q~_&u5uT u`?O2;dquptdA)J?v!HYaZfQjEnx?oJHr&dIz4a#+$GeH|GX zHuiJ>Nn{1`ISV`@iy0XB4ude`@%$AjKta&}pAc6dy-1pCQ5V-cS;lv#82`&L{J+8Q z{_y*&Kncc@AirP+hi5m^fE+DP7sn8b)5!@Etcw#iFr_hv*mX0{V!E6VvM-uz7L#*g i$iB&3E5mwn7#QYwFrD65V|Wp$i^0>?&t;ucLK6Vdhd4L@ literal 351 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7Ro>U{v#TaSW-L^Y)IR-(dq0wg>46 zoX$(j&YRA#WC(vya);q5!`x!tvhbt@!lvG*omz!bo-F&dPxEr|6ZO43Ki_fy4PtoE zerNfl-yvDo_N!lvI6;>1s;*b3=DjSK$uZf!>a)(C>`Jv;tHfiL`0;erM0xQEG;eU85!f5nM+Da z_6P~tXDOHhr5Q_t{DK)Ap4~_Ta)LZv978nDCnrdxDe!V7)NJeEGsy65_%JoWfmv(8 zqeqLLD6L3}>rr{2qM;GAq%YWkQ)xk5i&{gH#wso)p3uU=B0&+y9n9}8^|8p*9sHtu bm62hivU;oD)la{HrZafD`njxgN@xNAIG;kL literal 851 zcmV-Z1FZasP)gL)+#RwJmq<30j^+2f; zz;#{t{t|h9KoA4~fFwzf=Xs|_%ka)evl;#2*$i(07C>dx{eE8)Ln(j?-(Mn4cU8wZ zWmy6Mf*?Q~#{hsZ46FYph-Nb|#%cmHHm|ki;o&EMv!P@Ia^tDc7GP{-fnQ$!)UJyj zDZ>R(3854~rD7X#93u?F>i<+Q>H$M`To#yWpeD2jK^=znfIjbS8VBw=zfpn@e4?dH z6NaJjcN-I6X!;7=L-TUtz&b;(GP z1&~u>s_Uvl3MOD|ULA}OJ&l(!HYXp=nUn{l>8?tJH9-~Mcy@Rw>jP-*d>6|=d zn9^Q=>;ZXxz-sk~)#|az#HQ)4D$Dc35bXreF20U&WXJ;WxmX;1#ls7Hp)wUFHwa!D zW4e5LWC4bliz&1%w5TGG1lSe@BB)PmUE^%v5UWgW0XA8NwdZMXH2C2J6Kt{!Ae<7R z)UCZ&A2KMRQ}^@zy_N^0=?=d>KD6teMBoxQ2V`}>e@Z}hGUo(k`1+$Slkx!Fd#4hT dw^%IW^A~1*xXC`Eu9pA+002ovPDHLkV1h({e4YRR diff --git a/Resources/Textures/Structures/Wallmounts/air_monitors.rsi/fire_b1.png b/Resources/Textures/Structures/Wallmounts/air_monitors.rsi/fire_b1.png index f732817d47e82a882bf8cd5e19f550b98a15a634..fb07290b10c52cfe6b68d0b6e1ec73f9ddc56785 100644 GIT binary patch literal 258 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfv#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6;>1s;*b3=DjSL74G){)!Z!pkjbeh%1m55fPD=me$hJGCsp#X=!24$QaMe zoRpMQQc|)tb8^)yALQNhvis^=^Xrrt#yjH(kF7O!}wV!|lm92n}rdV$APEFg%N rmrGQ{bqDjiOQEb5f0|xKuVQ9cVx|AC&7hhcXc2>_tDnm{r-UW|L^w%A literal 929 zcmV;S177@zP)fP{&25{C4eE28Fjs0=fo%# zpbX0zAq-bp$BRs-Q@E}R0I+R4`>g_}*8?FWCom!XTw5lSF@T++iUy>{E8{}8QM1_$ z0Fb7s>??$z0=ur82|>AjdPfi}D~)4Wqta0gRE&T!6^s1({sZtXv;SS!g>Bo}@2flYd{gY@UfOsjcwb?->po5wy6{N=HagKdErH{ z>LI$_1h@He-}keI`M%%SAQhOVi8M{&d7kt;Y8Sz>c|*%g)7&d#=jb9yq#IR6QD8#) zx$EqA0M9N)IqS24V;I|SgvfmbR#5yBJnPfoF${3lM^)h8KaOiO8jVJy(P%W9(;#$E z5Q!QUkDcd=lvkK_Hk5gf>H-nx#=&lJRqp9i!7YGe7~5y?ci1tEt*W!Qj8A~KZY}|+ zXGVnA%|?j`GG3v16mi$hJp%3r1327G*xmoAFhb1h7hEKXP~A#HV?etLAR8fOJ6et^+O$ZCXro&b3#ceT}j1dIOT{zs^@9bnU z78YN48)UP!Xs6lag<=NRxznj_Fbr3<>x|6Q6BeM2y;y{%4=qs|g!{pO`=CLS6I3vdB0wNZM5J!+vwE9O37)#2udcX8Kp3v@_3e$j?oK!^ zft^E^cm9hwWIK~5ScGPS9ZIK00PnqBami~mn$z!lvI6;>1s;*b3=DjSK$uZf!>a)(s1@K7;tHf0jL(ROh)7FIYiVg2pJA}Hw6JGn zjAv#}N=hmzDVfP&yhljrKSSC)&s#1)#f&9Ee!&b5&u*jvIhmd=jv*T7lM^J;7BF)q z)b!0VPAJ&Jc*wksQF=u~WYny}TY1LoRXvzaUaCGT7OlvA;@rJ90RuL!7jE&Jqk41- z48wSj1}tchaANgv(D2|nd%+>a`Rt`hm(B8=cQC)ZWXx;vr|D(%DrScIWezJZUeDYE Oa<8YWpUXO@geCxO0aVlg literal 1205 zcmV;m1WNmfP)6HOae^8z0viMyudayObFqR$uCF+BMZlekL&k*!!C%2H?5_|Gyl^5W#dd}( zPPj;UIT6SfPMspRI)T6fp=$&&v94InYGq6E%xX8bbNe)wccpn}e)G=1_Z>(`NJvOX zNcg{!y6p>|yFDSsl5AO`;myx4{l-@@{r9C(3EQ@@ZQB(q0BUaMdLSr-Sz7;i&cYQdy7UIl418h*tZjmB;5iG)MF z!$0kxq3&RXEF-p^;K^VBu<%as7fti`0l|%yrmf(*Eq@t)Ra^$3ad*JIKB~gEe;iLpNJvOXNJvOXNVpr64hkxpPyz%|i6Gxcqy?y?)5AB&H@K2c52HGZhlvTu+LjVPL}pa@bafSp2w|c^ zN4=i3ZD|kK&t|DeSHb)K>j*Q%vT?za!9dCO!gIiN;+z13k>OyLC>V~fFpfyepe(>$ z&hR2b4C6#eFc}*rF{>gpEKEj9S%979C587Ec_2>#fC65A?uWYf{!lSREsLhD@b>MWz~pi)o@v^O z^3@z=0cz$k)V$QRNRoO<%5%J11CDBu(ukpT(9ZdH6U5LHNm^C$l?4!nYUUZK{8$JJ zho|}LZG8gAiW;dmX;^@d|@G#vHLbEPts1rTGrIJy+U#xu4yJ^;%Ycy1ZzBxvFA zZg-RO7j@s;#Bi(@%=kSZcpYxmS{xUzip%UYFZr$h2OWbB^Be{wj7p5JG@B)?yWIJB_N& zKS~0e3U}oXkrghb7(7*O7r?V?XzwL{=c5v%n*= zn1O-sFbFdq&tH)O6qF9|32_C|A|fKv($ZR5T9%d;_Kb}2%*-VvC3}Q~?6VY1fzpg6 zL4Lsu4$p3+0XadQE{-7@=aUm8(iC{3xDsl%b?_Nv_%?i)n&7~!wcydCMNgDgB*pcp zJW$cl2wKt??7*qCAg)ENAxUEuml98CVPTP=h~p0CcbEEDWa+dbpQYW07*qoM6N<$g0Yo> A-T(jq diff --git a/Resources/Textures/Structures/Wallmounts/air_monitors.rsi/fire_detected.png b/Resources/Textures/Structures/Wallmounts/air_monitors.rsi/fire_detected.png index 61649013b5fb7ce69567493dc583d55c76097e85..78dac3a32821a661ebc8d57ee69a8aaa063689f0 100644 GIT binary patch literal 191 zcmeAS@N?(olHy`uVBq!ia0vp^4nVBH#0(_wf1V}|q!^2X+?^QKos)S9a~60+7BevL9RguSQ4OyKkYIpMh%1o3&cJXhDd~q{%>y8Zu_VYZn8D%M zjWi&~$kW9!MB{vNg2X)s6B82_m+ZAsTbXno95`@*W0ACk#0<9W4h+o9+8uE~k=DEV bB@7HHU-<=&&;NQ6sGGsl)z4*}Q$iB}E>Jbg literal 427 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7Ro>U@Y=jjH5 zQCxSYaTiCo<}Led>}1d8lk~>*xy+0CfhVsz#l=N~43js#D)U9->DA&-)lYwJw|Tzv z^{?%zl0|=4+&g*Sy6md;&+6m*s;7K<_4CS{-_=KW<8E3_T$}${>d>_v>ut@y$A77r zdaX~;VFtq?76G*e1I89k1s{gQP{uE7GThfRh1+W13S9kQ@k-X*6_ID(Nml<$y2`#p z-T`PY5R_S5?ejf-?uy{zlQHv~PVen%4*kmd)n`%X`o+e2Kr5Lzgi&0PvsvU~(DfhLIp=rm zom9FY=vG$xaxHNUcV@8F=^=YF6O2_>Y`y=lma{J$hB ri0}-m$)W58%jW$y4(tPl`;QIs8CG-O20T`+1)1vU>gTe~DWM4fs))L- diff --git a/Resources/Textures/Structures/Wallmounts/air_monitors.rsi/fire_emagged.png b/Resources/Textures/Structures/Wallmounts/air_monitors.rsi/fire_emagged.png index 310bb89d41b81d8450f699bd68e2f2bef1733fa9..20d4242072755f32631c9f95391efac3aa2ec184 100644 GIT binary patch literal 269 zcmeAS@N?(olHy`uVBq!ia0vp^2|(yxgF;{?b;a{cI(bmrN(TQki7yTeP9CDbRq+?cf6Trlut;(@o68 z6g-;?Dpo3HN@*>>9L2oSPwD1m753K}5(%8oLYR~zrl|43WrT5yUcA3OP?Gj$35Pswus~^YYyA$5L`|jy+taYm5{+{xu zGdY09F)&yx2wcaltA8$i_x}IC{yx{czSa9e)!*sYyUoAa+v%`fov+$(y8H9ZoIgdI ztKYr*`n*;<-s$z%@`t-C%YW5*a7<>t@&BXx$Es4X*_kd!ihHj48^&$@pt>dQzu%8_ zN=dio#iSp3(O#bD9B+>V7&>*Z0bV6d2Xu=gb>V0th1^KijuV}quDfq`Mm(bB$@={>7^f~jWae}GD>K}g|35orJ@l$~3}N67 zbM9_n5PP-Q?(TAl^H_dPf?_1-!qUI+Uy@Sa)|+=CN@@q4F-~Z4_2}*5N@&TIfZN&- zJo%4P*2~_DEB7eOR?}=S?P>E^=&Eq{9^;x+ySw|oXg;5KXWGs4%V+nPeYWf9y|{di zL%f0e)H~uaziM{ze9=_jz~Px7IO&|3j}lVUI=ueJ!lvI6;>1s;*b3=DjSK$uZf!>a)(XyfVP7!u+B_QF9<1_KV~K>fTqlDosYAFP2dPo&>ZCASrG>5^{)z4*} HQ$iB}<@qf2 literal 203 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=lRRAK%AY`iZ z(>S~2Y7MqsD#_EPum$cvo~O8^U!Y8rf#JY*rA6*8^Y`{^DlM8`yS9Ym{KTWLcK7LQ zpLa#D;l8)*#*PmdKI;Vst0CtK{ AYybcN diff --git a/Resources/Textures/Structures/Wallmounts/air_monitors.rsi/fire_on.png b/Resources/Textures/Structures/Wallmounts/air_monitors.rsi/fire_on.png index a98566070e504094dbfcc8f7872791b49336fb85..922bd014a42837b35bcf4621abb0345a26d5469f 100644 GIT binary patch literal 200 zcmeAS@N?(olHy`uVBq!ia0vp^4nVBH!VDw>HYaZfQjEnx?oJHr&dIz4a#+$GeH|GX zHuiJ>Nn{1`ISV`@iy0XB4ude`@%$AjKtZ7ZpAc6dy-1qtsw~ShS*CZgjQ`~rvVJ|e z4-{oB3GxeOFpjC6zHw!H8Bjpa)5S5w;&gI?1goSXYA^>bP0l+XkKJX|-c literal 380 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7Ro>V089$aSW-L^Y+fdyh8~B3=gy; z#hMN`&6@M>x6k{D7xwU137P8TWvab6Gws2PYx{Ng*3Qp9+FJ0pc>0%hf_(hb#?pc$Fo)LT(f4hum5MI=YKlGTu{(AWO=bp z-=u=u&MO^&0qG2`Yi&$mJwHW%R($`u zRa|BNWo<^uc)`B6=Q&SUEjQkFFIe#Avyx+JdKpQ3{T;Sh&fTbaNcb{T7tb5+B>$7{ T5xaI+gG}*s^>bP0l+XkKk44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`0h7I;J!GcfQS0%1l`4X*~EAX|V>h%1mTDJgliq+kk=#aI&L7tG-B>_!@p zBjf4f7{YNqIbnfW0;6C|fs=qsM-zvoz(MClnG6yK88YM7Z+rt($KdJe=d#Wzp$PyX C3Mz5{ literal 247 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=`#fD7Ln`LHy%o*Zs=(tKXv+7K zr`fW2zX!)fmea0XZ@#YIw$(-{Pa3F{A!L$>`*8ywuY1vgDz4r>?)?e(rm5fidUT5U z_Y174?smN=uQ199>9-1ed&lqj_>9%Ps?3?wPG`-X)~#~%Pwx2{6`NP{Nl2bI*u3rEmuY%`#MRr>mdKI;Vst0Pk*H%m4rY diff --git a/Resources/Textures/Structures/Wallmounts/air_monitors.rsi/firex.png b/Resources/Textures/Structures/Wallmounts/air_monitors.rsi/firex.png index 5ac3fad6af87c0b086f621e76eca46ad2ad3a612..efbcc8b92a927e84ac19dc6a82e7b282be01df54 100644 GIT binary patch literal 296 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfv#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6;>1s;*b3=DjSK$uZf!>a)(s2kuD;tHhM*w}b^c|}A-q@|^ejEqdVxE#dA zLqbC0nVCyUN;=XQX3d(lURQsQkkH=ucCA1Sj3q&S!3+-1ZlnP@<(@8%AsXkC6C~0S z)I<*am{a-wz=NACGY$wl8ccBJkl>WcUcsiwX);qPn#D_jGlG@fd@+ZFZeM^|uA7j- z)=dW61l+<3vo>yesind=`vS+~8B0Bwjx9WPjNSF=1X;B^&2Re31*Tu~J@8aKuH=5v h=SA)8=BWoc89Gd@z8-N{^$6$$22WQ%mvv4FO#rz1S%Clm literal 1451 zcmV;c1yuTpP)ImejY^pdx}T#NH=}s*Q?}#?8g`VQ=FmxR9?>xDT+0 ziv?{Vrdrow#ll74LT!qG3B)2Sxgs}%z46P8Y#;YBzfSV#naBTmpXUJ#27|$1F#Oke z_ZAN-<$hRJ;Am@0$&(m^t8J})$KnQ{3IB*;Xgb;MQUHHB) z8{%7zwzrjREB64-IgXEyk)|n%q5!27MNxn;2F^JsrK+YXAp{11ZnukOvnhY8*Xy$W zqA0ZND)#^Y==FMVT~|Ic#*ie5tk`iJ_`VO$xt0^EoSvSd+wCHXqA4FH#c#D*S~j%= zux%T093uz$(WT5RFDd%dVCHd7ev! zgCGFsd}^{A4u?2BJw*@%T281C$1%>&&tX}Xd`AcYV+?T|0|1)MrksdX(GsB3=^%S%^<5l|3`hb1j=%0!&UkMNv$R^)L)^ za&m(6^K&f+RAG#v-|r*KGCAfw&ztfgO;a2nA8XlFUIj*@5dg@U7 zkjtZPD^x+OJ^-dxrCzTG&+{-C43z9B32L!GMb3QdWFJh?xXX7#2wHiL`?C5!XfB$$E(EDmGWm!%MEJXiy z$0>HJdwY9Ib{7ipX5Rt6WR>^x`&j)ncs3sEiw^*IcS;Sg&^d9GeE;&`VbO_dll&u& z_Ru?oV`jyr?1HavZ-Lv}xe-}$ zRXrMwfGYQROCW^E$g{W-4}w4jV)8tH45Mq*trZxVq}6JnEK5*IQI;iwAV88NYs(9m zg>BpN8lEvGV->FJBFi%EuozHL07@yMC_<;xK~WSkY)%N-r~s1;heP{aPZJXKxh(Bmq7UDPtV{E2Vn;=ONaL&OPlS6HC$bJ0y zQQM}r03ugN zI2?j=jvxqR&VX1IbkG){(P*I6YCTDc5>APnp-nIvjpSTY6vb2~O4TGSZ2@fC#>vSE z!Y~A-R3<5j6uByEu?`{^K&(EiEP=oZ8=cXZL(2))|f#iyGa zx!IYOu&^ma!oy%Nn4A5vx3`CjyF2;({^h~LA3t7VQMS0U0B7Sd+JN#wW1ZO{XX7z0 zG|TS;k6GfM7nfB&t8emBViR@0*>|w4^$iAt!C?5G^C#NIjP@Z^FM9w0002ovPDHLk FV1kiQo*V!G diff --git a/Resources/Textures/Structures/Wallmounts/air_monitors.rsi/meta.json b/Resources/Textures/Structures/Wallmounts/air_monitors.rsi/meta.json index 7d2da746e0..78c8860d57 100644 --- a/Resources/Textures/Structures/Wallmounts/air_monitors.rsi/meta.json +++ b/Resources/Textures/Structures/Wallmounts/air_monitors.rsi/meta.json @@ -9,32 +9,7 @@ "states": [ { "name": "alarm0", - "directions": 4, "delays": [ - [ - 0.5, - 0.1, - 0.1, - 1.0, - 0.2, - 0.1 - ], - [ - 0.5, - 0.1, - 0.1, - 1.0, - 0.2, - 0.1 - ], - [ - 0.5, - 0.1, - 0.1, - 1.0, - 0.2, - 0.1 - ], [ 0.5, 0.1, @@ -47,20 +22,7 @@ }, { "name": "alarm1", - "directions": 4, "delays": [ - [ - 0.5, - 0.5 - ], - [ - 0.5, - 0.5 - ], - [ - 0.5, - 0.5 - ], [ 0.5, 0.5 @@ -69,20 +31,7 @@ }, { "name": "alarm2", - "directions": 4, "delays": [ - [ - 0.5, - 0.5 - ], - [ - 0.5, - 0.5 - ], - [ - 0.5, - 0.5 - ], [ 0.5, 0.5 @@ -90,30 +39,25 @@ ] }, { - "name": "alarm_b1", - "directions": 4 + "name": "alarm_b1" }, { - "name": "alarm_b2", - "directions": 4 + "name": "alarm_b2" }, { "name": "alarm_bitem" }, { - "name": "alarmp", - "directions": 4 + "name": "alarmp" }, { - "name": "alarmx", - "directions": 4 + "name": "alarmx" }, { "name": "auth_off" }, { "name": "auth_on", - "directions": 1, "delays": [ [ 0.1, @@ -122,33 +66,17 @@ ] }, { - "name": "fire0", - "directions": 4 + "name": "fire0" }, { - "name": "fire_0", - "directions": 4 + "name": "fire_0" }, { - "name": "fire_1", - "directions": 4 + "name": "fire_1" }, { "name": "fire_2", - "directions": 4, "delays": [ - [ - 0.5, - 0.5 - ], - [ - 0.5, - 0.5 - ], - [ - 0.5, - 0.5 - ], [ 0.5, 0.5 @@ -157,20 +85,7 @@ }, { "name": "fire_3", - "directions": 4, "delays": [ - [ - 0.5, - 0.5 - ], - [ - 0.5, - 0.5 - ], - [ - 0.5, - 0.5 - ], [ 0.5, 0.5 @@ -178,36 +93,20 @@ ] }, { - "name": "fire_b0", - "directions": 4 + "name": "fire_b0" }, { - "name": "fire_b1", - "directions": 4 + "name": "fire_b1" }, { - "name": "fire_b2", - "directions": 4 + "name": "fire_b2" }, { "name": "fire_bitem" }, { "name": "fire_detected", - "directions": 4, "delays": [ - [ - 0.4, - 0.4 - ], - [ - 0.4, - 0.4 - ], - [ - 0.4, - 0.4 - ], [ 0.4, 0.4 @@ -216,32 +115,7 @@ }, { "name": "fire_emagged", - "directions": 4, "delays": [ - [ - 0.5, - 0.5, - 0.3, - 0.5, - 0.2, - 0.5 - ], - [ - 0.5, - 0.5, - 0.3, - 0.5, - 0.2, - 0.5 - ], - [ - 0.5, - 0.5, - 0.3, - 0.5, - 0.2, - 0.5 - ], [ 0.5, 0.5, @@ -253,25 +127,11 @@ ] }, { - "name": "fire_off", - "directions": 4 + "name": "fire_off" }, { "name": "fire_on", - "directions": 4, "delays": [ - [ - 0.5, - 0.5 - ], - [ - 0.5, - 0.5 - ], - [ - 0.5, - 0.5 - ], [ 0.5, 0.5 @@ -279,12 +139,10 @@ ] }, { - "name": "fire_overlay", - "directions": 4 + "name": "fire_overlay" }, { - "name": "firex", - "directions": 4 + "name": "firex" } ] } diff --git a/Resources/Textures/Structures/Wallmounts/air_monitors_xeno.rsi/alarm0.png b/Resources/Textures/Structures/Wallmounts/air_monitors_xeno.rsi/alarm0.png index 77178f855a365c1dbc183b009b74b9b15fc8bbc6..97326dca08ec3d7fa5ffb98742c653e48dabf151 100644 GIT binary patch delta 613 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 ZqkWrURg|MMj|?cvJYD@<);T3K0RW3JAGZJi literal 17732 zcmeI4dpuP8*T=V12XQ2#Qpd#ULYNCP!(ikZPUAQ(k#ZR`dzg$F%(#o`qLd*dQlXTS zBq^OaVO$d3h@28~RCG}&(Zy8a*)GZ1)x6I0Jiq7l{4?`<&Fop<^Q>0)-WzOQy1XK;7_wKxj4q7@LL%k}3Wm2jK(y(wQde1Lalf2s+h7-4#nhkpeA1 zKe|n1Fz6I%?@WpGrx;SzO^Gtb;RHw^0OXJn;Qn4yMuwj+WL_=^)EQ-H*cwBp{JtVPU#qdb+G&UnJVl&=85jATbynXoe0ug2^F= z>oD0GlOmsWEI~FUm>$TXvzUl+U9t}=gkz$vKAvd$HFaG9fzyeY>?w8-MPxWR5Q)}B zA-@$wrA)^Jh6FPvPK`=If($SKWOCS09QvDafqpCwi|xnyPReQbcN0TvLLyD){^t1x z1bj0!n`0FUA(%q?%}BO$L?DQC1lg>RUjK&bqh6F5X4GKd*p=O9o&V*@@SX4SK;}G1Y0JXLuOJyTT3D|pi8Gy2~>SN+6Rk4>yT+=tPWLQ-%!T@ zXGqh*`G8mujYH|_f%+2=Nu-(KUrAfCC?Vt3G9^ugr1kM+eH;c&)u9<0Kz)J&NgL99 zs5&6cM-NZa_aXaW$)BZXgnuRdYcL(^bY#YiIpb&l-%arinXgjW(Am)bjF_=+q1`*t z%bdWVe~x~3Fz6FKDUck@2FEMTME!HgO*gUW9yJ~_QMm*%WxSgaDdPnJQjL-S82xfu z(~(nQ^sg82-%*~_pAr839ASPSQ&d4sN=?lAz6hH|ga#44BzWX|9{KyWfxQY$V^|5N<@C%z@G>H-O5d_=RYg! zb3^#L5{<`yjtEc{LpzE*Q9Wp508XN%5%Dl{U^VCxuXB1Dojh9 z1O`O3DaIw556mmZ1p^}56yp-j2j&&yf&me2igAhN1M`Y;!GMT1#kfTCfqBKaU_eBh zVqBv6z`SByFd(8$F)q=3U|umU7!c8>7?)^1Fs~RF42Wn`j7u~hm{*Jo21K+e#wD5$ z%qzwP10vcK;}XpW<`v_D0TFGAaf#*w^NMl7fQUB5xJ2`TdBwP3Kt!8jT%!5FykcB1 zAfin%F425oUNJ5h5YeU>muNmPuNW5$h-g!cOEe#tSBwh=M6@Z!C7KV+E5-!_BH9$= z63qwZ72|>d5p9ZbiRJ_IigCe!h&DyylKJw`Cdh=I)C_|j$#e+)K^}UX6G5?YBmqF= z3IO2l0D$*n(D69{grESR*Bbx`2LV8ZmFiVz4FEC^Z7t25!|(Nbc-eTYTQat+BIuVQ zwDo><%|mVGE&gfqwdU2oJGFB=O)Yh88g{Ex`I+UvxE4l8f$bNIwYS>vFV@p;>L$o{ zY}dR%WHh`~kJuuuvui%@{%P~$tL0J?-#;>SJk?0t+(UhNM9;S|CzJiM<>RHUhKk`M zuU|LdA5^`sTr6iUHKep`;p1|I``$TQx#UGjRrsIXgOCw7TT6EQ-SXP7LCQr?#P& zE04rQ26j8U%Tx*()r{LsX>9{peoW@9fr^g~!jBI|N6$ZbuQeFqW0cOf@-2_Lph{kx zWzdq|tdM@}O1@-4;|5&iy7p>Q0En{py0rh-#=NT79>Gc9@`_!5#qCW1xci>QW-!mz zYzSz$c_RLy2k%w|BKwH-F{Ei}_bT(HBq4Rb!U>M=@fUOQ_E@KwD5>6&TuU*z_Dsk< zc0}S$-uq^2)2M}G9tlwm?`rZc)5`rMln)Hm`ATXH+IAk(aL1Zcwr-lM=u>cqr$`ZC zj^ziQea%Fho(a(mKKiWXGq4n`iW46iD&5_aT7?M_}&ejNAXLoePZ?LLIU!U0xI zQPSbImLNsbTK|U7!O@k^OI#k76eJv2?U~i?p_jV3rUMKTcqp%nc>ZIFN$Tbyret`~ zx#P~kHwLX7DPcCyITR&2X&J_a#TY*6^IRxowq#tpykso2j#2fS1C`&Sb|!)Xt*Pqs z{+B73Z7Q0cCqqMrj}8aRzdgN7@?7(v1g^N`@4g+{O^cSPz0#Ht{O0>YZa~I#lPCUc zMa4N9rfW2;DWHYaa6NU{^JU7WFqNQL__OML>$?M4i-hJXcN_EGs(Q6yxJi*WQ&yK| z2xtbj9tS<+RW)CAhf1z}?e&+|n?GZ-&>cmOxTU4i3_-M8e}<{xGy_}R@8hi{d#o2rckpNyf800+1eT;cu04gL8!Y48kAJ(p|CQ;;LsHkLSmC3LZG)YW zW@Lv3-32DC=!NZSwbnHq+q5;WBg`^XyD8k_!4mqL!^^7GmJLe#44atXj@y-6*jRvy zmiWrsCKh006R$UrV{y7bk)O38qS&60n5?k*<_Y6{Wmi7nj6IgU-HH4Vm3711vhAnD zKVtElLN8r^r~CS0RYunPD1pHEt$S|uK>tg0=jPFTBTg-QMf@raS;4h#idwO-UlTZ( zw>XVB_J-o@vTAA51$|0BWBUc;q7W0A!=skG6t7mz%T>P-Z4aqzN$ZVqulY;ha6DTg zP1>aevH#HnhruiToYaM3^eowm)_|T8jlR3v66S7bd074;TG=c8p6tEBB9~kJoWG2P z1EBBdPx#y%k}%hn7&_nYH#1LOMj`Ibjwrw8GkHd;axt@iPj#|M?7Z|$2ow}38noY! ztMmO8Z8)0PW1rDg;{-FtyY>Y|@>N zg=Cf;Jen(L#!FgmORPVt?SOdtt}Y~`@@0}rxPUp*gaIYCl)jW5_s|Em9}4#6WZCCx5Y38;?r6#F^yAZ+Omlad)pa*{{m;jXc5_Fu(rNF|A*B4zStd6qeAfm{K@* zsn%h{)`T4=SV76JBv;6mK}er<)l2mi?UOHvq$>E=KXTu3?^I=-S#aowiwY}=s&O5p zJwlmU*~{}2X)o9>7`caIgLZrG0jk?m9~Ium)zsj#G8X_X^yqtkzB>@KusSaC+_oUM zt1ARO%DTA{XKHe_sJ$Tj!lSU|Ui#;%ymK+pu9x$0;Do zGubQpn8LeFYE}GEDI;9Rh3wri@=EJ)F7rcb3oU1b@3so?OvcO(tT-SO?wyLyvULU#Ho^(IM-M2y zRQ!COi?-TUaccYH{?-Mk8H=j9{-*}*`Xl+Bb#eKzI!V9R7TwYkJct@z9<%yyX+#D0 z1k{fA4&zIUUNwF=QmmTW*S`AG@SvR^4*J`NF~J+3wX@bFa)b&D zoa(&qcKJmjwqzM@H2bz|Lw;=2^EKJoF3Aa5O;^=eN=li1ZEaR@0u@Yjg_qUOj7zaY z*A3a|eNie5*Y<`>hWS%r4`Ow77cSaO<-5I>g@*S}8Ra)PV#} zWVHV78eDc&K1)K&!vVqW+nKq$T9$iux7SEf!ELKrW>)g=JwPQVQ7!y|!^t1P9GxIdH!7hqW=oZ;T~}WUo18OLSyxjxfW7)iW!-@`4iYb@J}a z%YCvpcW>#98}856mtDLhf5_klVQz7k-j64K9SGxl|6IEB{W|}PW1Vc>A*WwLg=#Uc zR;H`*yaPU^Y@{e5g((z;we}cp4r&Xv;6&`}+k1Kb?WB<<3o;Kh#XORX!IC81Nzp@R z=e0>3WxUqYi9MFuZ6)JO+B4hbkCl=Qf+xhIdryhQ<2Ptl_4X6FGp;YOrH=oZ9!>0608Aq&<@ojWs& zQs?z#Ec#puaJfI<&9*?mV@{USp zmS(1*@%u3oqpl;H8>HQ67Kc@~@OW}hwF<3oH7+W!y9WI%VB5y{K@ut+U93|DQlS*X zlV|EV3gw+!Ev)*|vlUu49L!6l^6Q$OHKiBCk9^=V*cPwTe5?7nWAZ@!Rb3NlZv8^& Pz8J8zvbQWU_ul?rge;rc diff --git a/Resources/Textures/Structures/Wallmounts/air_monitors_xeno.rsi/alarm2.png b/Resources/Textures/Structures/Wallmounts/air_monitors_xeno.rsi/alarm2.png index 3284ec9f01a71008a5487f20af1ee4fe7f659e05..4fb0178a74ebc7107469728d7fd831b01eb506ea 100644 GIT binary patch literal 664 zcmeAS@N?(olHy`uVBq!ia0vp^4nVBH!3-p)I`?e@QjEnx?oJHr&dIz4a#+$GeH|GX zHuiJ>Nn{1`ISV`@iy0WWg+Z8+Vb&Z8pkQ5qPlzj!mQ~Qy)e5(E3=RwHOv>phsGe2d zuzt?m>t}24-(q6DUwiLS&+WI{ul;)S{qNDE|NsAoYcXbIh3iV^z5&!&JMBJDZ_lDf zK<)E4KHn;IWBbv!$mYCx{|niuOfSvTK;r~Ug8YJkG%7eOd-fgBUu~W)jv*e$*G}yX zI%FWw;{AtH?7}Uv%w8@rm&*U*Uy8~#r%!lop&Wf{((Pxb)6^!5T(u94kqy}3BdD3# z)x>1*d4>0-DXk(2Eyvc2rZN^Q3cCfTY~ozgI-k|fMj}DpBf`IyH$gQaaGHPW&J7tV zb$khzSQu6aIHVfSOptM6n6~u#rBjv>wv0!oaE4j5icU|qXN_1W_`zdSr^*7(hUhTn za)tuqOD~H5e^-n12$;alIXfs_ez!JPgQt9Z_>q>(`^i_@% literal 17694 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 literal 16251 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 Fe*rKSeT@JB diff --git a/Resources/Textures/Structures/Wallmounts/air_monitors_xeno.rsi/alarm_b2.png b/Resources/Textures/Structures/Wallmounts/air_monitors_xeno.rsi/alarm_b2.png index a74d3bfe7b73e4a41567fa6a41f0ad1b3437ac4c..f02bf1eecec89c7cf3d4a0eb131565572332f92a 100644 GIT binary patch delta 352 zcmX?E|Axt~Gr-TCmrII^fq{Y7)59eQNGpIa2Q!d#S<-b3NHG=%xjQkeJ16rJ$YDu$ z^mSxl*x1kgCy{lcqIf-nQ-Dv1D^TYD|NlTzRzXuvTY zZ>gt?V~EA+x07!39a7+NI2d$XZL!t!|NmD7gc(_#Ose@RP=9D?yAwmQzrlV^wU6Ta zgaeLm5G@FFn<>C(-O=F9F4B06Nl7J^V}*#8PYV1weRS*Fx;!2 sAms3uz0aw4d7~KLmwl3RF3#c1uP)@ziwSpO13H<()78&qol`;+0Jp({-2eap literal 16329 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 V3J2C#T+{#n002ovPDHLkV1k(XY|;P# literal 15309 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 diff --git a/Resources/Textures/Structures/Wallmounts/air_monitors_xeno.rsi/fire_0.png b/Resources/Textures/Structures/Wallmounts/air_monitors_xeno.rsi/fire_0.png index 39d4e989710b4834c22f78434528c1e9427dd5d4..d0c4ca72175ef205c7cf45487ca523e725fb0ce7 100644 GIT binary patch literal 167 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6;>1s;*b3=DjSL74G){)!Z!ppB=CV@QPi+Y1Ld84Ng_1NHOfNbU~ne#EhK z;fMK89%v>3)i9WQ-kKVD|J5VO(}JP1w5_k{-#EosqxFd4fTC3KCW9BgAT^$@elF{r G5}E)3v@+lT literal 200 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC={hlt4Ar*7p-a5$ZtjNI-aOujz ze{pAS@I5^k_se`i=;P{poQek}6qy(p5(;Np8Wo>8m)vzm=IvFt>aCZQY*sP-b>3g~ zW%YT# sY*@Ege|dFt_V%|EINmo{fz?U>VpzJt=bN@o|6GtBPgg&ebxsLQ0B?XzrvLx| diff --git a/Resources/Textures/Structures/Wallmounts/air_monitors_xeno.rsi/fire_1.png b/Resources/Textures/Structures/Wallmounts/air_monitors_xeno.rsi/fire_1.png index 765fdc6e594785b9925b5ad71880b815323bee37..ac1799194646dc91b55fb6cfbfb7136aaed7a286 100644 GIT binary patch literal 170 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnH3?%tPCZz)@#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6;>1s;*bK&6L4nDKc2iWHzAPk>K|E0E^$-p)JoZ%Ii>)>3DXfs7?Ve!&b5 z&u*jvIZ~c3jv*44lM^HsHT-0la&SB2sRz0a(-$!@Fnp6^I&|UPhBBZk22WQ%mvv4F FO#rOLE&c!i literal 222 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=OFdm2Ln`LHy>*cDumKOlfeYV6 zPbkDLneVXtqEY1H`3?&wmrQ$L=VVrpEPa3P7a=EwIRrL^nFv_e2$2&ie0icZ$<;J+3PQ zZ3cp$rGLNF{jq!cM{(a1k3*fi+ysA+N{8k;A=Lmbxm2aC OAWfdGelF{r5}E-1>r!|C diff --git a/Resources/Textures/Structures/Wallmounts/air_monitors_xeno.rsi/fire_2.png b/Resources/Textures/Structures/Wallmounts/air_monitors_xeno.rsi/fire_2.png index 7f004eb9b7b4b48b6035bb5d258b82f8b5c8c955..7c6c0c80b5981565dd6bd5baa41a7d9d262a9455 100644 GIT binary patch literal 172 zcmeAS@N?(olHy`uVBq!ia0vp^4nVBH#0(_wf1V}|q!^2X+?^QKos)S9a~60+7BevL9R^{>$J|V6^dXY5OJ6Xp6attz#t0IAX#*!ev zU>On3M%uviFlWJhE=VwJIJo7cz^*5@TVE}IsSxp5Vk+6S{i^~zq=XZ^-nnwk!x@rG_M|V?G+rBI7uDtN#b(PTn zDqXN6S4k;p`;N3@M$^Ptz(#@zhsRN}z5cf+{9JmSExG%)Wqlw++JdWa75Q~_&u5uT u`?O2;dquptdA)J?v!HYaZfQjEnx?oJHr&dIz4a#+$GeH|GX zHuiJ>Nn{1`ISV`@iy0XB4ude`@%$AjKta&}pAc6dy-1pCQ5V-cS;lv#82`&L{J+8Q z{_y*&Kncc@AirP+hi5m^fE+DP7sn8b)5!@Etcw#iFr_hv*mX0{V!E6VvM-uz7L#*g i$iB&3E5mwn7#QYwFrD65V|Wp$i^0>?&t;ucLK6Vdhd4L@ literal 351 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 diff --git a/Resources/Textures/Structures/Wallmounts/air_monitors_xeno.rsi/fire_b1.png b/Resources/Textures/Structures/Wallmounts/air_monitors_xeno.rsi/fire_b1.png index a5abb3a23a8865ffe49805768502ff9b22f71f36..195e4ee2bd7c7cb542c799a553bb60c49b0b305e 100644 GIT binary patch delta 277 zcmexey@<)KGr-TCmrII^fq{Y7)59eQNGpIa3p0>x3`su@q!^2X+?^QKos)S9_@75dDT}AahEB{DOfr!{*6pvw&2gr;B5V#`)xg1xyBR%*>h_xVWY?FsLMi z?v>`*rVlidg{$R|gGq=&(X%rbX6jAcd3^%QvRyk|{Nj3D1uY(R3UIJ;ZmBpH=PK-A zC=$vV!f-YqrSZavnZfD1DwOUpmcPtf!O#{juurswv!OvjB*2-0p-7}o|6K6r9UxbD My85}Sb4q9e00C7~`~Uy| literal 15867 zcmeI3dsGv57RP^pQsmK7pIGZ7q^C!^HJQl^lGzY>1PZP}6soWXDr05>BS|JCg9+e+ zRcaq9i;u3)D#iNfZWmote0A412Op=RyGTWgQlAxdx5dg@*SeDjB>aFm^t5~SpUFAN z%>CWp{oa|+{oP;YpLstm_06#0F~I@Zo_*#M{~J1n@qfMf)7$UMp%BmC##BSHa1 z#0Y08bg0gfK;~1)B~~)MBsD`{QlM86!pWLowF6@XOeBK~944dLhB;z{E?ta0cMc;$ zfolp=5F?CpCKP1q(gX>#l@ut%Q6fDW6)lKXi6x5YXnFJ`ffSV}5LAZ9P?1!I$x%!$ z6?i^EO)z_=wh{(xhBnEQjt(`K8G%1VuV6xqVA99zD$G%UqzV{o&cOwnrC z0Wn1pm{Nw~GNnW%lE@^4h?L4DA{-@g(Hxlsm$0`bQ7EEa5Oq4=@LtkdT3_Vs7LPQ+ zN~21Jk~A13B0{2#^;zt*ZrRoA+RM_(!k(jD4kP8-lPtK^Mmjq#M%dMI-J4kV9_5U2buNbM zox7Pv?`#N?P$NA?y_eM;=?SBH7jR&d-TFS^{pYaflV+}la!a{p^)F(h4U8SPl5u(L znixp0yH$IJ!SZUvx%(Tb|3M*a_`IK2hJp3b&nW}6C;k7*;9bS~eB7Kz5*nmy0e1}y zta9#p_Ux>#4WV}@s-1sF7~93{io#vpBT*y0#=M!`^D~{@Xe@HgkCvkB2az~`J)ypC zI5dkp)YlD%dL!R5Q;bIH$p#JkL^=O6-5Yv3`*=rcq7(|5LXE(~a6}sAAdQ(?irsl_ z&iy1x?umgNeFkRr7wF^g1iDM*^C0HxLH8*8n8!Y0BHfRez1p*T7yBhoym$0VszO?P z5(o&l$>ZYY19^E|5D;#Y$HmPD^76PKAlxR8i<=MR<#9nkxJ@1xHy_B$;RV zK9HBk1p(nUd0gClATN�>W+bxVZU1ULF?&gxlnCar1$^JT3?bx5?w;<^y?oTo4d$ zlgGu)2lDc`ARyc(kBgfR}86 z3j)Gz^0>J9Kwcgf1cckZj;Bw%?I-GxF8_hCXb7o z59H->K|r`oPF%s>mo`Z=`=+LyeI+w*vlGgwzTLQq7=j`zt0E$om z?&Si2tpgyOUN!qv5&!{fQ?zjzj+XlyB?VVvN0e>(AZ~Th-a%7Vije7bQ5z*e*b8B; zO%lC5Vd3JBOY19|YT6pI=c26_%^GCo@OZ&q<$C$2OG@MaKt4%5l&*g|e$f3rliL4Q z+Sz)z^X$?I6C+D$EI=f9(YT&UdV8782@%pu90Sw|x1Bd4G9ugZQ{MBsqNA&hWdP zPXTx-ak}Wz2LHzkCi}&0vwa^_elAK}LGH8dE7=-&bNab6-{08!au2oc>SrC2M4__%z%>U-YVWQ1F>EsODga0DVwPf{n++w;-^ouA5**i zknB3D@%-#-8A-{0XagO=TdU(wz74({q~En4 z=$7wJ{r7BXLPJ#KnIUZTGRBvM0Nskh%{ShOja)r)!>~}cf>{Ez;OP4gjyt{^=cqZd z=)kDz?PsqU&W1cblu&bR)Wbk>Ol*0Yxv;zD%G-AnN#f~+BS2vCO^Y7yXIRQJLy?$>>+dBvo((v2jUrAdE5BN0-Z$5uC;@QGQ zm#a@ytv~Mf$(6Q?;vE$i511wdMC>6|YUP<{o5D5wUzutzxRA1AV|eYj>@#7(QHvAj zZ9jMEMxfwC_%ijvj`-{TjqNYu>Vpko(d~D`)(j=30qcf^POLk7^@sS4!?g`-av!#5 zE!uc6uA12K-p)9!ZsoI+O+{OO|XXVTX diff --git a/Resources/Textures/Structures/Wallmounts/air_monitors_xeno.rsi/fire_b2.png b/Resources/Textures/Structures/Wallmounts/air_monitors_xeno.rsi/fire_b2.png index 696b30ff26d3d9e14ce567a351dce70340a7415e..d1031d6df6537945081b1cc8d014d16005b4596e 100644 GIT binary patch delta 304 zcmccJ$he2et~0>TotI0Bi-CcG*VDr#2uLe{Fb6Y`bXn4M3`j8+2e~^jtUD+363Agm zcl32+VA$Bt{U?!iqM~>`gK>aQh$~P=S0~cSs^tIw|D1-)MMOlTrKPpBw19$o0>ze= z7C@=sz{OGQ#Yss?B_$NrSj4?7#bzbRysj=qN7mwbit+I1OPCvM-{^0Z*v5eemYZ*>(s znU-+un6=i~VMj+3+YO!<;VB&J>?er@9^w&R5NA?o^@OwLhtpiesZaK|>)1&Osc;6x qv{moW-^AL#T_V=_%L1`o_ZawQ&J~zCBXNB)$XTAQelF{r5}E)nq-QGt literal 16603 zcmeI4dsGuw9>*_80YMa0ii@_5k!n{7GkFm+hJb=Ls1f8*vDM0CW|N~dL5Gt_f2!k80)!y#Y|f+Dtf+O<8#wDvLJ6@Gn=_@_95F z!(Sj(qiRz;rK42^W-7H{UK&x5O~^@ptTI4h!x(`a%8K)BIeLQyv&HaTx)^ipY)1Gz zR~Kt`41c$RV#7^{FbYKm z3L=T#7*noU?>aS-Kqx(xLm8|VCQdkDoJnW28ZA2GAVc=L2OXH16ScZ`>;ca=CuhK+ zE!LUK83f%(2aL3&<(nuZg|ZlP%>*@bIddr!2D*AHt?iqfdz74>LC>AC(Sw9JJ?=19 zD!6Az!CWgAZ>Dgo(VS*9>Xq&+OYT9)i;s6@74NYHw1G6{S^lg*;E=xg?o*=@a4V%0 zp(2R@jTWHNG@%GXLTZ?GO+@1o0V9P9#b4F7}v_h zaKc&5l!S9ZP^1F6r?v02dLz5T=>8LUf0W(&9^r$Jk*A{!YzxXQTMzX8}QXlmCO6 zbFajEYhuq`qJIrlI3FZ1rv5Uu0C&|rp#tgG)|WHx{u$0Xs?T-xmx)kjLxj%n?odxR z9J-J_)YA=z_C=-}Xsc4xJsQ;P5#@Z^ao>tlnFn)987-BHr3wUYh9i<`8>P=kpqYE7 z#d#-)W^RS97}zmj;KIQIJsjPE?y2&4gmzU=cPsON&ipn&dVd`BE3CcupFi@T?~49N zRY;2)1Omcta=6&}Kwb_P1ccq>aIy1&yc{kF2)oJQV&?;SIb0ABc9X-!&Ij^xxF8_x zCWnii59H-=K|t6|4i`Hg$jjk^fUuh!E_ObUm%{}CVK+Hk?0g_EhYJG2ZgRNT`9NL{ z7X*ae?Vhcoe$*Ya6v%WO%4}3 zAIQt$f`G7_94>Y~ke9;+0bw^eTCz>19>@I5D<2g6<0vt>$a4EdB--7d71V=$*5H3MO+@CN>Kw)@F)O|A^>i7G5enY z$VCBY&jbJ~1t840X33#h0Ql@rOqiZ#JKa$>T{rge(W|<4P#ZJL4^1vlTN66EvT)s= z<#A)`S3Nvze_N*iK5Jvq2>GM~-zLbGgl?E~arX%2p0ZcQUcpBMoll;O&I+y$66nVB zr!O?#2yps3eBckf z9e@XhRVK`PCN4efncUG4n}$5L*50wh(mZZ_`eOZo_b-qC>-qRQwnLKO*B-t4?t!rI z8IpDSU;I^XdA~9Hozi`)PNdGPdG^Cm;c=36q{yq8cVj~w7GrA7dW9!H(VRqY!8Doo<=9ZUL z-B>~Awmm$n7CbDyAUsFQhSgsz#mB5zIWjh*?mc5|QHgQoun7xF*G`%mlkVf#6m#(N z*s``ZzlPQU3B;M&tV}UBY_X_iUYxYyMnD);1{0+v=HB`T8D!WgrVv(@=%&m?+>(`H)SbQV*>#`Mm@kRC87mldr z5Bb*6aPC4awWxmFrjDuMrl5KD{yz^7?JC-H#QbWNq&U2e$(>S@ z=#z-VrCM`c>U$Z55s~@+!W~T3G@bU*6htJ>3EUhG^1qz@^Pv}7_ijmh$iMjQ5h1a* zPlLdpZp;s?O1YC+QXV^}M(v0gzu>9Op+8P`jGQ>%`^lw8EFluHT=&f*)sJE&L$M1t z+K!HEsd>Hr?~98o&N!Gq>QqzgSK7v0L(!xwM{7%d_-RU%3+Wgz^ zE`Dwsn41*(w|(hX(y!W2`d)i6#>Y2V7(}kEdFs~4^EY*oN6P;adSZ)R*;YLyO!fTs z(RgT>{(x<(-&f#h#Shmgfhn%MH6SFhJ*h*yer|Np>F1t#D0#^_uRBd48B-T^O$qY9 q75SR4s^z(2zePTd>3&zf2inz|C90d^7oGopAaUlrgq<@o3;zY)j?m8l diff --git a/Resources/Textures/Structures/Wallmounts/air_monitors_xeno.rsi/fire_bitem.png b/Resources/Textures/Structures/Wallmounts/air_monitors_xeno.rsi/fire_bitem.png index 7419752e295ee8697995559a3aed23b3001c5cb6..978f82e48f1c52d29ec181ba2cd09ede1c9c4bfd 100644 GIT binary patch delta 216 zcmexY_M35ngc=Jo0|P^2NcwRg#aJBV?!>U}oXkrghb7(7*O7r?V?XzwMAnIl;`I!2 z0X`wFK$-vl|BHx-NJ~p=X=&-|L|R%}SXq?>2QDrtDS2#dxDu#>sU*lRn1P{e@>vTY zFT&HsF+}5ha>4>80T*Uw%>X`D1ICXXd5rb&}- zrFhR_Iwrt)`eX)^M%$uQ3WowVZ&80@qH5Y={Xp-n#*v5OKKFxceHfGa-AZ$|8mt3a O!rWC>b@-I<+zb%))Bx?5K z<5LCR-ZL8j?|G%YQ|}Bf7bG=q6J<35ZJBry%?7}?IFl5m^-yObuvLQbg#}b;5@msQS1$1rh zMPKi?G#Ck)&TtD8R8x>~+1yr%b9)$%*JgKlJWkI-hUe@qmUFNU&dNIkCnq?0CVyB0 zHR#NjlA}UvXlXtjviz1FT~7)un@*=~X@^Zsb+dM_*UNG|%kx$=!>aWsbTMO1X!CMG z3UNYElTu1jSJVV!#1$iIukN>4j6}sFe_!!rF;POxvqKcwjF@EYHjb_2Buhn~WN#{# zy);>3VGPD$Lf4R=y`o>TN7YrWN1Y&LQJyd{T9a_Nn7iWj#^V)JYkFfJLXbyV(Nk;h zPeQg8YHDvvf{lIXR_0Z@dtHf^7H3=}Lz(c}VMdw2%}{b~*{zUUAs@O|A((=quBO^m zH5SP2vX%luCK$}_DyFVONyutid&bA&E~WJ@MS~$xhXJ1BomS3mH#G#c0)Fq z==QOtLDS6Qt`dT3OiiK7f&qt*tu$=%%I-9wIicxdLW0eq02;6Xsc&lv*x?Ho2FDUYSx*rxRnQImXrh+Y}YTl%;A?G_*haP5Tz@-fS;x zgB!+=7KE6R?MX>7r9q?O{FXw=6`NSGM;SiZ$`wS(=w<=QCrj#$> z%)ZnP&RQ|q~?J% z=xyln4hGyVm&4^_@nPJfMajTeXGlSvS2OyF17*tk;6g>mu8AB?Lf$dARHg^9Yz^i{ z(PJKZ!eon&m}TWz>|%HGq;yAjGb$E~Cc%J^O^S=m2U9673<%kzxX64kmEyvHkWGq< z%m-5`E({3Sq`1g@FqPuMfRIg!i_8a8DJ~2M*`&D0d@z;b!hn!Xii^w#Qz*e01bw-S!J#Umm-D^Yyx|XHM_GdFR7=!#93> zf7ZJ@HZs*hXzbh=Gqm%U+O2Tinqh8r-#35WN*>w?2f@&lzpFo<|G~j`MmzR}?tSU< zhTT^OzjxPz(cW6n^8CiPj-Q%(;r97q-{RE^gL`+)3CTy69o}^4;rC{5`~Bj}k8C@6 z;@sfSYs+VxU2^N(Q@8fdeDRw8^OOUjPxh=19h~}W=O6Q*e*DrfNG@z!w7|CI#AAbx pPJeRgj+MddmK1pKSk-sIy;DHCP5*542D%h@IOr7quu}j diff --git a/Resources/Textures/Structures/Wallmounts/air_monitors_xeno.rsi/fire_detected.png b/Resources/Textures/Structures/Wallmounts/air_monitors_xeno.rsi/fire_detected.png index 61649013b5fb7ce69567493dc583d55c76097e85..cf32be6f17c82ab9e68565d63190c038bc27d583 100644 GIT binary patch literal 191 zcmeAS@N?(olHy`uVBq!ia0vp^4nVBH#0(_wf1V}|q!^2X+?^QKos)S9a~60+7BevL9R^{>}lOiWBzT(Z|jZDrDVaNxiJjz!WE5;NGgJ1{UaYj?x}MOyFb bmoPA-eB~E7KL6`Qpl$|FS3j3^P6U@Y=jjH5 zQCxSYaTiCo<}Led>}1d8lk~>*xy+0CfhVsz#l=N~43js#D)U9->DA&-)lYwJw|Tzv z^{?%zl0|=4+&g*Sy6md;&+6m*s;7K<_4CS{-_=KW<8E3_T$}${>d>_v>ut@y$A77r zdaX~;VFtq?76G*e1I89k1s{gQP{uE7GThfRh1+W13S9kQ@k-X*6_ID(Nml<$y2`#p z-T`PY5R_S5?ejf-?uy{zlQHv~PVen%4*kmd)n`%X`o+e2Kr5Lzgi&0PvsvU~(DfhLIp=rm zom9FY=vG$xaxHNUcV@8F=^=YF6O2_>Y`y=lma{J$hB ri0}-m$)W58%jW$y4(tPl`;QIs8CG-O20T`+1)1vU>gTe~DWM4fs))L- diff --git a/Resources/Textures/Structures/Wallmounts/air_monitors_xeno.rsi/fire_emagged.png b/Resources/Textures/Structures/Wallmounts/air_monitors_xeno.rsi/fire_emagged.png index 310bb89d41b81d8450f699bd68e2f2bef1733fa9..849321453c31d2d3fd78bb54bcae5fc506ee51a7 100644 GIT binary patch literal 253 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNHG=%xjQkeJ16rJ$YDu$^mSxl z*x1kgCy^D%=PdAuEM{QfI}E~%$MaXD00k8Td_r7-w2Vf>B55ulc~zDLNIsKg0+R1! z8G+<~IfhUb*~cIgN`m}?8H|l%VrpxrPyZy!d=4lW;OXKR;&D7VL4tL0f=Ex3AnTMV z8k5CEj_99%@@SDmr_JJx8yVubLyT_C(U>UCr*C>B-|;$^y4RCd?dAMiShw&g&2l$7 hJNcysSpNey27h_c(%8oLYR~zrl|43WrT5yUcA3OP?Gj$35Pswus~^YYyA$5L`|jy+taYm5{+{xu zGdY09F)&yx2wcaltA8$i_x}IC{yx{czSa9e)!*sYyUoAa+v%`fov+$(y8H9ZoIgdI ztKYr*`n*;<-s$z%@`t-C%YW5*a7<>t@&BXx$Es4X*_kd!ihHj48^&$@pt>dQzu%8_ zN=dio#iSp3(O#bD9B+>V7&>*Z0bV6d2Xu=gb>V0th1^KijuV}quDfq`Mm(bB$@={>7^f~jWae}GD>K}g|35orJ@l$~3}N67 zbM9_n5PP-Q?(TAl^H_dPf?_1-!qUI+Uy@Sa)|+=CN@@q4F-~Z4_2}*5N@&TIfZN&- zJo%4P*2~_DEB7eOR?}=S?P>E^=&Eq{9^;x+ySw|oXg;5KXWGs4%V+nPeYWf9y|{di zL%f0e)H~uaziM{ze9=_jz~Px7IO&|3j}lVUI=ueJ!lvI6;>1s;*b3=DjSL74G){)!Z!ppB=CV@QPi+Y1Ld84Ng_1NHOfNbU~ne#ByH z67X-bjEyS~1H%VV&)r6^qhoE7Ef;weryl>s8g0qIP_D$6>LFFkwO#Eh&>RL&S3j3^ HP6K%AY`iZ z(>S~2Y7MqsD#_EPum$cvo~O8^U!Y8rf#JY*rA6*8^Y`{^DlM8`yS9Ym{KTWLcK7LQ zpLa#D;l8)*#*PmdKI;Vst0CtK{ AYybcN diff --git a/Resources/Textures/Structures/Wallmounts/air_monitors_xeno.rsi/fire_on.png b/Resources/Textures/Structures/Wallmounts/air_monitors_xeno.rsi/fire_on.png index a98566070e504094dbfcc8f7872791b49336fb85..922bd014a42837b35bcf4621abb0345a26d5469f 100644 GIT binary patch literal 200 zcmeAS@N?(olHy`uVBq!ia0vp^4nVBH!VDw>HYaZfQjEnx?oJHr&dIz4a#+$GeH|GX zHuiJ>Nn{1`ISV`@iy0XB4ude`@%$AjKtZ7ZpAc6dy-1qtsw~ShS*CZgjQ`~rvVJ|e z4-{oB3GxeOFpjC6zHw!H8Bjpa)5S5w;&gI?1goSXYA^>bP0l+XkKJX|-c literal 380 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7Ro>V089$aSW-L^Y+fdyh8~B3=gy; z#hMN`&6@M>x6k{D7xwU137P8TWvab6Gws2PYx{Ng*3Qp9+FJ0pc>0%hf_(hb#?pc$Fo)LT(f4hum5MI=YKlGTu{(AWO=bp z-=u=u&MO^&0qG2`Yi&$mJwHW%R($`u zRa|BNWo<^uc)`B6=Q&SUEjQkFFIe#Avyx+JdKpQ3{T;Sh&fTbaNcb{T7tb5+B>$7{ T5xaI+gG}*s^>bP0l+XkKk44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`0h7I;J!GcfQS24TkI`72U@f@}dkA+A8Wq@?84l7cBf7Gp_}UoeBivm0qZ zj*O>^V+hCf`*8ywuY1vgDz4r>?)?e(rm5fidUT5U z_Y174?smN=uQ199>9-1ed&lqj_>9%Ps?3?wPG`-X)~#~%Pwx2{6`NP{Nl2bI*u3rEmuY%`#MRr>mdKI;Vst0Pk*H%m4rY diff --git a/Resources/Textures/Structures/Wallmounts/air_monitors_xeno.rsi/firex.png b/Resources/Textures/Structures/Wallmounts/air_monitors_xeno.rsi/firex.png index c3d8877d0c85282ad987ace45577cfad2c7b735a..8c2a849fb2bbed16556ee10a7140f457f3077979 100644 GIT binary patch delta 323 zcmca#e}T!aGr-TCmrII^fq{Y7)59eQNGpIa2Q!d#S<-b3NHG=%xjQkeJ16rJ$YDu$ z^mSxl*x1kgCy{lcqIf-nS%6Q7D^NyPC(_EQc&C@v`}=}2RkHEY(T((3mhGfRT}f`K%{=E-TZfYfA97sn8b(|0fJ<~wA- zJ!VMvsHpqef-rC3_TlTj-&w}B<# z%&h}w&U9S5?R-oB(!Rh)d9Ez{%e2Y9F7=AV#L)lmX+r>Co* J%Q~loCIGVsbf^FT literal 16351 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 Rwz*{k@iA+nYa=ta{Rd#Bv%>%Y diff --git a/Resources/Textures/Structures/Wallmounts/air_monitors_xeno.rsi/meta.json b/Resources/Textures/Structures/Wallmounts/air_monitors_xeno.rsi/meta.json index 81cc61e95e..fe139a4d7e 100644 --- a/Resources/Textures/Structures/Wallmounts/air_monitors_xeno.rsi/meta.json +++ b/Resources/Textures/Structures/Wallmounts/air_monitors_xeno.rsi/meta.json @@ -9,32 +9,7 @@ "states": [ { "name": "alarm0", - "directions": 4, "delays": [ - [ - 0.5, - 0.1, - 0.1, - 1.0, - 0.2, - 0.1 - ], - [ - 0.5, - 0.1, - 0.1, - 1.0, - 0.2, - 0.1 - ], - [ - 0.5, - 0.1, - 0.1, - 1.0, - 0.2, - 0.1 - ], [ 0.5, 0.1, @@ -47,20 +22,7 @@ }, { "name": "alarm1", - "directions": 4, "delays": [ - [ - 0.5, - 0.5 - ], - [ - 0.5, - 0.5 - ], - [ - 0.5, - 0.5 - ], [ 0.5, 0.5 @@ -69,20 +31,7 @@ }, { "name": "alarm2", - "directions": 4, "delays": [ - [ - 0.5, - 0.5 - ], - [ - 0.5, - 0.5 - ], - [ - 0.5, - 0.5 - ], [ 0.5, 0.5 @@ -90,30 +39,25 @@ ] }, { - "name": "alarm_b1", - "directions": 4 + "name": "alarm_b1" }, { - "name": "alarm_b2", - "directions": 4 + "name": "alarm_b2" }, { "name": "alarm_bitem" }, { - "name": "alarmp", - "directions": 4 + "name": "alarmp" }, { - "name": "alarmx", - "directions": 4 + "name": "alarmx" }, { "name": "auth_off" }, { "name": "auth_on", - "directions": 1, "delays": [ [ 0.1, @@ -122,33 +66,17 @@ ] }, { - "name": "fire0", - "directions": 4 + "name": "fire0" }, { - "name": "fire_0", - "directions": 4 + "name": "fire_0" }, { - "name": "fire_1", - "directions": 4 + "name": "fire_1" }, { "name": "fire_2", - "directions": 4, "delays": [ - [ - 0.5, - 0.5 - ], - [ - 0.5, - 0.5 - ], - [ - 0.5, - 0.5 - ], [ 0.5, 0.5 @@ -157,20 +85,7 @@ }, { "name": "fire_3", - "directions": 4, "delays": [ - [ - 0.5, - 0.5 - ], - [ - 0.5, - 0.5 - ], - [ - 0.5, - 0.5 - ], [ 0.5, 0.5 @@ -178,36 +93,20 @@ ] }, { - "name": "fire_b0", - "directions": 4 + "name": "fire_b0" }, { - "name": "fire_b1", - "directions": 4 + "name": "fire_b1" }, { - "name": "fire_b2", - "directions": 4 + "name": "fire_b2" }, { "name": "fire_bitem" }, { "name": "fire_detected", - "directions": 4, "delays": [ - [ - 0.4, - 0.4 - ], - [ - 0.4, - 0.4 - ], - [ - 0.4, - 0.4 - ], [ 0.4, 0.4 @@ -216,32 +115,7 @@ }, { "name": "fire_emagged", - "directions": 4, "delays": [ - [ - 0.5, - 0.5, - 0.3, - 0.5, - 0.2, - 0.5 - ], - [ - 0.5, - 0.5, - 0.3, - 0.5, - 0.2, - 0.5 - ], - [ - 0.5, - 0.5, - 0.3, - 0.5, - 0.2, - 0.5 - ], [ 0.5, 0.5, @@ -253,25 +127,11 @@ ] }, { - "name": "fire_off", - "directions": 4 + "name": "fire_off" }, { "name": "fire_on", - "directions": 4, "delays": [ - [ - 0.5, - 0.5 - ], - [ - 0.5, - 0.5 - ], - [ - 0.5, - 0.5 - ], [ 0.5, 0.5 @@ -279,12 +139,10 @@ ] }, { - "name": "fire_overlay", - "directions": 4 + "name": "fire_overlay" }, { - "name": "firex", - "directions": 4 + "name": "firex" } ] } From e0dd1c540482604b49a6afb6678690fab6377eed Mon Sep 17 00:00:00 2001 From: Jessica M Date: Fri, 17 Jul 2026 12:25:03 -0700 Subject: [PATCH 059/108] Refactor ambient music rules to use EntityConditions (#44696) * i guess one big mega commit sorry * cleanup and reviews * mfw you cherrypick from an outdated commit on the other branch and its all fucked up and the world sees it.. * reviews --- .../Audio/ContentAudioSystem.AmbientMusic.cs | 23 ++--- Content.Shared/Audio/AmbientMusicPrototype.cs | 20 +++-- .../Generic/GridInRangeConditionSystem.cs | 43 ++++++++++ .../Generic/InSpaceConditionSystem.cs | 21 +++++ .../Generic/IsGhostConditionSystem.cs | 22 +++++ .../Generic/NearbyAccessConditionSystem.cs | 70 +++++++++++++++ .../NearbyComponentsConditionSystem.cs | 64 ++++++++++++++ .../Generic/NearbyEntitiesConditionSystem.cs | 62 +++++++++++++ .../NearbyTilesPercentConditionSystem.cs | 86 +++++++++++++++++++ .../Generic/OnMapGridConditionSystem.cs | 21 +++++ Content.Shared/Random/Rules/AlwaysTrue.cs | 12 --- Content.Shared/Random/Rules/GridInRange.cs | 42 --------- Content.Shared/Random/Rules/InSpace.cs | 18 ---- Content.Shared/Random/Rules/NearbyAccess.cs | 75 ---------------- .../Random/Rules/NearbyComponents.cs | 70 --------------- Content.Shared/Random/Rules/NearbyEntities.cs | 58 ------------- .../Random/Rules/NearbyTilesPercent.cs | 80 ----------------- Content.Shared/Random/Rules/OnMapGrid.cs | 19 ---- Content.Shared/Random/Rules/RulesSystem.cs | 39 --------- Resources/Prototypes/AmbientMusic/areas.yml | 27 +++++- .../Prototypes/AmbientMusic/departments.yml | 15 +++- Resources/Prototypes/AmbientMusic/generic.yml | 25 +++++- Resources/Prototypes/AmbientMusic/rules.yml | 84 ------------------ 23 files changed, 469 insertions(+), 527 deletions(-) create mode 100644 Content.Shared/EntityConditions/Conditions/Generic/GridInRangeConditionSystem.cs create mode 100644 Content.Shared/EntityConditions/Conditions/Generic/InSpaceConditionSystem.cs create mode 100644 Content.Shared/EntityConditions/Conditions/Generic/IsGhostConditionSystem.cs create mode 100644 Content.Shared/EntityConditions/Conditions/Generic/NearbyAccessConditionSystem.cs create mode 100644 Content.Shared/EntityConditions/Conditions/Generic/NearbyComponentsConditionSystem.cs create mode 100644 Content.Shared/EntityConditions/Conditions/Generic/NearbyEntitiesConditionSystem.cs create mode 100644 Content.Shared/EntityConditions/Conditions/Generic/NearbyTilesPercentConditionSystem.cs create mode 100644 Content.Shared/EntityConditions/Conditions/Generic/OnMapGridConditionSystem.cs delete mode 100644 Content.Shared/Random/Rules/AlwaysTrue.cs delete mode 100644 Content.Shared/Random/Rules/GridInRange.cs delete mode 100644 Content.Shared/Random/Rules/InSpace.cs delete mode 100644 Content.Shared/Random/Rules/NearbyAccess.cs delete mode 100644 Content.Shared/Random/Rules/NearbyComponents.cs delete mode 100644 Content.Shared/Random/Rules/NearbyEntities.cs delete mode 100644 Content.Shared/Random/Rules/NearbyTilesPercent.cs delete mode 100644 Content.Shared/Random/Rules/OnMapGrid.cs delete mode 100644 Content.Shared/Random/Rules/RulesSystem.cs delete mode 100644 Resources/Prototypes/AmbientMusic/rules.yml diff --git a/Content.Client/Audio/ContentAudioSystem.AmbientMusic.cs b/Content.Client/Audio/ContentAudioSystem.AmbientMusic.cs index f7660b2ec8..3d97cfe24a 100644 --- a/Content.Client/Audio/ContentAudioSystem.AmbientMusic.cs +++ b/Content.Client/Audio/ContentAudioSystem.AmbientMusic.cs @@ -2,8 +2,8 @@ using System.Linq; using Content.Client.Gameplay; using Content.Shared.Audio; using Content.Shared.CCVar; +using Content.Shared.EntityConditions; using Content.Shared.GameTicking; -using Content.Shared.Random.Rules; using Robust.Client.Player; using Robust.Client.State; using Robust.Shared.Audio; @@ -25,11 +25,11 @@ public sealed partial class ContentAudioSystem [Dependency] private IPlayerManager _player = default!; [Dependency] private IRobustRandom _random = default!; [Dependency] private IStateManager _state = default!; - [Dependency] private RulesSystem _rules = default!; [Dependency] private SharedAudioSystem _audio = default!; + [Dependency] private SharedEntityConditionsSystem _conditions = default!; - private readonly TimeSpan _minAmbienceTime = TimeSpan.FromSeconds(60); - private readonly TimeSpan _maxAmbienceTime = TimeSpan.FromSeconds(120); + private readonly TimeSpan _minAmbienceTime = TimeSpan.FromSeconds(40); + private readonly TimeSpan _maxAmbienceTime = TimeSpan.FromSeconds(100); private const float AmbientMusicFadeTime = 10f; private static float _volumeSlider; @@ -88,7 +88,7 @@ public sealed partial class ContentAudioSystem private void OnProtoReload(PrototypesReloadedEventArgs obj) { - if (obj.WasModified() || obj.WasModified()) + if (obj.WasModified()) SetupAmbientSounds(); } @@ -165,7 +165,7 @@ public sealed partial class ContentAudioSystem { var player = _player.LocalSession?.AttachedEntity; - if (player == null || _musicProto == null || !_rules.IsTrue(player.Value, ProtoMan.Index(_musicProto.Rules))) + if (player == null || _musicProto == null || !_conditions.TryConditions(player.Value, _musicProto.Conditions)) { FadeOut(_ambientMusicStream, duration: AmbientMusicFadeTime); _musicProto = null; @@ -192,9 +192,10 @@ public sealed partial class ContentAudioSystem _musicProto = GetAmbience(); - if (_musicProto == null || _musicProto == _lastMusicProto) + if (_musicProto == null || _musicProto == _lastMusicProto && !_musicProto.AllowRepeat) { _interruptable = false; + _nextAudio = _timing.CurTime + _random.Next(_minAmbienceTime, _maxAmbienceTime); return; } @@ -228,9 +229,7 @@ public sealed partial class ContentAudioSystem private AmbientMusicPrototype? GetAmbience() { - var player = _player.LocalEntity; - - if (player == null) + if (_player.LocalEntity is not { } player) return null; var ev = new PlayAmbientMusicEvent(); @@ -244,8 +243,10 @@ public sealed partial class ContentAudioSystem foreach (var amb in ambiences) { - if (!_rules.IsTrue(player.Value, ProtoMan.Index(amb.Rules))) + if (!_conditions.TryConditions(player, amb.Conditions)) + { continue; + } return amb; } diff --git a/Content.Shared/Audio/AmbientMusicPrototype.cs b/Content.Shared/Audio/AmbientMusicPrototype.cs index f5a1d895bf..aa1a3105b1 100644 --- a/Content.Shared/Audio/AmbientMusicPrototype.cs +++ b/Content.Shared/Audio/AmbientMusicPrototype.cs @@ -1,8 +1,6 @@ -using Content.Shared.Random; -using Content.Shared.Random.Rules; +using Content.Shared.EntityConditions; using Robust.Shared.Audio; using Robust.Shared.Prototypes; -using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; namespace Content.Shared.Audio; @@ -17,24 +15,28 @@ public sealed partial class AmbientMusicPrototype : IPrototype ///

/// Traditionally you'd prioritise most rules to least as priority but in our case we'll just be explicit. /// - [ViewVariables(VVAccess.ReadWrite), DataField("priority")] + [DataField] public int Priority = 0; /// /// Can we interrupt this ambience for a better prototype if possible? /// - [ViewVariables(VVAccess.ReadWrite), DataField("interruptable")] + [DataField] public bool Interruptable = false; + //Whether this ambience is allowed to play twice in a row + [DataField] + public bool AllowRepeat = true; + /// /// Do we fade-in. Useful for songs. /// - [ViewVariables(VVAccess.ReadWrite), DataField("fadeIn")] + [DataField] public bool FadeIn; - [ViewVariables(VVAccess.ReadWrite), DataField("sound", required: true)] + [DataField(required: true)] public SoundSpecifier Sound = default!; - [ViewVariables(VVAccess.ReadWrite), DataField("rules", required: true, customTypeSerializer:typeof(PrototypeIdSerializer))] - public string Rules = string.Empty; + [DataField] + public EntityCondition[]? Conditions; } diff --git a/Content.Shared/EntityConditions/Conditions/Generic/GridInRangeConditionSystem.cs b/Content.Shared/EntityConditions/Conditions/Generic/GridInRangeConditionSystem.cs new file mode 100644 index 0000000000..699e97155c --- /dev/null +++ b/Content.Shared/EntityConditions/Conditions/Generic/GridInRangeConditionSystem.cs @@ -0,0 +1,43 @@ +using System.Numerics; +using Robust.Shared.Map; +using Robust.Shared.Map.Components; +using Robust.Shared.Prototypes; + +namespace Content.Shared.EntityConditions.Conditions.Generic; + +/// +/// Returns true if entity is on a grid or in range of one. +/// +public sealed partial class GridInRangeConditionSystem : EntityConditionSystem +{ + [Dependency] private SharedTransformSystem _transform = default!; + [Dependency] private SharedMapSystem _map = default!; + + protected override void Condition(Entity entity, ref EntityConditionEvent args) + { + if (entity.Comp.GridUid != null) + { + args.Result = true; + return; + } + + var worldPos = _transform.GetWorldPosition(entity.Comp); + var gridRange = new Vector2(args.Condition.Range, args.Condition.Range); + + List> grids = []; + + _map.FindGridsIntersecting(entity.Comp.MapID, new Box2(worldPos - gridRange, worldPos + gridRange), ref grids); + + args.Result = grids.Count > 0; + } +} + + +/// +public sealed partial class GridInRangeCondition : EntityConditionBase +{ + [DataField] + public float Range = 10f; + + public override string EntityConditionGuidebookText(IPrototypeManager prototype) => String.Empty; +} diff --git a/Content.Shared/EntityConditions/Conditions/Generic/InSpaceConditionSystem.cs b/Content.Shared/EntityConditions/Conditions/Generic/InSpaceConditionSystem.cs new file mode 100644 index 0000000000..f1f5090fc7 --- /dev/null +++ b/Content.Shared/EntityConditions/Conditions/Generic/InSpaceConditionSystem.cs @@ -0,0 +1,21 @@ +using Robust.Shared.Prototypes; + +namespace Content.Shared.EntityConditions.Conditions.Generic; + +/// +/// Returns true if the entity is in space. +/// +public sealed class InSpaceConditionSystem : EntityConditionSystem +{ + protected override void Condition(Entity entity, ref EntityConditionEvent args) + { + args.Result = entity.Comp.GridUid == null; + } +} + + +/// +public sealed partial class InSpaceCondition : EntityConditionBase +{ + public override string EntityConditionGuidebookText(IPrototypeManager prototype) => String.Empty; +} diff --git a/Content.Shared/EntityConditions/Conditions/Generic/IsGhostConditionSystem.cs b/Content.Shared/EntityConditions/Conditions/Generic/IsGhostConditionSystem.cs new file mode 100644 index 0000000000..dff9acf182 --- /dev/null +++ b/Content.Shared/EntityConditions/Conditions/Generic/IsGhostConditionSystem.cs @@ -0,0 +1,22 @@ +using Content.Shared.Ghost; +using Robust.Shared.Prototypes; + +namespace Content.Shared.EntityConditions.Conditions.Generic; + +/// +/// Returns true if the entity is a ghost. +/// +public sealed class IsGhostConditionSystem : EntityConditionSystem +{ + protected override void Condition(Entity entity, ref EntityConditionEvent args) + { + args.Result = HasComp(entity); + } +} + + +/// +public sealed partial class IsGhostCondition : EntityConditionBase +{ + public override string EntityConditionGuidebookText(IPrototypeManager prototype) => String.Empty; +} diff --git a/Content.Shared/EntityConditions/Conditions/Generic/NearbyAccessConditionSystem.cs b/Content.Shared/EntityConditions/Conditions/Generic/NearbyAccessConditionSystem.cs new file mode 100644 index 0000000000..af6fe421da --- /dev/null +++ b/Content.Shared/EntityConditions/Conditions/Generic/NearbyAccessConditionSystem.cs @@ -0,0 +1,70 @@ +using Content.Shared.Access; +using Content.Shared.Access.Components; +using Content.Shared.Access.Systems; +using Robust.Shared.Prototypes; + +namespace Content.Shared.EntityConditions.Conditions.Generic; + +/// +/// Checks for a number of entities nearby with the specified accesses. +/// +public sealed partial class NearbyAccessConditionSystem : EntityConditionSystem +{ + [Dependency] private EntityLookupSystem _lookup = default!; + [Dependency] private AccessReaderSystem _reader = default!; + + protected override void Condition(Entity entity, ref EntityConditionEvent args) + { + if (entity.Comp.MapUid == null) + { + args.Result = false; + return; + } + + var found = false; + var count = 0; + + foreach (var (ent, comp) in _lookup.GetEntitiesInRange(entity.Comp.Coordinates, args.Condition.Range)) + { + if (!_reader.AreAccessTagsAllowed(args.Condition.Access, comp) || + args.Condition.Anchored && !Transform(ent).Anchored) + continue; + + count++; + + if (count >= args.Condition.Count) + { + found = true; + break; + } + } + + args.Result = found; + } +} + + +/// +public sealed partial class NearbyAccessCondition : EntityConditionBase +{ + // This exists because of door electronics contained inside doors. + /// + /// Does the access entity need to be anchored. + /// + [DataField] + public bool Anchored = true; + + /// + /// Count of entities that need to be nearby. + /// + [DataField] + public int Count = 1; + + [DataField(required: true)] + public List> Access = new(); + + [DataField] + public float Range = 10f; + + public override string EntityConditionGuidebookText(IPrototypeManager prototype) => String.Empty; +} diff --git a/Content.Shared/EntityConditions/Conditions/Generic/NearbyComponentsConditionSystem.cs b/Content.Shared/EntityConditions/Conditions/Generic/NearbyComponentsConditionSystem.cs new file mode 100644 index 0000000000..bb132fe3f3 --- /dev/null +++ b/Content.Shared/EntityConditions/Conditions/Generic/NearbyComponentsConditionSystem.cs @@ -0,0 +1,64 @@ +using System.Numerics; +using Robust.Shared.Prototypes; + +namespace Content.Shared.EntityConditions.Conditions.Generic; + +/// +/// Checks if an entity is in range of a specified number of entities with specific components. +/// +public sealed partial class NearbyComponentsConditionSystem : EntityConditionSystem +{ + [Dependency] private SharedTransformSystem _transform = default!; + [Dependency] private EntityLookupSystem _lookup = default!; + + protected override void Condition(Entity entity, ref EntityConditionEvent args) + { + var worldPos = _transform.GetWorldPosition(entity.Comp); + var count = 0; + + var box = Box2.CenteredAround(worldPos, new Vector2(args.Condition.Range)); + + foreach (var ent in _lookup.GetEntitiesIntersecting(entity.Comp.MapID, box)) + { + if (args.Condition.Anchored && !Transform(ent).Anchored) + continue; + + foreach (var compType in args.Condition.Components.Values) + { + if (!HasComp(ent, compType.Component.GetType())) + continue; + + count++; + + if (count >= args.Condition.Count) + { + args.Result = true; + return; + } + } + } + + args.Result = false; + } +} + +/// +public sealed partial class NearbyComponentsCondition : EntityConditionBase +{ + /// + /// Does the entity need to be anchored. + /// + [DataField] + public bool Anchored; + + [DataField] + public int Count; + + [DataField(required: true)] + public ComponentRegistry Components = default!; + + [DataField] + public float Range = 10f; + + public override string EntityConditionGuidebookText(IPrototypeManager prototype) => String.Empty; +} diff --git a/Content.Shared/EntityConditions/Conditions/Generic/NearbyEntitiesConditionSystem.cs b/Content.Shared/EntityConditions/Conditions/Generic/NearbyEntitiesConditionSystem.cs new file mode 100644 index 0000000000..705f7bf94b --- /dev/null +++ b/Content.Shared/EntityConditions/Conditions/Generic/NearbyEntitiesConditionSystem.cs @@ -0,0 +1,62 @@ +using Content.Shared.Whitelist; +using Robust.Shared.Prototypes; + +namespace Content.Shared.EntityConditions.Conditions.Generic; + +/// +/// Checks for entities matching the whitelist in range. +/// +public sealed partial class NearbyEntitiesConditionSystem : EntityConditionSystem +{ + [Dependency] private SharedTransformSystem _transform = default!; + [Dependency] private EntityLookupSystem _lookup = default!; + [Dependency] private EntityWhitelistSystem _whitelist = default!; + + protected override void Condition(Entity entity, ref EntityConditionEvent args) + { + if (entity.Comp.MapUid == null) + { + args.Result = false; + return; + } + + var found = false; + var worldPos = _transform.GetWorldPosition(entity.Comp); + var count = 0; + + foreach (var ent in _lookup.GetEntitiesInRange(entity.Comp.MapID, worldPos, args.Condition.Range)) + { + if (_whitelist.IsWhitelistFail(args.Condition.Whitelist, ent)) + continue; + + count++; + + if (count >= args.Condition.Count) + { + found = true; + break; + } + } + + args.Result = found; + } +} + + +/// +public sealed partial class NearbyEntitiesCondition : EntityConditionBase +{ + /// + /// How many of the entity need to be nearby. + /// + [DataField] + public int Count = 1; + + [DataField(required: true)] + public EntityWhitelist Whitelist = new(); + + [DataField] + public float Range = 10f; + + public override string EntityConditionGuidebookText(IPrototypeManager prototype) => String.Empty; +} diff --git a/Content.Shared/EntityConditions/Conditions/Generic/NearbyTilesPercentConditionSystem.cs b/Content.Shared/EntityConditions/Conditions/Generic/NearbyTilesPercentConditionSystem.cs new file mode 100644 index 0000000000..184a78caad --- /dev/null +++ b/Content.Shared/EntityConditions/Conditions/Generic/NearbyTilesPercentConditionSystem.cs @@ -0,0 +1,86 @@ +using Content.Shared.Maps; +using Robust.Shared.Map; +using Robust.Shared.Map.Components; +using Robust.Shared.Physics.Components; +using Robust.Shared.Prototypes; + +namespace Content.Shared.EntityConditions.Conditions.Generic; + +/// +/// Checks if a percentage of the tiles we are nearby match +/// +public sealed partial class NearbyTilesPercentConditionSystem : EntityConditionSystem +{ + [Dependency] private SharedTransformSystem _transform = default!; + [Dependency] private SharedMapSystem _map = default!; + [Dependency] private ITileDefinitionManager _tileDef = default!; + + [Dependency] private EntityQuery _physicsQuery = default!; + + protected override void Condition(Entity entity, ref EntityConditionEvent args) + { + if (!TryComp(entity.Comp.GridUid, out var grid)) + { + args.Result = false; + return; + } + + var tileCount = 0; + var matchingTileCount = 0; + + var tiles = _map.GetTilesIntersecting(entity.Comp.GridUid.Value, + grid, + new Circle(_transform.GetWorldPosition(entity.Comp), args.Condition.Range)); + + foreach (var tile in tiles) + { + // Only consider collidable anchored (for reasons some subfloor stuff has physics but non-collidable) + if (args.Condition.IgnoreAnchored) + { + var gridEnum = _map.GetAnchoredEntitiesEnumerator(entity.Comp.GridUid.Value, grid, tile.GridIndices); + var found = false; + + while (gridEnum.MoveNext(out var ancUid)) + { + if (_physicsQuery.TryGetComponent(ancUid, out var physics) && + physics.CanCollide) + { + found = true; + break; + } + } + + if (found) + continue; + } + + tileCount++; + + if (!args.Condition.Tiles.Contains(_tileDef[tile.Tile.TypeId].ID)) + continue; + + matchingTileCount++; + } + + args.Result = tileCount > 0 && matchingTileCount / (float) tileCount >= args.Condition.Percent; + } +} + + +/// +public sealed partial class NearbyTilesPercentCondition : EntityConditionBase +{ + [DataField] + public bool IgnoreAnchored; + + [DataField(required: true)] + public float Percent; + + [DataField(required: true)] + public List> Tiles = new(); + + [DataField] + public float Range = 10f; + + public override string EntityConditionGuidebookText(IPrototypeManager prototype) => String.Empty; +} diff --git a/Content.Shared/EntityConditions/Conditions/Generic/OnMapGridConditionSystem.cs b/Content.Shared/EntityConditions/Conditions/Generic/OnMapGridConditionSystem.cs new file mode 100644 index 0000000000..54d1cda39e --- /dev/null +++ b/Content.Shared/EntityConditions/Conditions/Generic/OnMapGridConditionSystem.cs @@ -0,0 +1,21 @@ +using Robust.Shared.Prototypes; + +namespace Content.Shared.EntityConditions.Conditions.Generic; + +/// +/// Returns true if griduid and mapuid match (AKA on 'planet'). +/// +public sealed class OnMapGridConditionSystem : EntityConditionSystem +{ + protected override void Condition(Entity entity, ref EntityConditionEvent args) + { + args.Result = entity.Comp.GridUid == entity.Comp.MapUid && entity.Comp.MapUid != null; + } +} + + +/// +public sealed partial class OnMapGridCondition : EntityConditionBase +{ + public override string EntityConditionGuidebookText(IPrototypeManager prototype) => String.Empty; +} diff --git a/Content.Shared/Random/Rules/AlwaysTrue.cs b/Content.Shared/Random/Rules/AlwaysTrue.cs deleted file mode 100644 index 98b81fae79..0000000000 --- a/Content.Shared/Random/Rules/AlwaysTrue.cs +++ /dev/null @@ -1,12 +0,0 @@ -namespace Content.Shared.Random.Rules; - -/// -/// Always returns true. Used for fallbacks. -/// -public sealed partial class AlwaysTrueRule : RulesRule -{ - public override bool Check(EntityManager entManager, EntityUid uid) - { - return !Inverted; - } -} diff --git a/Content.Shared/Random/Rules/GridInRange.cs b/Content.Shared/Random/Rules/GridInRange.cs deleted file mode 100644 index d2aef57cf3..0000000000 --- a/Content.Shared/Random/Rules/GridInRange.cs +++ /dev/null @@ -1,42 +0,0 @@ -using System.Numerics; -using Robust.Shared.Map; -using Robust.Shared.Map.Components; - -namespace Content.Shared.Random.Rules; - -/// -/// Returns true if on a grid or in range of one. -/// -public sealed partial class GridInRangeRule : RulesRule -{ - [DataField] - public float Range = 10f; - - private List> _grids = []; - - public override bool Check(EntityManager entManager, EntityUid uid) - { - if (!entManager.TryGetComponent(uid, out TransformComponent? xform)) - { - return false; - } - - if (xform.GridUid != null) - { - return !Inverted; - } - - var transform = entManager.System(); - var maps = entManager.System(); - - var worldPos = transform.GetWorldPosition(xform); - var gridRange = new Vector2(Range, Range); - - _grids.Clear(); - maps.FindGridsIntersecting(xform.MapID, new Box2(worldPos - gridRange, worldPos + gridRange), ref _grids); - if (_grids.Count > 0) - return !Inverted; - - return Inverted; - } -} diff --git a/Content.Shared/Random/Rules/InSpace.cs b/Content.Shared/Random/Rules/InSpace.cs deleted file mode 100644 index 8163e1f6be..0000000000 --- a/Content.Shared/Random/Rules/InSpace.cs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Content.Shared.Random.Rules; - -/// -/// Returns true if the attached entity is in space. -/// -public sealed partial class InSpaceRule : RulesRule -{ - public override bool Check(EntityManager entManager, EntityUid uid) - { - if (!entManager.TryGetComponent(uid, out TransformComponent? xform) || - xform.GridUid != null) - { - return Inverted; - } - - return !Inverted; - } -} diff --git a/Content.Shared/Random/Rules/NearbyAccess.cs b/Content.Shared/Random/Rules/NearbyAccess.cs deleted file mode 100644 index 3f91d0fbed..0000000000 --- a/Content.Shared/Random/Rules/NearbyAccess.cs +++ /dev/null @@ -1,75 +0,0 @@ -using Content.Shared.Access; -using Content.Shared.Access.Components; -using Content.Shared.Access.Systems; -using Robust.Shared.Prototypes; - -namespace Content.Shared.Random.Rules; - -/// -/// Checks for an entity nearby with the specified access. -/// -public sealed partial class NearbyAccessRule : RulesRule -{ - // This exists because of door electronics contained inside doors. - /// - /// Does the access entity need to be anchored. - /// - [DataField] - public bool Anchored = true; - - /// - /// Count of entities that need to be nearby. - /// - [DataField] - public int Count = 1; - - [DataField(required: true)] - public List> Access = new(); - - [DataField] - public float Range = 10f; - - public override bool Check(EntityManager entManager, EntityUid uid) - { - if (!entManager.TryGetComponent(uid, out TransformComponent? xform) || - xform.MapUid == null) - { - return false; - } - - var transform = entManager.System(); - var lookup = entManager.System(); - var reader = entManager.System(); - - var found = false; - var worldPos = transform.GetWorldPosition(xform); - var count = 0; - - // TODO: Update this when we get the callback version - var entities = new HashSet>(); - lookup.GetEntitiesInRange(xform.MapID, worldPos, Range, entities); - foreach (var comp in entities) - { - if (!reader.AreAccessTagsAllowed(Access, comp) || - Anchored && - (!entManager.TryGetComponent(comp, out TransformComponent? compXform) || - !compXform.Anchored)) - { - continue; - } - - count++; - - if (count < Count) - continue; - - found = true; - break; - } - - if (!found) - return Inverted; - - return !Inverted; - } -} diff --git a/Content.Shared/Random/Rules/NearbyComponents.cs b/Content.Shared/Random/Rules/NearbyComponents.cs deleted file mode 100644 index eb5b7073eb..0000000000 --- a/Content.Shared/Random/Rules/NearbyComponents.cs +++ /dev/null @@ -1,70 +0,0 @@ -using Robust.Shared.Prototypes; - -namespace Content.Shared.Random.Rules; - -public sealed partial class NearbyComponentsRule : RulesRule -{ - /// - /// Does the entity need to be anchored. - /// - [DataField] - public bool Anchored; - - [DataField] - public int Count; - - [DataField(required: true)] - public ComponentRegistry Components = default!; - - [DataField] - public float Range = 10f; - - public override bool Check(EntityManager entManager, EntityUid uid) - { - var inRange = new HashSet>(); - - if (!entManager.TryGetComponent(uid, out TransformComponent? xform) || - xform.MapUid == null) - { - return false; - } - - var transform = entManager.System(); - var lookup = entManager.System(); - - var found = false; - var worldPos = transform.GetWorldPosition(xform); - var count = 0; - - foreach (var compType in Components.Values) - { - inRange.Clear(); - lookup.GetEntitiesInRange(compType.Component.GetType(), xform.MapID, worldPos, Range, inRange); - foreach (var comp in inRange) - { - if (Anchored && - (!entManager.TryGetComponent(comp, out TransformComponent? compXform) || - !compXform.Anchored)) - { - continue; - } - - count++; - - if (count < Count) - continue; - - found = true; - break; - } - - if (found) - break; - } - - if (!found) - return Inverted; - - return !Inverted; - } -} diff --git a/Content.Shared/Random/Rules/NearbyEntities.cs b/Content.Shared/Random/Rules/NearbyEntities.cs deleted file mode 100644 index 0754750bc4..0000000000 --- a/Content.Shared/Random/Rules/NearbyEntities.cs +++ /dev/null @@ -1,58 +0,0 @@ -using Content.Shared.Whitelist; - -namespace Content.Shared.Random.Rules; - -/// -/// Checks for entities matching the whitelist in range. -/// This is more expensive than so prefer that! -/// -public sealed partial class NearbyEntitiesRule : RulesRule -{ - /// - /// How many of the entity need to be nearby. - /// - [DataField] - public int Count = 1; - - [DataField(required: true)] - public EntityWhitelist Whitelist = new(); - - [DataField] - public float Range = 10f; - - public override bool Check(EntityManager entManager, EntityUid uid) - { - if (!entManager.TryGetComponent(uid, out TransformComponent? xform) || - xform.MapUid == null) - { - return false; - } - - var transform = entManager.System(); - var lookup = entManager.System(); - var whitelistSystem = entManager.System(); - - var found = false; - var worldPos = transform.GetWorldPosition(xform); - var count = 0; - - foreach (var ent in lookup.GetEntitiesInRange(xform.MapID, worldPos, Range)) - { - if (whitelistSystem.IsWhitelistFail(Whitelist, ent)) - continue; - - count++; - - if (count < Count) - continue; - - found = true; - break; - } - - if (!found) - return Inverted; - - return !Inverted; - } -} diff --git a/Content.Shared/Random/Rules/NearbyTilesPercent.cs b/Content.Shared/Random/Rules/NearbyTilesPercent.cs deleted file mode 100644 index 4f8c1e040d..0000000000 --- a/Content.Shared/Random/Rules/NearbyTilesPercent.cs +++ /dev/null @@ -1,80 +0,0 @@ -using Content.Shared.Maps; -using Robust.Shared.Map; -using Robust.Shared.Map.Components; -using Robust.Shared.Physics.Components; -using Robust.Shared.Prototypes; - -namespace Content.Shared.Random.Rules; - -public sealed partial class NearbyTilesPercentRule : RulesRule -{ - /// - /// If there are anchored entities on the tile do we ignore the tile. - /// - [DataField] - public bool IgnoreAnchored; - - [DataField(required: true)] - public float Percent; - - [DataField(required: true)] - public List> Tiles = new(); - - [DataField] - public float Range = 10f; - - public override bool Check(EntityManager entManager, EntityUid uid) - { - if (!entManager.TryGetComponent(uid, out TransformComponent? xform) || - !entManager.TryGetComponent(xform.GridUid, out var grid)) - { - return false; - } - - var transform = entManager.System(); - var mapSys = entManager.System(); - var tileDef = IoCManager.Resolve(); - - var physicsQuery = entManager.GetEntityQuery(); - var tileCount = 0; - var matchingTileCount = 0; - - foreach (var tile in mapSys.GetTilesIntersecting(xform.GridUid.Value, grid, new Circle(transform.GetWorldPosition(xform), - Range))) - { - // Only consider collidable anchored (for reasons some subfloor stuff has physics but non-collidable) - if (IgnoreAnchored) - { - var gridEnum = mapSys.GetAnchoredEntitiesEnumerator(xform.GridUid.Value, grid, tile.GridIndices); - var found = false; - - while (gridEnum.MoveNext(out var ancUid)) - { - if (!physicsQuery.TryGetComponent(ancUid, out var physics) || - !physics.CanCollide) - { - continue; - } - - found = true; - break; - } - - if (found) - continue; - } - - tileCount++; - - if (!Tiles.Contains(tileDef[tile.Tile.TypeId].ID)) - continue; - - matchingTileCount++; - } - - if (tileCount == 0 || matchingTileCount / (float) tileCount < Percent) - return Inverted; - - return !Inverted; - } -} diff --git a/Content.Shared/Random/Rules/OnMapGrid.cs b/Content.Shared/Random/Rules/OnMapGrid.cs deleted file mode 100644 index bea841872e..0000000000 --- a/Content.Shared/Random/Rules/OnMapGrid.cs +++ /dev/null @@ -1,19 +0,0 @@ -namespace Content.Shared.Random.Rules; - -/// -/// Returns true if griduid and mapuid match (AKA on 'planet'). -/// -public sealed partial class OnMapGridRule : RulesRule -{ - public override bool Check(EntityManager entManager, EntityUid uid) - { - if (!entManager.TryGetComponent(uid, out TransformComponent? xform) || - xform.GridUid != xform.MapUid || - xform.MapUid == null) - { - return Inverted; - } - - return !Inverted; - } -} diff --git a/Content.Shared/Random/Rules/RulesSystem.cs b/Content.Shared/Random/Rules/RulesSystem.cs deleted file mode 100644 index 218b4398b1..0000000000 --- a/Content.Shared/Random/Rules/RulesSystem.cs +++ /dev/null @@ -1,39 +0,0 @@ -using Robust.Shared.Prototypes; - -namespace Content.Shared.Random.Rules; - -/// -/// Rules-based item selection. Can be used for any sort of conditional selection -/// Every single condition needs to be true for this to be selected. -/// e.g. "choose maintenance audio if 90% of tiles nearby are maintenance tiles" -/// -[Prototype] -public sealed partial class RulesPrototype : IPrototype -{ - [IdDataField] public string ID { get; private set; } = string.Empty; - - [DataField("rules", required: true)] - public List Rules = new(); -} - -[ImplicitDataDefinitionForInheritors] -public abstract partial class RulesRule -{ - [DataField] - public bool Inverted; - public abstract bool Check(EntityManager entManager, EntityUid uid); -} - -public sealed class RulesSystem : EntitySystem -{ - public bool IsTrue(EntityUid uid, RulesPrototype rules) - { - foreach (var rule in rules.Rules) - { - if (!rule.Check(EntityManager, uid)) - return false; - } - - return true; - } -} diff --git a/Resources/Prototypes/AmbientMusic/areas.yml b/Resources/Prototypes/AmbientMusic/areas.yml index 4cec2cd93e..c49be6ff38 100644 --- a/Resources/Prototypes/AmbientMusic/areas.yml +++ b/Resources/Prototypes/AmbientMusic/areas.yml @@ -4,8 +4,14 @@ params: volume: -12 collection: AmbienceSpooky - rules: NearMorgue priority: 4 + conditions: + - !type:NearbyComponentsCondition + anchored: true + count: 2 + components: + - type: Morgue + range: 3 - type: ambientMusic id: Maintenance @@ -13,8 +19,14 @@ params: volume: -12 collection: AmbienceMaintenance - rules: NearMaintenance priority: 2 + conditions: + - !type:NearbyTilesPercentCondition + ignoreAnchored: true + percent: 0.25 + tiles: + - Plating + range: 2 - type: ambientMusic id: Space @@ -24,8 +36,14 @@ collection: AmbienceSpace fadeIn: true interruptable: true - rules: InSpace priority: 1 + conditions: + - !type:InSpaceCondition + - !type:GridInRangeCondition + inverted: true + range: 3 + - !type:IsGhostCondition + inverted: true - type: ambientMusic id: Mining @@ -33,7 +51,8 @@ params: volume: -12 collection: AmbienceMining - rules: OnMapGrid fadeIn: true interruptable: true priority: 1 + conditions: + - !type:OnMapGridCondition diff --git a/Resources/Prototypes/AmbientMusic/departments.yml b/Resources/Prototypes/AmbientMusic/departments.yml index 74f1ffcb67..33991f0eda 100644 --- a/Resources/Prototypes/AmbientMusic/departments.yml +++ b/Resources/Prototypes/AmbientMusic/departments.yml @@ -4,8 +4,14 @@ params: volume: -12 collection: AmbienceMedical - rules: NearMedical priority: 3 + allowRepeat: false + conditions: + - !type:NearbyComponentsCondition + components: + - type: AmbientMusicMarkerMedical + count: 3 + range: 5 - type: ambientMusic id: Engineering @@ -13,5 +19,10 @@ params: volume: -12 collection: AmbienceEngineering - rules: NearEngineering priority: 3 + conditions: + - !type:NearbyComponentsCondition + components: + - type: AmbientMusicMarkerEngineering + count: 3 + range: 5 diff --git a/Resources/Prototypes/AmbientMusic/generic.yml b/Resources/Prototypes/AmbientMusic/generic.yml index e9e72b443d..749db78ec2 100644 --- a/Resources/Prototypes/AmbientMusic/generic.yml +++ b/Resources/Prototypes/AmbientMusic/generic.yml @@ -5,7 +5,6 @@ params: volume: -12 collection: AmbienceGeneral - rules: AlwaysTrue - type: ambientMusic id: SpookyFog @@ -13,8 +12,14 @@ params: volume: -12 collection: AmbienceSpookyFog - rules: NearSpookyFog priority: 5 + conditions: + - !type:NearbyEntitiesCondition + count: 5 + whitelist: + tags: + - SpookyFog + range: 4 - type: ambientMusic id: Holy @@ -22,8 +27,13 @@ params: volume: -12 collection: AmbienceHoly - rules: NearPrayable priority: 4 + conditions: + - !type:NearbyComponentsCondition + anchored: true + components: + - type: Prayable + range: 5 - type: ambientMusic id: Train @@ -31,5 +41,12 @@ params: volume: -8 collection: AmbienceTrain - rules: NearTrain priority: 4 + conditions: + - !type:NearbyTilesPercentCondition + ignoreAnchored: true + percent: 0.05 + tiles: + - TrainLattice + range: 4 + diff --git a/Resources/Prototypes/AmbientMusic/rules.yml b/Resources/Prototypes/AmbientMusic/rules.yml deleted file mode 100644 index af964069c3..0000000000 --- a/Resources/Prototypes/AmbientMusic/rules.yml +++ /dev/null @@ -1,84 +0,0 @@ -- type: rules - id: AlwaysTrue - rules: - - !type:AlwaysTrueRule - -- type: rules - id: NearMedical - rules: - - !type:NearbyComponentsRule - components: - - type: AmbientMusicMarkerMedical - count: 3 - range: 5 - -- type: rules - id: NearEngineering - rules: - - !type:NearbyComponentsRule - components: - - type: AmbientMusicMarkerEngineering - count: 3 - range: 5 - -- type: rules - id: InSpace - rules: - - !type:InSpaceRule - - !type:GridInRangeRule - inverted: true - range: 3 - -- type: rules - id: NearMaintenance - rules: - - !type:NearbyTilesPercentRule - ignoreAnchored: true - percent: 0.25 - tiles: - - Plating - range: 2 - -- type: rules - id: NearTrain - rules: - - !type:NearbyTilesPercentRule - ignoreAnchored: true - percent: 0.05 - tiles: - - TrainLattice - range: 4 - -- type: rules - id: NearPrayable - rules: - - !type:NearbyComponentsRule - anchored: true - components: - - type: Prayable - range: 5 - -- type: rules - id: NearMorgue - rules: - - !type:NearbyComponentsRule - anchored: true - count: 2 - components: - - type: Morgue - range: 3 - -- type: rules - id: NearSpookyFog - rules: - - !type:NearbyEntitiesRule - count: 5 - whitelist: - tags: - - SpookyFog - range: 4 - -- type: rules - id: OnMapGrid - rules: - - !type:OnMapGridRule From 23315934eed735a0bb29b0182ad2358098cdec42 Mon Sep 17 00:00:00 2001 From: ProPeperos <61984624+ProPeperos@users.noreply.github.com> Date: Fri, 17 Jul 2026 21:25:42 +0200 Subject: [PATCH 060/108] Remove pipe bit from thrusters sprite (#44731) * Remove pipe from thrusters * added credit * tweak, matches better --- .../Shuttles/old_thruster.rsi/base.png | Bin 21559 -> 1439 bytes .../Shuttles/old_thruster.rsi/meta.json | 5 ++--- .../Structures/Shuttles/thruster.rsi/base.png | Bin 2384 -> 456 bytes .../Shuttles/thruster.rsi/meta.json | 7 +++---- 4 files changed, 5 insertions(+), 7 deletions(-) diff --git a/Resources/Textures/Structures/Shuttles/old_thruster.rsi/base.png b/Resources/Textures/Structures/Shuttles/old_thruster.rsi/base.png index 038d7e88614aa0da51193d7953e788de63d9d6f0..30038200e8222230ecfc49ce9829781dd21e75ee 100644 GIT binary patch literal 1439 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 Date: Fri, 17 Jul 2026 13:30:33 -0700 Subject: [PATCH 061/108] Fix ExplosionSystem.Airtight bulldozing airtight tolerances if there are multiple airtight objects on a single tile. (#44214) * bruh * don't process that tile too much * better * IQ too high * comment --------- Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com> --- .../EntitySystems/ExplosionSystem.Airtight.cs | 2 +- .../ExplosionSystem.Processing.cs | 66 +++++++++++-------- 2 files changed, 40 insertions(+), 28 deletions(-) diff --git a/Content.Server/Explosion/EntitySystems/ExplosionSystem.Airtight.cs b/Content.Server/Explosion/EntitySystems/ExplosionSystem.Airtight.cs index 5fe34df041..9d839264e4 100644 --- a/Content.Server/Explosion/EntitySystems/ExplosionSystem.Airtight.cs +++ b/Content.Server/Explosion/EntitySystems/ExplosionSystem.Airtight.cs @@ -295,7 +295,7 @@ public sealed partial class ExplosionSystem damagePerIntensity += value * Math.Max(0, modifier); } - explosionTolerance[index] = GetExplosionTolerance(uid, totalDamageTarget, damagePerIntensity, damageThresholds); + explosionTolerance[index] += GetExplosionTolerance(uid, totalDamageTarget, damagePerIntensity, damageThresholds); } } diff --git a/Content.Server/Explosion/EntitySystems/ExplosionSystem.Processing.cs b/Content.Server/Explosion/EntitySystems/ExplosionSystem.Processing.cs index 71e6c6eb89..df00da3647 100644 --- a/Content.Server/Explosion/EntitySystems/ExplosionSystem.Processing.cs +++ b/Content.Server/Explosion/EntitySystems/ExplosionSystem.Processing.cs @@ -207,6 +207,16 @@ public sealed partial class ExplosionSystem var size = grid.Comp.TileSize; var gridBox = new Box2(tile * size, (tile + 1) * size); + /* We do this so that we don't do an extra TryComp on anchored entities, and so we don't process them twice. + This saves us a small amount of processing time, but in the future if we can: + 1. Limit the lookups to only process entities that are *on* the tile that's exploding + 2. Make it so ProcessEntity doesn't have throwing behavior + Then this would be a pretty massive processing time saver. + If you are reading this, piece by piece we can make this system optimzied. + */ + _map.GetAnchoredEntities(grid, tile, _anchored); + processed.UnionWith(_anchored); + // get the entities on a tile. Note that we cannot process them directly, or we get // enumerator-changed-while-enumerating errors. List<(EntityUid, TransformComponent)> list = new(); @@ -230,20 +240,21 @@ public sealed partial class ExplosionSystem _atmosphere.HotspotExpose(grid.Owner, tile, temperature.Value, currentIntensity, cause, true); } - // We process anchored entities last, these should've been caught by the lookups earlier. + // We process anchored entities after the AABB lookup for performance reasons. + // The AABB lookup cannot performantly check if each anchored entity is on this tile without a bunch of wasted CPU time + // To get around this, we just skip them during the first loop. + // This prevents us from hitting walls with a greater intensity than intended. // Walls and reinforced walls will break into girders. These girders will also be considered turf-blocking for // the purposes of destroying floors. Again, ideally the process of damaging an entity should somehow return // information about the entities that were spawned as a result, but without that information we just have to var tileBlocked = false; - _map.GetAnchoredEntities(grid, tile, _anchored); - if (_anchored.Count > 0) + foreach (var entity in _anchored) { - foreach (var entity in _anchored) - { - tileBlocked |= IsBlockingTurf(entity); - } - _anchored.Clear(); + processed.Add(entity); + ProcessEntity(entity, epicenter, damage, throwForce, id, null, fireStacks, cause); + tileBlocked |= IsBlockingTurf(entity); } + _anchored.Clear(); // Next, we get the intersecting entities AGAIN, but purely for throwing. This way, glass shards spawned from // windows will be flung outwards, and not stay where they spawned. This is however somewhat unnecessary, and a @@ -274,7 +285,7 @@ public sealed partial class ExplosionSystem ref (List<(EntityUid, TransformComponent)> List, HashSet Processed, EntityQuery XformQuery) state, in EntityUid uid) { - if (state.Processed.Add(uid) && state.XformQuery.TryGetComponent(uid, out var xform)) + if (state.Processed.Add(uid) && state.XformQuery.TryGetComponent(uid, out var xform) && !xform.Anchored) state.List.Add((uid, xform)); return true; @@ -428,7 +439,7 @@ public sealed partial class ExplosionSystem DamageSpecifier? originalDamage, float throwForce, string id, - TransformComponent xform, + TransformComponent? xform, float? fireStacksOnIgnite, EntityUid? cause) { @@ -465,23 +476,24 @@ public sealed partial class ExplosionSystem } // throw - if (!xform.Anchored - && throwForce > 0 - && !EntityManager.IsQueuedForDeletion(uid) - && _physicsQuery.TryGetComponent(uid, out var physics) - && physics.BodyType == BodyType.Dynamic) - { - var pos = _transformSystem.GetWorldPosition(xform); - var dir = pos - epicenter.Position; - if (dir.IsLengthZero()) - dir = _robustRandom.NextVector2().Normalized(); - _throwingSystem.TryThrow( - uid, - dir, - physics, - xform, - throwForce); - } + if (xform == null + || xform.Anchored + || throwForce <= 0 + || EntityManager.IsQueuedForDeletion(uid) + || !_physicsQuery.TryGetComponent(uid, out var physics) + || physics.BodyType != BodyType.Dynamic) + return; + + var pos = _transformSystem.GetWorldPosition(xform); + var dir = pos - epicenter.Position; + if (dir.IsLengthZero()) + dir = _robustRandom.NextVector2().Normalized(); + _throwingSystem.TryThrow( + uid, + dir, + physics, + xform, + throwForce); } /// From 01175655cb081f6d3941226987c3f8c89e52c546 Mon Sep 17 00:00:00 2001 From: Coco Date: Fri, 17 Jul 2026 16:37:21 -0400 Subject: [PATCH 062/108] Thief guidebook improvements (#43151) * improve thief guidebook (equipment names, stuns, pet carrier) * Apply suggestions from code review Co-authored-by: Rem * Apply suggestion from @RemFexxel Co-authored-by: Rem --------- Co-authored-by: AJCM-git <60196617+AJCM-git@users.noreply.github.com> Co-authored-by: Rem --- .../Guidebook/Antagonist/Thieves.xml | 35 ++++++++++++------- 1 file changed, 23 insertions(+), 12 deletions(-) diff --git a/Resources/ServerInfo/Guidebook/Antagonist/Thieves.xml b/Resources/ServerInfo/Guidebook/Antagonist/Thieves.xml index 6dd6278334..4edf6db886 100644 --- a/Resources/ServerInfo/Guidebook/Antagonist/Thieves.xml +++ b/Resources/ServerInfo/Guidebook/Antagonist/Thieves.xml @@ -10,23 +10,24 @@ Thieves are petty yet crafty [color=green]criminals[/color] who can't keep their hands to themselves. You were forcefully given a [bold]pacifism implant[/bold] after your last arrest, but you won't let that stop you from trying to add to your collection. + ## Art of the Steal - Unlike other antagonists, [bold]staying out of trouble is almost a requirement for you[/bold] because of your implant. - You can only run if [color=#cb0000]Security[/color] picks a fight with you, and because you work alone you don't have any friends to pull you out of danger. + Unlike other antagonists, it's important to [bold]stay out of trouble[/bold] because of your pacifism implant. + While you can still use [color=yellow]stun weapons[/color] in a pinch, you should run if [color=#cb0000]Security[/color] picks a fight with you. + You work alone, and you don't have any friends to pull you out of danger. - But against all odds, you'll sucessfully swipe what you want using determination, sleight of hand, a few tools and your [color=cyan]pickpocketing skills.[/color] + But against all odds, you'll successfully swipe what you want using determination, sleight of hand, a few tools, and your [color=cyan]pickpocketing skills[/color]. - The pickpocketing skills you have give you a major advantage: [bold]the ability to take things from people without them even noticing.[/bold] With a little practice you can steal their wallet and keep up a conversation at the same time. - - It is advised to get a pair of gloves as your fingerprints could still be traced back to the stolen goods if they're found. + The pickpocketing skills you have give you a major advantage: [bold]the ability to take things from people without them even noticing[/bold]. With a little practice, you can steal their wallet and keep up a conversation at the same time. + It is advised to get a pair of gloves, as your fingerprints could still be traced back to the stolen goods if they're found. ## Tools of the Trade - You've got two more aces up your stolen sleeves: your [color=cyan]beacon[/color] and your [color=cyan]satchel.[/color] + You've got two more aces up your stolen sleeves: your [color=cyan]thieving beacon[/color] and your [color=cyan]thieving satchel[/color]. - Your [color=cyan]beacon[/color] provides safe passage home for trinkets that may not be easy to carry with you on the evac shuttle. Simply find a secluded part of the station to unfold the beacon, then set its coordinates to your hideout. - Any shinies near it will be [bold]teleported to your vault when the shift ends,[/bold] fulfilling your objectives. + Your [color=cyan]thieving beacon[/color] provides safe passage home for trinkets that may not be easy to carry with you on the evac shuttle. Simply find a secluded part of the station to unfold the thieving beacon, then set its coordinates to your hideout. + Any shinies near it will be [bold]teleported to your vault when the shift ends[/bold], fulfilling your objectives. However, this will instantly out you if found and make it extremely easy for people to reclaim their "missing" possessions. [bold]Make sure to hide it well![/bold] @@ -34,7 +35,7 @@ - Your [color=cyan]satchel[/color] contains... well, whatever you remembered to pack. [bold]You can select two pre-made kits[/bold] to help you complete grander heists. + Your [color=cyan]thieving satchel[/color] contains... well, whatever you remembered to pack. [bold]You can select two pre-made kits[/bold] to help you complete grander heists. @@ -50,15 +51,25 @@ + + + + + After approving your selection, the kits will fold out into a [color=cyan]smuggler's satchel[/color]. + Larger kits will fall onto the floor around you. + [bold]Don't let anyone see your kits or smuggler's satchel[/bold], as they will recognize it as contraband! + The smuggler's satchel can be wrenched to the hull plating underneath floor tiles if you need to hide items from prying eyes. + ## Centerpiece of the Collection Your kleptomania will take you places. One day, you'll feel like stealing a few figurines. Another day, you'll feel like stealing an industrial machine. No matter. They'll all be a part of your collection within a matter of time. - You can steal items by [bold]having them on your person[/bold] when you get to CentComm. Failing this, you can steal larger items by [bold]leaving them by your beacon.[/bold] + You can steal items by [bold]having them on your person[/bold] when you get to CentComm. Failing this, you can steal larger items by [bold]leaving them by your thieving beacon.[/bold] - Some of the more [italic]animate[/italic] objectives may not cooperate with you. Make sure they're alive and with you or your beacon when the shift ends. + Some of the more [italic]animate[/italic] objectives may not cooperate with you. Make sure they're alive and with you or your thieving beacon when the shift ends. + A [color=cyan]pet carrier[/color] is optional, but might make the critters easier to handle. Things that you may desire include but are not limited to: From 6617bbc4027ba227bb9915db14f3784a45894df1 Mon Sep 17 00:00:00 2001 From: B_Kirill <153602297+B-Kirill@users.noreply.github.com> Date: Sat, 18 Jul 2026 07:07:00 +1000 Subject: [PATCH 063/108] Fix weapon targeting error spam for fixtureless entities (#44720) * Fix weapon targeting error spam for fixtureless entities * retry --- Content.Client/Weapons/Ranged/Systems/GunSystem.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Content.Client/Weapons/Ranged/Systems/GunSystem.cs b/Content.Client/Weapons/Ranged/Systems/GunSystem.cs index 355b91045d..599dba9113 100644 --- a/Content.Client/Weapons/Ranged/Systems/GunSystem.cs +++ b/Content.Client/Weapons/Ranged/Systems/GunSystem.cs @@ -521,7 +521,7 @@ public sealed partial class GunSystem : SharedGunSystem private bool CheckFixtures(Entity entity) { - if (!Resolve(entity, ref entity.Comp)) + if (!Resolve(entity, ref entity.Comp, false)) return false; // TODO: Maybe also check that our cursor is intersecting a valid fixture? From 933dd64a8179ac98bf3cc9b05ecd7694cec6683a Mon Sep 17 00:00:00 2001 From: Charlie Morley Date: Fri, 17 Jul 2026 15:52:59 -0500 Subject: [PATCH 064/108] fix drone/remote shuttle consoles not refreshing on some state changes (#42282) * fix drone/remote shuttle consoles not refreshing on some state changes * nitpicks --------- Co-authored-by: jessicamaybe --- .../Shuttles/Systems/ShuttleConsoleSystem.cs | 20 +++++++++---------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/Content.Server/Shuttles/Systems/ShuttleConsoleSystem.cs b/Content.Server/Shuttles/Systems/ShuttleConsoleSystem.cs index ce11a47f28..35ee923877 100644 --- a/Content.Server/Shuttles/Systems/ShuttleConsoleSystem.cs +++ b/Content.Server/Shuttles/Systems/ShuttleConsoleSystem.cs @@ -29,7 +29,6 @@ public sealed partial class ShuttleConsoleSystem : SharedShuttleConsoleSystem [Dependency] private SharedMapSystem _mapSystem = default!; [Dependency] private ActionBlockerSystem _blocker = default!; [Dependency] private AlertsSystem _alertsSystem = default!; - [Dependency] private EntityLookupSystem _lookup = default!; [Dependency] private SharedPopupSystem _popup = default!; [Dependency] private SharedTransformSystem _transform = default!; [Dependency] private ShuttleSystem _shuttle = default!; @@ -39,8 +38,6 @@ public sealed partial class ShuttleConsoleSystem : SharedShuttleConsoleSystem [Dependency] private SharedContentEyeSystem _eyeSystem = default!; [Dependency] private EntityQuery _pilotQuery = default!; - private readonly HashSet> _consoles = new(); - private static readonly ProtoId CanPilotTag = "CanPilot"; public override void Initialize() @@ -102,15 +99,18 @@ public sealed partial class ShuttleConsoleSystem : SharedShuttleConsoleSystem /// public void RefreshShuttleConsoles(EntityUid gridUid) { - var exclusions = new List(); - GetExclusions(ref exclusions); - _consoles.Clear(); - _lookup.GetChildEntities(gridUid, _consoles); + var query = AllEntityQuery(); DockingInterfaceState? dockState = null; - foreach (var entity in _consoles) + while (query.MoveNext(out var uid, out _, out var xform)) { - UpdateState(entity, ref dockState); + if (xform.ParentUid == gridUid + || TryComp(uid, out var drone) + && drone.Entity is { } puppetConsoleUid + && Transform(puppetConsoleUid).ParentUid == gridUid) + { + UpdateState(uid, ref dockState); + } } } @@ -119,8 +119,6 @@ public sealed partial class ShuttleConsoleSystem : SharedShuttleConsoleSystem ///

A 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 diff --git a/Resources/Textures/Structures/Piping/disposal.rsi/conpipe-j2s.png b/Resources/Textures/Structures/Piping/disposal.rsi/conpipe-j2s.png index 24cc4455565d76f8bf8efb0c9d780cd8e657e49b..03f490cee7ba5904d006d1c5c900ae0b4270b2f9 100644 GIT binary patch literal 1350 zcmV-M1-bf(P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D1lvhOK~z}7?N?_{ zV^vrvXrIwH3TF!e}Lb3GIJvk_)BCU zLW=UFs|!!}y*cm9oHOHh@BY93;kvuKLt|qjdV6}rQuOvhp-@0sv-tk~nV#-$G&D4T zpM5a^i9{k^X0zGE9twrTp3CLLp3mpS9*f1EoHH7YXlrYGIRL3t3bk5|zP>(~&1SgW zZV_yFco@ZE5rskl$z&2?0_Jo&#W|fuEm&%AZ+|&}QmKTNmKK->`Y~uR!RvM+9Pl9) z4k8u_A{q%HMF66aFkJRQSWW%3jOdU`@M?7+rI*EHA!JhtEG^7p@B0>x5B6|;xQFse z2}g$q*xFdf{O3ue6H!D%UdTE-UJn3&%}|8DIE2aZB7U5m;Hr9o>#HiF#KhV05q7sX zu{1Y>5U~^Vx&H+KVLx)|1g@{I5e|o`7=!S6T)3?MpnHGd+u91|CJV@CllT;m;{E#; zsJfa^TTfinb*qCPjK{**+}uPU5I}2d>%$5J{HRu|RGcnM`7hVY5bs#QvK$vV;0 z)I{fgMRRkLC}vg&%erm=pN67vI2=-K9(w>Fmv>{kq`~%*8eLs-anI-T2>@SzTSI<0 z1&vAty+#SGS_PM5kj$w|$e0&(=Kmg#5$%Xg~6%c@t5dvTmfmr{wJ`jmSs5e|L1@p7BD2(QyBLEJET`0w1FhHg36@v;hz$07TDPRB#GZR=}TZYGF zhu7tRsm~ySZ?BiJzq^CVatU)YGnD&LXti4LwLHv-E=bc68xW6b45IFKoS=Npe4fJ5 z(GhNMZ}I2PTU1Z>MLWK^xxv}#DZY^Grl+QmNyhQv!!IzIOn5w5@rcHAV%_anB56l7 z=n*fjRLZ!zyhQcl9LKvGD6g*IoI2s&&JLEB7LiHOcoy_QDtX0`>?5J}x@-t|T^Pxx zQCgf6>6n|Mfs}g0^wb2#$8yMJlJI++@YqfG*w*?w0GPVw=4R^cYN2VCqJw1RcG%!{ z^0LE8!>HYAhN<63^3%bnQ=zT(l>of?SpMceOy2yb*?<1}3&|t<8 literal 5205 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 literal 1529 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

public void RefreshShuttleConsoles() { - var exclusions = new List(); - GetExclusions(ref exclusions); var query = AllEntityQuery(); DockingInterfaceState? dockState = null; From 5363203fda8029b675c2841ccfd736a52ddb3131 Mon Sep 17 00:00:00 2001 From: mubururu_ <139181059+muburu@users.noreply.github.com> Date: Fri, 17 Jul 2026 17:05:04 -0400 Subject: [PATCH 065/108] slimepeople can change their eye color again (gives them eyes) (#44508) inirtial --- Resources/Prototypes/Body/Species/slime.yml | 9 +++ .../Species/Slime/organs.rsi/eyeball-l.png | Bin 0 -> 325 bytes .../Species/Slime/organs.rsi/eyeball-r.png | Bin 0 -> 334 bytes .../Mobs/Species/Slime/organs.rsi/meta.json | 72 ++++++++++-------- 4 files changed, 48 insertions(+), 33 deletions(-) create mode 100644 Resources/Textures/Mobs/Species/Slime/organs.rsi/eyeball-l.png create mode 100644 Resources/Textures/Mobs/Species/Slime/organs.rsi/eyeball-r.png diff --git a/Resources/Prototypes/Body/Species/slime.yml b/Resources/Prototypes/Body/Species/slime.yml index 2d6a5d9bea..36d9a91cd7 100644 --- a/Resources/Prototypes/Body/Species/slime.yml +++ b/Resources/Prototypes/Body/Species/slime.yml @@ -69,6 +69,7 @@ FootLeft: OrganSlimePersonFootLeft FootRight: OrganSlimePersonFootRight Brain: OrganSlimePersonCore + Eyes: OrganSlimePersonEyes Lungs: OrganSlimePersonLungs - type: HumanoidProfile species: SlimePerson @@ -260,6 +261,14 @@ metabolizerTypes: [ Slime ] stages: [ Digestion, Bloodstream, Metabolites ] +- type: entity + parent: [ OrganBaseEyes, OrganSlimePersonInternal, OrganSlimePersonExternal ] + id: OrganSlimePersonEyes + components: + - type: VisualOrgan + data: + sprite: Mobs/Customization/eyes.rsi + - type: entity parent: [ OrganBaseLungs, OrganSlimePersonInternal, OrganSlimePersonMetabolizer ] id: OrganSlimePersonLungs diff --git a/Resources/Textures/Mobs/Species/Slime/organs.rsi/eyeball-l.png b/Resources/Textures/Mobs/Species/Slime/organs.rsi/eyeball-l.png new file mode 100644 index 0000000000000000000000000000000000000000..55945f8167573c102a2566dd7b8b8a7cf1c7b273 GIT binary patch literal 325 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}|2+YzKlmLQ?88g=#8W?CCekAwm_wFsl4!J-7O9W3ozG>1VkV!nhzsp>B zl$f@!EyeKWG-CrG5KjJiKV4ta&iG&Yk1tQToA>Q|w>-N1{pt;dhIgAZZwH61^j*iy z(RKi+Xz7A8>GkvXrc|6caG>DP?Q}NrIL0oWHb%9YNe|`ijSXu4^A&S&`SPBY?9l8u z^m)@iV@)l)wvYes?$_U4bjf5Bm%%0(hGLc;U*FU22Q?s`ZE|E}SYID?Z`t*OCxAi0 N;OXk;vd$@?2>>F7gkk^y literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Species/Slime/organs.rsi/eyeball-r.png b/Resources/Textures/Mobs/Species/Slime/organs.rsi/eyeball-r.png new file mode 100644 index 0000000000000000000000000000000000000000..84d0cd345b62c75be3d940da8e29332d7391d345 GIT binary patch literal 334 zcmV-U0kQsxP)Px$2uVaiR9J=Wls&4#Komwljo>R@F9}Q`b}y}O2iZd!S72co8PGbA(!xEshXF0! zfOf$`2&5E6ZN}J4VEl!Q5iRbi?o62bok=bM2!bF8g7`3%vKo0&c+}S-;6K{4g$THN z?_9OS@EAa>f@3cVkGYfxxa&pX;w=JNcq_l92)L_@JUjoIz_6d~q^$3x{8JJaD50Bu z9rGC&_Os4^d(CVc05BCZ_G?+o>u;UE`bRThCZNJ)lEQKt003s&n2H&j^Fg7WH6sB4 zGD$D$HGuhkTey$W4EUQZa5w;fBa_s*7Ak`A4EVinR&6$=S|+E}icLo2!u?+Q5&6At gme(fX1VMZSXKAKp%Jt)i0RR9107*qoM6N<$f|C7=e*gdg literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Species/Slime/organs.rsi/meta.json b/Resources/Textures/Mobs/Species/Slime/organs.rsi/meta.json index 25a0c60180..ed75966e37 100644 --- a/Resources/Textures/Mobs/Species/Slime/organs.rsi/meta.json +++ b/Resources/Textures/Mobs/Species/Slime/organs.rsi/meta.json @@ -1,36 +1,42 @@ { - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Sprited by Nimfar11 (Github) for Space Station 14, inhands by mubururu_ (github)", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "brain" + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Sprited by Nimfar11 (Github) for Space Station 14, eyes & inhands by mubururu_ (github)", + "size": { + "x": 32, + "y": 32 }, - { - "name": "brain-inhand-left", - "directions": 4 - }, - { - "name": "brain-inhand-right", - "directions": 4 - }, - { - "name": "lungs-inhand-left", - "directions": 4 - }, - { - "name": "lungs-inhand-right", - "directions": 4 - }, - { - "name": "lung-l" - }, - { - "name": "lung-r" - } - ] + "states": [ + { + "name": "brain" + }, + { + "name": "brain-inhand-left", + "directions": 4 + }, + { + "name": "brain-inhand-right", + "directions": 4 + }, + { + "name": "eyeball-l" + }, + { + "name": "eyeball-r" + }, + { + "name": "lungs-inhand-left", + "directions": 4 + }, + { + "name": "lungs-inhand-right", + "directions": 4 + }, + { + "name": "lung-l" + }, + { + "name": "lung-r" + } + ] } From dd719b9f3ed0b3e337897257fe3d8750fda65e86 Mon Sep 17 00:00:00 2001 From: Whatstone <166147148+whatston3@users.noreply.github.com> Date: Fri, 17 Jul 2026 18:11:39 -0400 Subject: [PATCH 066/108] Add seed entity argument to StationRecordSystems.TryGetRandomRecord (#44728) * TryGetRandomRecord seed entity argument * Not what it's called * PublicAPI attribute, remark * the public API is both public and an API * generator fix, lighting: good god * Revert "generator fix, lighting: good god" This reverts commit d82aa3dd23403cf248b0ec888ddf2a202fe8f7f4. --- Content.Server/Delivery/DeliverySystem.cs | 2 +- .../Systems/StationRecordsSystem.API.cs | 18 ++++++++++++++++-- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/Content.Server/Delivery/DeliverySystem.cs b/Content.Server/Delivery/DeliverySystem.cs index 49d0892ce0..a8a06889d8 100644 --- a/Content.Server/Delivery/DeliverySystem.cs +++ b/Content.Server/Delivery/DeliverySystem.cs @@ -52,7 +52,7 @@ public sealed partial class DeliverySystem : SharedDeliverySystem if (_station.GetStationInMap(Transform(ent).MapID) is not { } stationId) return; - if (!_records.TryGetRandomRecord(stationId, out var entry)) + if (!_records.TryGetRandomRecord(stationId, out var entry, seedEntity: ent)) return; ent.Comp.RecipientName = entry.Name; diff --git a/Content.Shared/StationRecords/Systems/StationRecordsSystem.API.cs b/Content.Shared/StationRecords/Systems/StationRecordsSystem.API.cs index e80200c151..a7c90e64df 100644 --- a/Content.Shared/StationRecords/Systems/StationRecordsSystem.API.cs +++ b/Content.Shared/StationRecords/Systems/StationRecordsSystem.API.cs @@ -2,6 +2,7 @@ using Content.Shared.Random.Helpers; using Content.Shared.StationRecords.Components; using Content.Shared.StationRecords.Events; +using JetBrains.Annotations; using Robust.Shared.Random; namespace Content.Shared.StationRecords.Systems; @@ -11,6 +12,7 @@ public sealed partial class StationRecordsSystem /// /// Set the station records key for an id/pda. /// + [PublicAPI] public void SetIdKey(EntityUid? uid, StationRecordKey key) { if (uid is not {} idUid) @@ -31,6 +33,7 @@ public sealed partial class StationRecordsSystem /// The station and key to remove. /// Station records component. /// True if the record was removed, false otherwise. + [PublicAPI] public bool RemoveRecord(StationRecordKey key, StationRecordsComponent? records = null) { if (!_recordsQuery.Resolve(key.OriginStation, ref records)) @@ -51,9 +54,12 @@ public sealed partial class StationRecordsSystem ///
/// The EntityId of the station from which you want to get the record. /// The resulting entry. + /// An optional entity to use as a seed (see remarks). /// Type to get from the record set. /// True if a record was obtained. False otherwise. - public bool TryGetRandomRecord(Entity ent, [NotNullWhen(true)] out T? entry) where T : StationRecord + /// should be used where possible with predicted randomness to prevent repeated values within a tick. + [PublicAPI] + public bool TryGetRandomRecord(Entity ent, [NotNullWhen(true)] out T? entry, EntityUid? seedEntity = null) where T : StationRecord { entry = default; @@ -63,7 +69,7 @@ public sealed partial class StationRecordsSystem if (ent.Comp.Records.Keys.Count == 0) return false; - var random = SharedRandomExtensions.PredictedRandom(_timing, GetNetEntity(ent.Owner)); + var random = SharedRandomExtensions.PredictedRandom(_timing, GetNetEntity(seedEntity ?? ent.Owner)); var key = random.Pick(ent.Comp.Records.Keys); return ent.Comp.Records.TryGetRecordEntry(key, out entry); @@ -72,6 +78,7 @@ public sealed partial class StationRecordsSystem /// /// Get the name for a record, or an empty string if it has no record. /// + [PublicAPI] public string RecordName(StationRecordKey key) { return !TryGetRecord(key, out var record) ? string.Empty : record.Name; @@ -83,6 +90,7 @@ public sealed partial class StationRecordsSystem /// The station to add the record to. /// The record to add. /// The type of record to add. + [PublicAPI] public StationRecordKey AddRecordEntry(Entity station, T record) where T : StationRecord { if (!_recordsQuery.Resolve(station, ref station.Comp)) @@ -100,6 +108,7 @@ public sealed partial class StationRecordsSystem /// The record to add. /// Station records component. /// The type of record to add. + [PublicAPI] public void AddRecordEntry(StationRecordKey key, T record, StationRecordsComponent? records = null) where T : StationRecord @@ -115,6 +124,7 @@ public sealed partial class StationRecordsSystem /// Synchronizes a station's records with any systems that need it. ///
/// The station to synchronize any recently accessed records with. + [PublicAPI] public void Synchronize(Entity station) { if (!_recordsQuery.Resolve(station, ref station.Comp)) @@ -135,6 +145,7 @@ public sealed partial class StationRecordsSystem ///
/// The station and id of the record /// Station records component. + [PublicAPI] public void Synchronize(StationRecordKey key, StationRecordsComponent? records = null) { if (!_recordsQuery.Resolve(key.OriginStation, ref records)) @@ -157,6 +168,7 @@ public sealed partial class StationRecordsSystem /// Station record component. /// Type to get from the record set. /// True if the record was obtained, false otherwise. Always false on client. + [PublicAPI] public bool TryGetRecord(StationRecordKey key, [NotNullWhen(true)] out T? entry, StationRecordsComponent? records = null) where T : StationRecord { entry = null; @@ -172,6 +184,7 @@ public sealed partial class StationRecordsSystem /// The station to get the records from. /// Type of record to fetch /// Enumerable of pairs with a station record key, and the entry in question of type T. Always empty on client. + [PublicAPI] public IEnumerable<(uint, T)> GetRecordsOfType(Entity station) { if (!_recordsQuery.Resolve(station, ref station.Comp)) @@ -187,6 +200,7 @@ public sealed partial class StationRecordsSystem /// Linear search so O(n) time complexity. /// /// Returns a station record id. Always null on client. + [PublicAPI] public uint? GetRecordByName(Entity station, string name) { if (!_recordsQuery.Resolve(station, ref station.Comp, false)) From 3c6cd576c9e8d85bbe9654d8e49b5004aea6018e Mon Sep 17 00:00:00 2001 From: mrhappypenguin Date: Fri, 17 Jul 2026 19:32:25 -0400 Subject: [PATCH 067/108] Add option to toggle HRTF audio processing (#44187) Added HRTF Co-authored-by: mrhappypenguin Co-authored-by: AJCM-git --- Content.Client/Options/UI/Tabs/AudioTab.xaml | 3 ++- Content.Client/Options/UI/Tabs/AudioTab.xaml.cs | 1 + Resources/Locale/en-US/escape-menu/ui/options-menu.ftl | 1 + 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/Content.Client/Options/UI/Tabs/AudioTab.xaml b/Content.Client/Options/UI/Tabs/AudioTab.xaml index 5764755bb9..599468825f 100644 --- a/Content.Client/Options/UI/Tabs/AudioTab.xaml +++ b/Content.Client/Options/UI/Tabs/AudioTab.xaml @@ -1,4 +1,4 @@ - @@ -20,6 +20,7 @@ + diff --git a/Content.Client/Options/UI/Tabs/AudioTab.xaml.cs b/Content.Client/Options/UI/Tabs/AudioTab.xaml.cs index 948517a8b2..6b46540f3f 100644 --- a/Content.Client/Options/UI/Tabs/AudioTab.xaml.cs +++ b/Content.Client/Options/UI/Tabs/AudioTab.xaml.cs @@ -64,6 +64,7 @@ public sealed partial class AudioTab : Control Control.AddOptionCheckBox(CCVars.EventMusicEnabled, EventMusicCheckBox); Control.AddOptionCheckBox(CCVars.AdminSoundsEnabled, AdminSoundsCheckBox); Control.AddOptionCheckBox(CCVars.BwoinkSoundEnabled, BwoinkSoundCheckBox); + Control.AddOptionCheckBox(CCVars.AudioHrtf, AudioHrtfCheckBox); Control.Initialize(); } diff --git a/Resources/Locale/en-US/escape-menu/ui/options-menu.ftl b/Resources/Locale/en-US/escape-menu/ui/options-menu.ftl index c5476ad4d9..39a6c78e05 100644 --- a/Resources/Locale/en-US/escape-menu/ui/options-menu.ftl +++ b/Resources/Locale/en-US/escape-menu/ui/options-menu.ftl @@ -39,6 +39,7 @@ ui-options-restart-sounds = Round Restart Sounds ui-options-event-music = Event Music ui-options-admin-sounds = Play Admin Sounds ui-options-bwoink-sound = Play AHelp Notification Sound +ui-options-audio-hrtf = Enable HRTF Audio Processing (Requires Restart) ui-options-volume-label = Volume ## Graphics menu From b57772c3ad9bfd1f3aafa63d8727a2389bf5f60c Mon Sep 17 00:00:00 2001 From: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> Date: Sat, 18 Jul 2026 10:37:46 +1000 Subject: [PATCH 068/108] Update submodule to 283.1.0 (#44737) --- RobustToolbox | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/RobustToolbox b/RobustToolbox index 960edb32c4..b7fb6cd70d 160000 --- a/RobustToolbox +++ b/RobustToolbox @@ -1 +1 @@ -Subproject commit 960edb32c4dd417496e4667177625d8c3cb14f7e +Subproject commit b7fb6cd70d6ba2d5d73886776a409e6444fd0093 From 2ab5af40523a9c374fec5d2d742d7db2cbc41aec Mon Sep 17 00:00:00 2001 From: sleepyyapril <123355664+sleepyyapril@users.noreply.github.com> Date: Fri, 17 Jul 2026 21:38:13 -0300 Subject: [PATCH 069/108] Color.TryFromHex returns a bool and outputs a color (#44581) --- Content.Server/Administration/Commands/SetAdminOOC.cs | 7 +++---- Content.Server/Sandbox/Commands/ColorNetworkCommand.cs | 5 ++--- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/Content.Server/Administration/Commands/SetAdminOOC.cs b/Content.Server/Administration/Commands/SetAdminOOC.cs index f889ddc15d..d2087f2b57 100644 --- a/Content.Server/Administration/Commands/SetAdminOOC.cs +++ b/Content.Server/Administration/Commands/SetAdminOOC.cs @@ -28,8 +28,7 @@ namespace Content.Server.Administration.Commands if (string.IsNullOrEmpty(colorArg)) return; - var color = Color.TryFromHex(colorArg); - if (!color.HasValue) + if (!Color.TryFromHex(colorArg, out var color)) { shell.WriteError(Loc.GetString("shell-invalid-color-hex")); return; @@ -37,10 +36,10 @@ namespace Content.Server.Administration.Commands var userId = shell.Player.UserId; // Save the DB - _dbManager.SaveAdminOOCColorAsync(userId, color.Value); + _dbManager.SaveAdminOOCColorAsync(userId, color); // Update the cached preference var prefs = _preferenceManager.GetPreferences(userId); - prefs.AdminOOCColor = color.Value; + prefs.AdminOOCColor = color; } } } diff --git a/Content.Server/Sandbox/Commands/ColorNetworkCommand.cs b/Content.Server/Sandbox/Commands/ColorNetworkCommand.cs index 98e72b6a05..a7e3efb083 100644 --- a/Content.Server/Sandbox/Commands/ColorNetworkCommand.cs +++ b/Content.Server/Sandbox/Commands/ColorNetworkCommand.cs @@ -56,14 +56,13 @@ namespace Content.Server.Sandbox.Commands return; } - var color = Color.TryFromHex(args[2]); - if (!color.HasValue) + if (!Color.TryFromHex(args[2], out var color)) { shell.WriteError(Loc.GetString("shell-invalid-color-hex")); return; } - PaintNodes(nodeContainerComponent, nodeGroupId, color.Value); + PaintNodes(nodeContainerComponent, nodeGroupId, color); } private void PaintNodes(NodeContainerComponent nodeContainerComponent, NodeGroupID nodeGroupId, Color color) From 8331ca1b1d9a739eb0d029e61a8b9740b1770f6a Mon Sep 17 00:00:00 2001 From: Connor Huffine Date: Fri, 17 Jul 2026 20:54:30 -0400 Subject: [PATCH 070/108] Remove M90GL (#44736) * Remove M90GL Content Signed-off-by: Connor Huffine * Update Migration Signed-off-by: Connor Huffine --------- Signed-off-by: Connor Huffine --- .../Catalog/Fills/Backpacks/duffelbag.yml | 20 -------- .../Objects/Weapons/Guns/Rifles/rifles.yml | 43 ------------------ Resources/Prototypes/Magic/event_spells.yml | 2 - Resources/Prototypes/tags.yml | 4 +- .../Weapons/Guns/Rifles/carbine.rsi/base.png | Bin 357 -> 0 bytes .../Guns/Rifles/carbine.rsi/bolt-open.png | Bin 356 -> 0 bytes .../Rifles/carbine.rsi/equipped-BACKPACK.png | Bin 1037 -> 0 bytes .../carbine.rsi/equipped-SUITSTORAGE.png | Bin 1037 -> 0 bytes .../Weapons/Guns/Rifles/carbine.rsi/icon.png | Bin 369 -> 0 bytes .../Guns/Rifles/carbine.rsi/inhand-left.png | Bin 328 -> 0 bytes .../Guns/Rifles/carbine.rsi/inhand-right.png | Bin 342 -> 0 bytes .../Weapons/Guns/Rifles/carbine.rsi/mag-0.png | Bin 189 -> 0 bytes .../Weapons/Guns/Rifles/carbine.rsi/meta.json | 39 ---------------- Resources/migration.yml | 3 ++ 14 files changed, 5 insertions(+), 106 deletions(-) delete mode 100644 Resources/Textures/Objects/Weapons/Guns/Rifles/carbine.rsi/base.png delete mode 100644 Resources/Textures/Objects/Weapons/Guns/Rifles/carbine.rsi/bolt-open.png delete mode 100644 Resources/Textures/Objects/Weapons/Guns/Rifles/carbine.rsi/equipped-BACKPACK.png delete mode 100644 Resources/Textures/Objects/Weapons/Guns/Rifles/carbine.rsi/equipped-SUITSTORAGE.png delete mode 100644 Resources/Textures/Objects/Weapons/Guns/Rifles/carbine.rsi/icon.png delete mode 100644 Resources/Textures/Objects/Weapons/Guns/Rifles/carbine.rsi/inhand-left.png delete mode 100644 Resources/Textures/Objects/Weapons/Guns/Rifles/carbine.rsi/inhand-right.png delete mode 100644 Resources/Textures/Objects/Weapons/Guns/Rifles/carbine.rsi/mag-0.png delete mode 100644 Resources/Textures/Objects/Weapons/Guns/Rifles/carbine.rsi/meta.json diff --git a/Resources/Prototypes/Catalog/Fills/Backpacks/duffelbag.yml b/Resources/Prototypes/Catalog/Fills/Backpacks/duffelbag.yml index 3dbe34a1a4..b447f515d4 100644 --- a/Resources/Prototypes/Catalog/Fills/Backpacks/duffelbag.yml +++ b/Resources/Prototypes/Catalog/Fills/Backpacks/duffelbag.yml @@ -137,26 +137,6 @@ - id: GrenadeFrag amount: 4 -- type: entity - parent: ClothingBackpackDuffelSyndicateBundle - id: ClothingBackpackDuffelSyndicateFilledCarbine - name: M-90gl bundle - description: "A versatile battle rifle with an attached grenade launcher, bundled with 3 magazines and 6 grenades of various capabilities." - components: - - type: EntityTableContainerFill - containers: - storagebase: !type:AllSelector - children: - - id: WeaponRifleM90GrenadeLauncher - - id: MagazineRifle - amount: 2 - - id: GrenadeBlast - amount: 2 - - id: GrenadeFlash - amount: 2 - - id: GrenadeFrag - amount: 2 - - type: entity parent: ClothingBackpackDuffelSyndicateAmmo id: ClothingBackpackDuffelSyndicateAmmoFilled diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Rifles/rifles.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Rifles/rifles.yml index 5324eb6d84..961705ebd4 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Rifles/rifles.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Rifles/rifles.yml @@ -100,49 +100,6 @@ zeroVisible: true - type: Appearance -- type: entity - name: M90 GL - parent: [BaseWeaponRifle, BaseSyndicateContraband] - id: WeaponRifleM90GrenadeLauncher - description: "An older bullpup carbine model, with an attached underbarrel grenade launcher.\nFeeds from .20 rifle magazines." - components: - - type: Sprite - sprite: Objects/Weapons/Guns/Rifles/carbine.rsi - layers: - - state: base - map: ["enum.GunVisualLayers.Base"] - - state: mag-0 - map: ["enum.GunVisualLayers.Mag"] - - type: Clothing - sprite: Objects/Weapons/Guns/Rifles/carbine.rsi - - type: ItemSlots - slots: - gun_magazine: - name: Magazine - startingItem: MagazineRifle - insertSound: /Audio/Weapons/Guns/MagIn/batrifle_magin.ogg - ejectSound: /Audio/Weapons/Guns/MagOut/batrifle_magout.ogg - priority: 2 - whitelist: - tags: - - MagazineRifle - whitelistFailPopup: gun-magazine-whitelist-fail - gun_chamber: - name: Chamber - priority: 1 - whitelist: - tags: - - CartridgeRifle - - type: ContainerContainer - containers: - gun_magazine: !type:ContainerSlot - gun_chamber: !type:ContainerSlot - - type: MagazineVisuals - magState: mag - steps: 1 - zeroVisible: true - - type: Appearance - - type: entity name: Lecter parent: [BaseWeaponRifle, BaseSecurityContraband] diff --git a/Resources/Prototypes/Magic/event_spells.yml b/Resources/Prototypes/Magic/event_spells.yml index 3872f43ae2..8afd6e987d 100644 --- a/Resources/Prototypes/Magic/event_spells.yml +++ b/Resources/Prototypes/Magic/event_spells.yml @@ -52,8 +52,6 @@ orGroup: Guns - id: WeaponRifleAk orGroup: Guns - - id: WeaponRifleM90GrenadeLauncher - orGroup: Guns - id: WeaponRifleLecter orGroup: Guns - id: WeaponShotgunBulldog diff --git a/Resources/Prototypes/tags.yml b/Resources/Prototypes/tags.yml index cd6d74d98c..1cc44c0097 100644 --- a/Resources/Prototypes/tags.yml +++ b/Resources/Prototypes/tags.yml @@ -906,7 +906,7 @@ id: MagazinePistolSubMachineGunTopMounted # WeaponSubMachineGunWt550 - type: Tag - id: MagazineRifle # WeaponRifleLecter, WeaponRifleEstoc, WeaponRifleM90GrenadeLauncher + id: MagazineRifle # WeaponRifleLecter, WeaponRifleEstoc - type: Tag id: MagazineShotgun # WeaponShotgunBulldog @@ -1420,7 +1420,7 @@ - type: Tag id: TeleportScrollWarpBlacklist # blacklists a warp point for the wizard's teleport scroll - + - type: Tag id: TheaterBagel # used for Bagel Station's randomized theater diff --git a/Resources/Textures/Objects/Weapons/Guns/Rifles/carbine.rsi/base.png b/Resources/Textures/Objects/Weapons/Guns/Rifles/carbine.rsi/base.png deleted file mode 100644 index c9f1ce49e3745c478166924941dbc9a1cc24cb8a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 357 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfv#^NA%C&rs6b?Si}&H|6fVg?3o zVGw3ym^DWND5x9Y6XFV__4W0got<-Yb62cb;p*xtCnqNqYAO&mkaX=1 z_yN?wUlQaO%JY!?DWXdyTiJi+bi_8sYuX`waB{n g;GaLU?f=ZZr=OuL_h@RoEYJrGp00i_>zopr08-z6K>z>% diff --git a/Resources/Textures/Objects/Weapons/Guns/Rifles/carbine.rsi/bolt-open.png b/Resources/Textures/Objects/Weapons/Guns/Rifles/carbine.rsi/bolt-open.png deleted file mode 100644 index 477b65066e29f35f3165a7e6a8041dc9757bfc44..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 356 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfv#^NA%C&rs6b?Si}&H|6fVg?3o zVGw3ym^DWND5x9Y6XFV__4W0got<-Yb62cb;p*xtCnqN^E-on{1|;?L^fc5|fD8z* zQ>>j1)WBa7q+-t535I-!40v2)+c?BpW?x!k z;W}6IA(M=%+oubiYq{GKoXf0l^=J;31U>gTe~DWM4f+lqi2 diff --git a/Resources/Textures/Objects/Weapons/Guns/Rifles/carbine.rsi/equipped-BACKPACK.png b/Resources/Textures/Objects/Weapons/Guns/Rifles/carbine.rsi/equipped-BACKPACK.png deleted file mode 100644 index 8e2f1548b12211694921bece840f8444f829e75f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1037 zcmV+o1oHcdP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D1ENVpK~#8N?V7)9 z+dve@FCD$qDGs!hx?Q|vNY+5W24@cbD?IwI$(Vn@tH~Tg41ug!ym)C{N;}vjOR~Cr zE_&hW%F>-=$tryx5R&ra^nLH%y_4>pQ4~c{6eW>nv$;AxK3+w)l?Sb8j&2iq6P;6O zG#X|&99Gr|XJ=oT_x*>DhC{~r z!^4B=_xtu*qV?wH#-7u3L+;)>KR;hRJw2J{=Vx^ZKk zuKswSgl7>*+ax)_c)%fO$wIIL$o7nPjnO3W1ujwsB+MA5vL@}Oh zPumg&dE16U91vYv_V@QQ3&r^LOiz2T4dV*~C#*Xn58G}}Q4~c{6h%=KMNtCy7d}Zt zHF_2&P1Y(A(O z)C5EuTG8x-mjfs|QgW^;6h$bR3uu)>X&T-`fCgEgPhuApBkGj3S}nSJDVzBk4?!!d zvPv7b(p$z3k#(d(O<{DoT-pLj=qj{#1W@px79aNj*&*VFVbMs18Yt4D32kT$sZe`4 zfGI^1j9Z}rdY&_3Sk@*9sZfJko_7l=nFeiWjBdT~iU8{K(y(kv z+Z9Q(jA%nEn(a*rUJh_KCCEmFD&lH$H7DWa0FWwe+RM-`5pC-gPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D1ENVpK~#8N?V7)9 z+dve@FCD$qDGs!hx?Q|vNY+5W24@cbD?IwI$(Vn@tH~Tg41ug!ym)C{N;}vjOR~Cr zE_&hW%F>-=$tryx5R&ra^nLH%y_4>pQ4~c{6eW>nv$;AxK3+w)l?Sb8j&2iq6P;6O zG#X|&99Gr|XJ=oT_x*>DhC{~r z!^4B=_xtu*qV?wH#-7u3L+;)>KR;hRJw2J{=Vx^ZKk zuKswSgl7>*+ax)_c)%fO$wIIL$o7nPjnO3W1ujwsB+MA5vL@}Oh zPumg&dE16U91vYv_V@QQ3&r^LOiz2T4dV*~C#*Xn58G}}Q4~c{6h%=KMNtCy7d}Zt zHF_2&P1Y(A(O z)C5EuTG8x-mjfs|QgW^;6h$bR3uu)>X&T-`fCgEgPhuApBkGj3S}nSJDVzBk4?!!d zvPv7b(p$z3k#(d(O<{DoT-pLj=qj{#1W@px79aNj*&*VFVbMs18Yt4D32kT$sZe`4 zfGI^1j9Z}rdY&_3Sk@*9sZfJko_7l=nFeiWjBdT~iU8{K(y(kv z+Z9Q(jA%nEn(a*rUJh_KCCEmFD&lH$H7DWa0FWwe+RM-`5pC-geK@{oCO|{#S9GG z!XV7ZFl&wkP|z&EC&U#<>+9<~J3Hs*=B`+=!qwGPPEO9j#v&>#Ktn@AQbJ4|3^deK z^z`%~Y#`}Wb4LZJQ>Y}!FPPy!46v{QS)6=azTb^@0A;s%x;TbZ%y}EgD0E1HXR&6P z*4-=r>#uF$nR_o+{=yf&bt;+MQ$8J+bNQypqOQddV%FzkMS;hK`y)e>IKyd1pRX)CzT00`+TeKd&A;`9b#u0y-RxV^A$K>9O*D3M zm%D+&*{F{R4fd{6b*hf5OwIOGV`uvkwz_dogWW~3(+{!@IUJPRWBA`(;LY4#X)93G zuKwid4B@8AV+}1IzA4PeZ`gA5>Bkor|1PQ9F8lJ|=ly^5%M`EjpIEuzkkhVqzIBy* zn?>7h)ZCc+_V=!1&ff%G9D3WCA_7^aRGeUFlni>Lcsg2w@wsu}|NgIRhqv&FeBT>3 Q59k>NPgg&ebxsLQ0FAeRa{vGU diff --git a/Resources/Textures/Objects/Weapons/Guns/Rifles/carbine.rsi/inhand-right.png b/Resources/Textures/Objects/Weapons/Guns/Rifles/carbine.rsi/inhand-right.png deleted file mode 100644 index 4012bbe0af686be457423fc78ce445e14dc6b41f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 342 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|e#^NA%C&rs6b?Si}&H|6fVg?3o zVGw3ym^DWNC@2)*6XFV_m6erUU0qXCQ~Ue-1%;#&7%uz-in5gi`2{ol2ZB(as#P37 zk<*?ojv*Cu-cETacu0Y#)%g`e2X{*wqt;u7xKgI?@@}Utiutap|N7>)_@{T?JDS-y zyyj2IiJfRNrzSK(oiR5?uub)#%*-<}JMM8YZ+Kl`#}^nWbiPC*Vb4j?Nqc0EF(m}K zF+}i5HeP?RwQiTke8Dqoxjar6?~{`&b#ST(Z_Aa~CcV3?cE6o%ymP~QUa?ur?>~-{ zWjPzsYq&SBXEhe9fMYQkVSsxS5W795QHkWcw1OFvVa7L!j>zRh~;ue*H^M et@&CX#lMn;Z-La7R2!hT7(8A5T-G@yGywpngLp~+ diff --git a/Resources/Textures/Objects/Weapons/Guns/Rifles/carbine.rsi/mag-0.png b/Resources/Textures/Objects/Weapons/Guns/Rifles/carbine.rsi/mag-0.png deleted file mode 100644 index 50feca5bb6e1fb88bb6cc32e5a3639a1b79973f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 189 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfv#^NA%C&rs6b?Si}&H|6fVg?3o zVGw3ym^DWNC@2x&6XFV_9c(P3!U8ljG$bX&G}KhY!N8*^ED0#bQ4-`A%<%vJf0qCM zS#KV_Hw`GJ<>}%WQZXkvL4uW~aRR5-{Llc&&<5Rr6AYm$p%Q0#wz1@>i3dD0xW&xy XqLnF~FK*>ype_baS3j3^P6 Date: Sat, 18 Jul 2026 11:17:28 +1000 Subject: [PATCH 071/108] Fix cloningsystem proxy call (#44739) Content should check this but okay! --- Content.Server/Cloning/CloningSystem.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Content.Server/Cloning/CloningSystem.cs b/Content.Server/Cloning/CloningSystem.cs index 2abf6f7e25..cd18575b1c 100644 --- a/Content.Server/Cloning/CloningSystem.cs +++ b/Content.Server/Cloning/CloningSystem.cs @@ -132,7 +132,7 @@ public sealed partial class CloningSystem : SharedCloningSystem // If the original does not have the component, then the clone shouldn't have it either. RemComp(clone, componentRegistration.Type); - if (EntityManager.TryGetComponent(original, componentRegistration.Type, out var sourceComp)) // Does the original have this component? + if (TryComp(original, componentRegistration.Type, out var sourceComp)) // Does the original have this component? { CopyComp(original, clone, sourceComp); } From 36507a9a4f97cb53df68cfd7b566b548f3f7585a Mon Sep 17 00:00:00 2001 From: Whatstone <166147148+whatston3@users.noreply.github.com> Date: Fri, 17 Jul 2026 21:18:22 -0400 Subject: [PATCH 072/108] DunGen.AutoCabling: prevent missing key lookup when frontier exhausted (#44511) AutoCabling: start a new frontier if old exhausted --- Content.Server/Procedural/DungeonJob/DungeonJob.AutoCabling.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Content.Server/Procedural/DungeonJob/DungeonJob.AutoCabling.cs b/Content.Server/Procedural/DungeonJob/DungeonJob.AutoCabling.cs index f9712af6ab..e21c803e28 100644 --- a/Content.Server/Procedural/DungeonJob/DungeonJob.AutoCabling.cs +++ b/Content.Server/Procedural/DungeonJob/DungeonJob.AutoCabling.cs @@ -65,6 +65,8 @@ public sealed partial class DungeonJob { var newStart = remaining.First(); frontier.Enqueue(newStart, 0f); + if (!costSoFar.ContainsKey(newStart)) + costSoFar[newStart] = 0f; lastDirection[newStart] = Direction.Invalid; } From 2b6bdbd18d01b56d62c3487946a711bcba03c71f Mon Sep 17 00:00:00 2001 From: Atakku Date: Sat, 18 Jul 2026 03:26:28 +0200 Subject: [PATCH 073/108] Manual changelog update (#44734) * Added some changelogs * More changelogs * Removed duplicate double pr * More changelogs * Removed duplicate changelog * More changelogs * More changelogs * More changelogs * More changelogs * More changelogs * More changelogs * More changelogs * More changelogs * More changelogs * That PR got reverted * More changelogs * Caught up with all the prs * 3 more PR's have been merged since I started this * Possibly fix the testfail --- Resources/Changelog/Admin.yml | 129 +++++ Resources/Changelog/Changelog.yml | 881 ++++++++++++++++++++++++++++++ Resources/Changelog/Maps.yml | 39 ++ 3 files changed, 1049 insertions(+) diff --git a/Resources/Changelog/Admin.yml b/Resources/Changelog/Admin.yml index a8354f9a19..52c950850c 100644 --- a/Resources/Changelog/Admin.yml +++ b/Resources/Changelog/Admin.yml @@ -1754,5 +1754,134 @@ Entries: id: 214 time: '2026-06-05T15:24:37.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/44243 +- author: PJB3005 + changes: + - message: When a character name gets mentioned in an adminhelp message, the game will now attempt to provide a "quick info" link for the relevant player/entity. + type: Add + id: 215 + time: '2026-06-20T23:47:06.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/44319 +- author: Axionyxx + changes: + - message: Trust score and account creation date are now displayed in the player panel + type: Add + id: 216 + time: '2026-06-21T20:23:20.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/44317 +- author: PJB3005 + changes: + - message: admin_overlay command to enable/disable admin overlay from scripts + type: Add + id: 217 + time: '2026-06-21T22:16:12.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/44326 +- author: PJB3005 + changes: + - message: Admin logs now have their timezone displayed in local time rather than UTC + type: Fix + id: 218 + time: '2026-06-22T14:49:24.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/44332 +- author: PJB3005 + changes: + - message: '"Respawn" admin action has been renamed to "return to lobby." Similar related actions have had tooltips added to clarify behavior.' + type: Tweak + id: 219 + time: '2026-06-23T01:10:43.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/44333 +- author: PJB3005 + changes: + - message: '"Admin only" and "Play sound" options when sending bwoinks now work properly if the UI is popped out' + type: Fix + id: 220 + time: '2026-06-23T18:21:02.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/44334 +- author: JustinWinningham + changes: + - message: Admin panel now groups like types when sorting on 'Role Type' column + type: Fix + id: 221 + time: '2026-06-26T03:02:06.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/43897 +- author: ScarKy0 + changes: + - message: Aghosts can now open several storage UIs at once. To bring back previous behaviour remove your "BypassOpenStorageLimit" tag. + type: Add + id: 222 + time: '2026-06-29T09:16:25.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/44404 +- author: Samuka-C + changes: + - message: Added a new button to the server tab which toggles dead chat! + type: Add + id: 223 + time: '2026-06-29T19:22:11.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/44367 +- author: Samuka-C + changes: + - message: Added the Stinky smite, for the stinkiest players + type: Add + id: 224 + time: '2026-07-02T22:35:28.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/44394 +- author: Doru991 + changes: + - message: Quick info links in the ahelp window now only trigger for entities that are being or have been controlled by a player. + type: Tweak + id: 225 + time: '2026-07-08T08:50:01.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/44373 +- author: Errant-4 + changes: + - message: The F7 playertab's filter now also works with role (Crew Aligned, Team Antagonist etc) and role subtype (Traitor, Zombie etc). + type: Tweak + id: 226 + time: '2026-07-09T18:30:10.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/44592 +- author: w3ryfrate + changes: + - message: Added "togglechat" command to easily toggle dead, ooc and looc channels on/off. + type: Add + - message: Removed commands "setdeadchat", "setlooc" and "setooc." + type: Remove + id: 227 + time: '2026-07-13T06:06:59.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/44480 +- author: Crude Oil + changes: + - message: Admin logs command autocompletes on players + type: Add + - message: Admins now have a "player logs" verb that opens admin logs with that player selected + type: Add + - message: Added "player logs" button to the ahelp window + type: Add + - message: Removed "ban list" button from the ahelp window + type: Remove + - message: Player selection in admin logs remains consistent when selecting different rounds + type: Tweak + id: 228 + time: '2026-07-14T21:11:47.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/44604 +- author: Samuka + changes: + - message: Added the event log button to log events more easily! + type: Add + id: 229 + time: '2026-07-15T00:01:34.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/44655 +- author: TriviaSolari + changes: + - message: Editing ion laws now properly randomizes law numbers + type: Fix + id: 230 + time: '2026-07-15T03:04:04.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/42806 +- author: SlamBamActionman + changes: + - message: Admin ghosts and Godmode are now immune to lube/glue effects on items. + type: Fix + id: 231 + time: '2026-07-16T15:31:45.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/44552 Name: Admin Order: 3 diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index f8bf281b41..6042b28f8b 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -4100,3 +4100,884 @@ id: 9740 time: '2026-06-04T22:38:24.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/44240 +- author: PJB3005 + changes: + - message: Ghosts can now click a follow button next to chat messages to jump there immediately! Can be turned off in settings. + type: Add + id: 9741 + time: '2026-06-12T16:19:35.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/44284 +- author: riccardi48 + changes: + - message: Force gun's sprite now changes on use + type: Fix + id: 9742 + time: '2026-06-15T17:27:47.0000000+00:00' + url: https://github.com/space-wizards-federation/space-station-14/pull/14 +- author: jessicamaybe + changes: + - message: Removed the action from winter coats. You can still use the verb to toggle them. + type: Remove + id: 9743 + time: '2026-06-15T22:17:21.0000000+00:00' + url: https://github.com/space-wizards-federation/space-station-14/pull/24 +- author: riccardi48 + changes: + - message: Fixed modifier color for plant metabolism effects + type: Fix + id: 9744 + time: '2026-06-15T22:32:18.0000000+00:00' + url: https://github.com/space-wizards-federation/space-station-14/pull/13 +- author: whatston3 + changes: + - message: Moproaches will now properly clean up spills, and spider bites carry toxin again. + type: Fix + id: 9745 + time: '2026-06-16T00:46:10.0000000+00:00' + url: https://github.com/space-wizards-federation/space-station-14/pull/41 +- author: mnva0 + changes: + - message: Scarves now help insulate from cold temperatures. This is equivalent to the protection of winter boots. + type: Tweak + id: 9746 + time: '2026-06-16T10:11:47.0000000+00:00' + url: https://github.com/space-wizards-federation/space-station-14/pull/47 +- author: ScarKy0 + changes: + - message: Handheld Mortars and Juicers now work again. + type: Fix + id: 9747 + time: '2026-06-16T23:55:43.0000000+00:00' + url: https://github.com/space-wizards-federation/space-station-14/pull/50 +- author: chromiumboy + changes: + - message: Things travelling long distances through the disposal network should no longer cause disposal pipes to spontaneously unanchor, unless they are genuinely trapped in a loop. + type: Fix + id: 9748 + time: '2026-06-17T14:28:11.0000000+00:00' + url: https://github.com/space-wizards-federation/space-station-14/pull/3 +- author: kontakt + changes: + - message: Borgs no long destroy their posi when engaging martyr module. + type: Fix + id: 9749 + time: '2026-06-18T02:55:28.0000000+00:00' + url: https://github.com/space-wizards-federation/space-station-14/pull/84 +- author: riccardi48 + changes: + - message: Fixed a bug which prevented departments from canceling their own orders from their departments request console + type: Fix + id: 9750 + time: '2026-06-18T21:16:10.0000000+00:00' + url: https://github.com/space-wizards-federation/space-station-14/pull/11 +- author: riccardi48 + changes: + - message: The approval section on order labels will now be filled out correctly. + type: Fix + id: 9751 + time: '2026-06-18T22:40:33.0000000+00:00' + url: https://github.com/space-wizards-federation/space-station-14/pull/15 +- author: rumaks-xyz + changes: + - message: Tasers are no longer available in security lockers + type: Remove + id: 9752 + time: '2026-06-19T02:01:18.0000000+00:00' + url: https://github.com/space-wizards-federation/space-station-14/pull/67 +- author: jessicamaybe + changes: + - message: Ambient music should now play in their proper locations + type: Fix + id: 9753 + time: '2026-06-19T02:51:42.0000000+00:00' + url: https://github.com/space-wizards-federation/space-station-14/pull/28 +- author: YoungThugSS14 + changes: + - message: The Wand of Entrance is no longer in the random magic item spell pool, note the Staff of Entrance is. + type: Tweak + id: 9754 + time: '2026-06-19T10:01:42.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/43933 +- author: iaada + changes: + - message: Atmospheric entities have been given their own category in the construction menu filter. + type: Add + id: 9755 + time: '2026-06-20T02:04:31.0000000+00:00' + url: https://github.com/space-wizards-federation/space-station-14/pull/94 +- author: RemFexxel + changes: + - message: Edited Space Law for better readability. + type: Tweak + id: 9756 + time: '2026-06-20T13:50:49.0000000+00:00' + url: https://github.com/space-wizards-federation/space-station-14/pull/1 +- author: ThatGuyUSA + changes: + - message: Fixed janitorial winter coat in-hand sprite. + type: Fix + id: 9757 + time: '2026-06-20T14:47:54.0000000+00:00' + url: https://github.com/space-wizards-federation/space-station-14/pull/128 +- author: insoPL + changes: + - message: Directional arrows were added to recyclers + type: Add + id: 9758 + time: '2026-06-20T22:03:52.0000000+00:00' + url: https://github.com/space-wizards-federation/space-station-14/pull/118 +- author: Festivite + changes: + - message: Fixed an inconsistent lighter outline coloring on the HOP's job icon. + type: Fix + id: 9759 + time: '2026-06-21T19:04:30.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/44292 +- author: ArtisticRoomba + changes: + - message: Filled foolboxes have slightly less items in them, as there was a chance to overfill the box and spawn an item outside of it. + type: Tweak + id: 9760 + time: '2026-06-21T21:09:18.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/44134 +- author: whatston3 + changes: + - message: The ID card console now correctly sets and clears accesses that any privileged ID has, and respects existing accesses the console cannot set. + type: Fix + id: 9761 + time: '2026-06-21T23:23:19.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/44016 +- author: murolem + changes: + - message: Added recipe history to the construction menu. + type: Add + id: 9762 + time: '2026-06-22T15:04:31.0000000+00:00' + url: https://github.com/space-wizards-federation/space-station-14/pull/8 +- author: korczoczek + changes: + - message: When slicing something inside a container, the resultant slices will now fill out the space where the whole food item used to be instead of dropping onto the floor + type: Tweak + id: 9763 + time: '2026-06-22T23:11:50.0000000+00:00' + url: https://github.com/space-wizards-federation/space-station-14/pull/160 +- author: insoPL + changes: + - message: Virtual items can not longer be ejected from cryo + type: Fix + id: 9764 + time: '2026-06-23T17:00:19.0000000+00:00' + url: https://github.com/space-wizards-federation/space-station-14/pull/175 +- author: riccardi48 + changes: + - message: Tabletop piece moving is now predicted correctly + type: Fix + id: 9765 + time: '2026-06-27T11:34:50.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/44348 +- author: ketufaispikinut + changes: + - message: Mailing unit has been resprited. + type: Tweak + id: 9766 + time: '2026-06-27T15:21:15.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/44350 +- author: metalgearsloth + changes: + - message: AFK users will now be kicked. Before the kick a window will popup to mark that they're not AFK. + type: Add + id: 9767 + time: '2026-06-28T04:32:13.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/44353 +- author: Samuka-C + changes: + - message: RD's teleporter can no longer be used to create portals in different grids by placing both portals in the same grid then spliting the grid. + type: Fix + id: 9768 + time: '2026-06-28T05:05:58.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/44360 +- author: Xeri7 + changes: + - message: Made Sprite Fade only happen when there is something there. + type: Tweak + id: 9769 + time: '2026-06-29T06:11:38.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/37907 +- author: eoineoineoin + changes: + - message: Fixed bug where APCs could turn on during a station power-off event + type: Fix + id: 9770 + time: '2026-06-29T11:37:33.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/32130 +- author: DevArchwave + changes: + - message: Construction ghosts of pipes and some other things should display correctly again. + type: Fix + id: 9771 + time: '2026-06-29T12:22:14.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/44086 +- author: ThatGuyUSA + changes: + - message: Holoparasites and their injectors are now predicted. + type: Tweak + id: 9772 + time: '2026-06-29T21:25:47.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/43519 +- author: whatston3 + changes: + - message: Cows, pigs and goats can eat just about anything again. + type: Fix + id: 9773 + time: '2026-06-29T21:30:12.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/44427 +- author: Centronias + changes: + - message: The "emergency EVA suit" and "paramedic void suit" once again have actions to toggle their helmets, like hardsuits. + type: Fix + id: 9774 + time: '2026-06-29T22:06:53.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/44425 +- author: Ewanderer + changes: + - message: You can now electrolyze Ammonia! + type: Add + - message: Ammonia now needs heat to synthesize! + type: Tweak + id: 9775 + time: '2026-06-30T07:57:33.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/43736 +- author: ketufaispikinut + changes: + - message: Player zombies become ghost roles too. + type: Tweak + id: 9776 + time: '2026-06-30T18:51:13.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/43905 +- author: themias + changes: + - message: Popup messages for welders and lighters show the correct item name + type: Fix + id: 9777 + time: '2026-06-30T20:47:43.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/44121 +- author: IntegerTempest + changes: + - message: Various aggressive mobs and critters now can see in the dark. + type: Add + id: 9778 + time: '2026-06-30T21:36:18.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/39403 +- author: AndrewFenriz + changes: + - message: Tether Guns and Force Guns are now crafted without a pre-installed battery + type: Tweak + id: 9779 + time: '2026-07-01T01:15:52.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/43936 +- author: ZigTag + changes: + - message: Your voice is now selectable + type: Add + - message: Game now supports having multiple voice sets per species + type: Tweak + id: 9780 + time: '2026-07-01T03:46:28.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/40593 +- author: psykana + changes: + - message: Speedloaders now update revolver chambers correctly. + type: Fix + id: 9781 + time: '2026-07-01T05:22:51.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/43259 +- author: LordKnish + changes: + - message: Revenant ability icons now fill their action buttons. + type: Fix + id: 9782 + time: '2026-07-01T05:41:13.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/44258 +- author: evrys + changes: + - message: Fixed "point at location" binding so it can be used on inventory items too + type: Fix + id: 9783 + time: '2026-07-01T06:57:39.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/43747 +- author: Centronias + changes: + - message: The Smartfridge's sprite now properly reflects whether or not the fridge is powered. + type: Fix + id: 9784 + time: '2026-07-01T08:07:19.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/43917 +- author: qwerltaz + changes: + - message: Chat highlights now highlight your name again. + type: Fix + id: 9785 + time: '2026-07-01T08:39:51.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/43911 +- author: ProPeperos + changes: + - message: Cargo request computer now has separate category for instruments + type: Add + - message: Instrument from cargo has been tweaked and reduced in price + type: Tweak + id: 9786 + time: '2026-07-01T11:03:41.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/43949 +- author: notquitehadouken + changes: + - message: Revenants no longer collide with regular ghosts. + type: Fix + id: 9787 + time: '2026-07-01T21:18:47.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/42869 +- author: B-Kirill + changes: + - message: Electrified objects, such as airlocks, now properly shock when activated via world activation hotkey. + type: Fix + id: 9788 + time: '2026-07-02T02:47:26.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/42657 +- author: jessicamaybe + changes: + - message: Ghost warp to most followed works again + type: Fix + id: 9789 + time: '2026-07-02T04:53:31.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/44464 +- author: insoPL + changes: + - message: Borgs drop some steel and scrap electronics when gibbed + type: Tweak + - message: Borgs now drop their hats when gibbed + type: Fix + id: 9790 + time: '2026-07-02T09:20:35.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/42439 +- author: ProPeperos + changes: + - message: You can no longer rotate stairs + type: Fix + - message: You can no longer rotate catwalks + type: Fix + id: 9791 + time: '2026-07-02T19:27:05.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/44471 +- author: CrimsonVengeance + changes: + - message: Fixed OrganBaseTorso to be Inedible. + type: Fix + id: 9792 + time: '2026-07-02T21:41:16.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/44300 +- author: Samuka-C + changes: + - message: Unanchored gas miners no longer say they are active when in fact they are not. + type: Fix + id: 9793 + time: '2026-07-02T22:35:28.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/44394 +- author: murolem + changes: + - message: Added randomizer lock buttons to the character editor screen. The buttons allow you to lock selected values when when randomizing (for example - species). + type: Add + id: 9794 + time: '2026-07-02T23:56:34.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/44363 +- author: Samuka-C + changes: + - message: Fix not moving in the direction you were walking after slipping. + type: Fix + id: 9795 + time: '2026-07-03T02:49:25.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/44478 +- author: Nem + changes: + - message: Ending an expedition early by jumping to the expedition again will no longer drop you on the Nukie planet map. + type: Fix + id: 9796 + time: '2026-07-03T09:22:23.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/44482 +- author: Verbalase + changes: + - message: Minor change in the rules about grammar. + type: Tweak + id: 9797 + time: '2026-07-03T13:04:57.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/44477 +- author: ScarKy0 + changes: + - message: Ghost pointlight has been replaced by a new half-bright mode. + type: Tweak + id: 9798 + time: '2026-07-03T13:40:10.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/44442 +- author: Krunklehorn + changes: + - message: Mobs that don't have hands can once again exit closed containers. + type: Fix + id: 9799 + time: '2026-07-04T03:43:33.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/37250 +- author: themias + changes: + - message: The space dragon's fire breath now plays its sound. + type: Fix + id: 9800 + time: '2026-07-04T19:51:50.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/43539 +- author: sudobeans + changes: + - message: Main guidebook window doen't reset when re-opened. + type: Tweak + id: 9801 + time: '2026-07-04T22:30:46.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/37235 +- author: c4llv07e + changes: + - message: Fixed character selection bug when sometimes spawning with different characters! + type: Fix + id: 9802 + time: '2026-07-05T14:15:05.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/39382 +- author: ScarKy0 + changes: + - message: Wearing critters on your head no longer grants nightvision. + type: Fix + id: 9803 + time: '2026-07-05T15:35:29.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/44501 +- author: Samuka-C + changes: + - message: All shotguns, the Hristov, and the PKA now feature custom ammo counters. + type: Add + id: 9804 + time: '2026-07-05T15:51:39.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/44476 +- author: SlamBamActionman + changes: + - message: Dwarves are now shortened via sprite displacement, rather than being scaled. + type: Tweak + id: 9805 + time: '2026-07-05T22:34:43.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/43816 +- author: Samuka-C + changes: + - message: Added a accessibility option to remove the noise from night vision overlay. + type: Add + id: 9806 + time: '2026-07-06T12:57:59.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/44526 +- author: SlamBamActionman + changes: + - message: Grids and wrecks in space can now be pulled using a grappling hook while wearing magboots/being rooted. + type: Add + id: 9807 + time: '2026-07-06T13:46:42.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/43746 +- author: sowelipililimute + changes: + - message: Reagents now display a textual description of their colour when inspected, for colourblind people + type: Add + id: 9808 + time: '2026-07-07T03:09:25.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/38789 +- author: sowelipililimute + changes: + - message: Added a table of contents to each guidebook entry + type: Add + id: 9809 + time: '2026-07-07T03:09:25.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/35316 +- author: spderman3333 + changes: + - message: Fixed characters exceeding the maximum character limit not being able to be deleted. + type: Fix + id: 9810 + time: '2026-07-08T13:11:24.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/44558 +- author: 0-Anon + changes: + - message: Added another source of chlorine and mercury in the form of centrifuging pest killer. + type: Add + id: 9811 + time: '2026-07-09T00:53:23.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/43725 +- author: ScarKy0 + changes: + - message: Mortar and pestle & handheld juicer audio will no longer loop endlessly. + type: Fix + id: 9812 + time: '2026-07-09T16:37:41.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/44574 +- author: mqole + changes: + - message: Reduced motion effect options have been moved to their own checkboxes. You might need to adjust your settings! + type: Tweak + id: 9813 + time: '2026-07-09T16:45:37.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/44589 +- author: psykana + changes: + - message: Nuclear operatives no longer get a minor win just for surviving. If crew escapes, winner is decided based on the location of the disk. + type: Tweak + id: 9814 + time: '2026-07-09T20:52:30.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/39715 +- author: AftrLite + changes: + - message: Removed straps from backpack sprites + type: Tweak + id: 9815 + time: '2026-07-10T02:23:11.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/44583 +- author: CroilBird + changes: + - message: Canister valve logs now only show gases that were present in the canister mixture. + type: Tweak + id: 9816 + time: '2026-07-10T13:00:29.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/44598 +- author: Princess-Cheeseballs + changes: + - message: Metamorphic glasses are now 30u again allowing bartenders to make 3 drinks per shaker. + type: Tweak + - message: The salt and pepper requirements for several recipes have been heavily reduced. + type: Tweak + - message: Butter now requires Cream instead of Milk to create. + type: Tweak + - message: Sliceable foods now properly retain their parent reagent's contents + type: Fix + id: 9817 + time: '2026-07-10T19:51:20.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/44087 +- author: MilenVolf + changes: + - message: Recycling jackboots / high heels / combat boots with items inside now will drop them instead of deleting. + type: Fix + id: 9818 + time: '2026-07-10T20:04:27.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/44486 +- author: Krunklehorn + changes: + - message: Gyroscopes now throttle down on smaller shuttles, making them much easier to use. + type: Add + id: 9819 + time: '2026-07-11T04:23:59.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/37419 +- author: slarticodefast + changes: + - message: Fixed multiple popups revealing the player's identity if it is hidden. + type: Fix + id: 9820 + time: '2026-07-11T14:28:46.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/44572 +- author: B_Kirill + changes: + - message: Fixed client mispredicts when moving multiple items into or out of storage at once. + type: Fix + id: 9821 + time: '2026-07-11T14:43:03.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/44612 +- author: insoPL + changes: + - message: Borgs drop materials on module removal + type: Tweak + - message: Borgs no longer drop default modules on gib + type: Tweak + id: 9822 + time: '2026-07-11T16:56:43.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/43876 +- author: Crotalus + changes: + - message: Add filtering / sorting support to end of round player manifest + type: Tweak + id: 9823 + time: '2026-07-11T20:49:43.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/39165 +- author: Ewanderer + changes: + - message: You can no longer blow yourself up with the micro bomb implant while pacified. + type: Tweak + id: 9824 + time: '2026-07-11T22:09:41.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/44198 +- author: Coolsurf6 + changes: + - message: Removed liquid gas canisters from being purchased by Cargo. + type: Remove + id: 9825 + time: '2026-07-12T21:02:49.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/44587 +- author: B_Kirill + changes: + - message: Fixed hand labeler showing "Removed label successfully" when there was no label to remove. + type: Fix + id: 9826 + time: '2026-07-13T06:27:40.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/44630 +- author: SPCR + changes: + - message: Fixed beards showing through helmets + type: Fix + id: 9827 + time: '2026-07-13T08:06:02.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/44599 +- author: TriviaSolari + changes: + - message: New "Terminal" human hairstyle, featuring support for multiple colours. + type: Add + - message: The "Long Over Eye" and "Very Long Over Eye" human hairstyles now have an optional highlight stripe. + type: Tweak + id: 9828 + time: '2026-07-13T08:19:34.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/44111 +- author: Hitlinemoss + changes: + - message: The Viper and Pulse Carbine now default to full-auto mode. + type: Tweak + id: 9829 + time: '2026-07-13T10:24:12.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/42830 +- author: slarticodefast, psykana + changes: + - message: Mice and other small mobs can no longer toggle items. + type: Tweak + - message: Stunbatons can now be toggled only in hands. + type: Tweak + - message: Fixed riggable entities exploding in microwaves without prior rigging. + type: Fix + - message: Fixed rigged stunbatons exploding if you look at them funny. + type: Fix + id: 9830 + time: '2026-07-13T18:38:49.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/43117 +- author: M4rchy-S + changes: + - message: Smart Fridge UI could show empty items when it is not + type: Fix + id: 9831 + time: '2026-07-13T18:45:51.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/44648 +- author: murolem + changes: + - message: Added two new teleport buttons to the ghost warp screen - warp to Random and warp to Random Followed. Triple the warp! + type: Add + id: 9832 + time: '2026-07-13T20:41:45.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/44499 +- author: Hitlinemoss + changes: + - message: Senior courier ID cards now have a unique sprite, as with other senior ID cards. + type: Fix + id: 9833 + time: '2026-07-13T22:22:01.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/41842 +- author: B_Kirill + changes: + - message: 'Added new not fun meteors variations: flesh and kudzu meteors.' + type: Add + id: 9834 + time: '2026-07-14T03:55:09.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/37716 +- author: AsnDen + changes: + - message: Faxes now are visually turned off when there is no power + type: Fix + - message: Faxes are colored again + type: Fix + id: 9835 + time: '2026-07-14T05:19:37.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/38387 +- author: Princess-Cheeseballs + changes: + - message: Shields are now more effective at blocking specific damage types. + type: Tweak + - message: Many lesser used shields have had their health increased, but are now worse at blocking damage. + type: Tweak + id: 9836 + time: '2026-07-14T12:14:46.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/44628 +- author: TiniestShark + changes: + - message: Vox hardsuits now have added tail states and properly hide a Vox's tail when in use. + type: Add + id: 9837 + time: '2026-07-14T16:24:02.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/42704 +- author: SlamBamActionman + changes: + - message: Grappling hooks no longer move grids if both the hook and user are on the same grid. + type: Fix + id: 9838 + time: '2026-07-14T16:48:28.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/44564 +- author: whatston3 + changes: + - message: Constructed lights and cameras now must be placed against a wall. + type: Add + id: 9839 + time: '2026-07-14T21:15:01.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/44669 +- author: TriviaSolari + changes: + - message: Silicons can now whisper their laws when stating them + type: Add + - message: Silicon laws list now has a footer that tracks the number of times laws have been changed + type: Add + - message: Silicons can now select multiple laws to announce at once, with a randomized delay between each message + type: Tweak + id: 9840 + time: '2026-07-15T03:04:04.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/42806 +- author: Crude Oil + changes: + - message: Fixed crawl slowdown remaining after standing up + type: Fix + id: 9841 + time: '2026-07-15T13:29:45.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/44683 +- author: Hitlinemoss + changes: + - message: Unknown shuttles and most antagonist ghostroles no longer spawn while the evac shuttle is inbound, docked, or in transit. + type: Tweak + id: 9842 + time: '2026-07-15T14:11:46.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/42196 +- author: SlamBamActionman + changes: + - message: Glue and lube now apply their effects immediately when used on a held item. + type: Tweak + id: 9843 + time: '2026-07-16T15:31:45.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/44552 +- author: ketufaispikinut + changes: + - message: Player-controlled zombies no longer show up in the ghost role menu. + type: Fix + id: 9844 + time: '2026-07-16T18:51:21.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/44691 +- author: Crude Oil + changes: + - message: Skeletons rattle when screaming again + type: Fix + id: 9845 + time: '2026-07-16T20:19:04.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/44689 +- author: mirrorcult + changes: + - message: Doafter progress bar animation now has a fade in & fade out + type: Tweak + id: 9846 + time: '2026-07-16T22:14:20.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/44701 +- author: B_Kirill + changes: + - message: Fixed puddles not being removed when tile changes to lattice. + type: Fix + id: 9847 + time: '2026-07-17T04:53:25.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/44715 +- author: psykana + changes: + - message: Station announcements are now also audible on the hull of the station + type: Fix + id: 9848 + time: '2026-07-17T05:06:38.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/44686 +- author: Hitlinemoss + changes: + - message: Most job descriptions in the Loadout menu have been adjusted for added clarity. + type: Tweak + id: 9849 + time: '2026-07-17T05:20:29.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/44646 +- author: Princess-Cheeseballs + changes: + - message: Shields that are deactivated no longer block damage + type: Fix + id: 9850 + time: '2026-07-17T07:20:32.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/44700 +- author: ProPeperos + changes: + - message: Signs and posters no longer display "unanchored" message + type: Fix + id: 9851 + time: '2026-07-17T15:01:51.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/44491 +- author: YoungThugSS14 + changes: + - message: Holoparasites now play a sound when released. + type: Tweak + id: 9852 + time: '2026-07-17T15:06:44.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/44703 +- author: MidZik + changes: + - message: Shimmer effect on an invisible ninja, stealth cardboard box, and invisible crate is now much subtler. + type: Tweak + id: 9853 + time: '2026-07-17T16:41:29.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/35575 +- author: Steffo99 + changes: + - message: Improved the graphics of Space Villain! + type: Tweak + id: 9854 + time: '2026-07-17T16:50:08.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/40963 +- author: Steffo99 + changes: + - message: Added functionality to the LMTR wire of Space Villain! + type: Add + id: 9855 + time: '2026-07-17T17:03:11.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/40961 +- author: ProPeperos + changes: + - message: Fire alarms are now placed closer to the side of the wall + type: Tweak + id: 9856 + time: '2026-07-17T18:43:00.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/44707 +- author: jessicamaybe + changes: + - message: Space music no longer plays if you are a ghost + type: Tweak + id: 9857 + time: '2026-07-17T19:25:04.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/44696 +- author: ProPeperos + changes: + - message: Thrusters no longer have a bit of a pipe sticking out of them + type: Tweak + id: 9858 + time: '2026-07-17T19:25:43.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/44731 +- author: muburu + changes: + - message: Slimepeople can change their eye color again. + type: Fix + id: 9859 + time: '2026-07-17T21:22:29.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/44508 +- author: whatston3 + changes: + - message: Batches of mail are no longer addressed to just one person. + type: Fix + id: 9860 + time: '2026-07-17T22:11:39.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/44728 +- author: mrhappypenguin + changes: + - message: Added option to toggle head-related transfer function (HRTF) audio. + type: Add + id: 9861 + time: '2026-07-17T23:46:33.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/44187 diff --git a/Resources/Changelog/Maps.yml b/Resources/Changelog/Maps.yml index fc1b9726dc..e90a6bbd04 100644 --- a/Resources/Changelog/Maps.yml +++ b/Resources/Changelog/Maps.yml @@ -1168,4 +1168,43 @@ id: 144 time: '2026-05-30T01:23:30.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/44119 +- author: Codubreku + changes: + - message: On Serpentcrest, wall screens now show evacuation timers properly. + type: Fix + id: 145 + time: '2026-06-12T16:06:22.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/44279 +- author: ProPeperos + changes: + - message: On Packed - Added protective grill to the west arm of arrivals + type: Add + - message: On Packed - You can now find sheep! + type: Add + - message: On Packed - Distro and Waste starts up automatically + type: Tweak + id: 146 + time: '2026-06-29T12:05:45.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/43985 +- author: Sulfari + changes: + - message: On Serpentcrest, weh auto-injectors no longer transform to a lizard. + type: Tweak + id: 147 + time: '2026-07-11T05:13:03.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/44546 +- author: ProPeperos + changes: + - message: On Serpentcrest - Tweaks to atmos and TEG room, small qol to engi department + type: Tweak + id: 148 + time: '2026-07-13T07:13:26.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/44122 +- author: ProPeperos + changes: + - message: On all Evac shuttles - Tweaked atmos systems and small fixes + type: Tweak + id: 149 + time: '2026-07-14T07:38:22.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/44651 Order: 2 From eac9d43d4c50786759af82cb2367f8c151dfaf6d Mon Sep 17 00:00:00 2001 From: Bef1234 <58905651+Bef1234@users.noreply.github.com> Date: Sat, 18 Jul 2026 13:59:42 +1200 Subject: [PATCH 074/108] 80s Hair (#43854) "modified: /human_hair.rsi/80s.png" Made pixel consistent, there was a 1px difference between front and side views. --- .../Mobs/Customization/human_hair.rsi/80s.png | Bin 918 -> 979 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Resources/Textures/Mobs/Customization/human_hair.rsi/80s.png b/Resources/Textures/Mobs/Customization/human_hair.rsi/80s.png index 2cd7d11cbdf4b62357e9402ad45bfe8626a6e44f..64bfda9b4cbc115fa7bc3ff4d5d07cb3aae61bd5 100644 GIT binary patch delta 958 zcmbQnewlrOaysqbypA6m}>u%l(f5U73FyXp$L*&~}OEek|e12AG!`2^qPO{FV z=-m8&$3EP9zVH3#zjgBezCZDK`>l5V-tUvYdDr~jdSr(oTYXYb!rIo`Z`rOz-SB34 zU%RXt=$z%%QrYY8 zE*l(UU})GXcEK+0@q!2j9@~()R&VD7SKQh5RxQxrdR~vf$I5NuT2PIn#FufR?sP7d#nzFReDe3 z=bvkqy{oLPWo`I>v{LMb+%|v5n1!Ph~mo#7J8l0p!(9*K?2+&|r}V`@~;+&~6~<(FUnO<8Qp^56 zZD*riFSKZUJpWna+N@@V_pJgkleS;uQ*2AMTx;4Q5V3m48WoS%&DWxK#ON*9D);JZ z{qg&0&GW-L&OJA-c(1thOMvMz8SewP6qy*Dd*$Z3=fsN6Vw!funFE-rLS)la9c7r3 zg&uodoF`#DJ4i~YKJ}`K2k*tgf1z`h&k4IP-*7-yLV{Iu>D|*wB3ry{o`rE;6O&}= z`@SqQgu~IL<@eut&K%AsF3TL5*%={dpvrWh&iaT(M(d2Y`ziGd?|#g<^<%@gw2pL# zom1WgX$n0sR##o-(9mBwwT$O?=#SN3enc%2-^*T;{^tklL}!Lfrc34)EECiedckb$ a%pc4aRVyby=W$35QR5AH4+jBprhgdoPslQ0BR0EMaKb< zkf`bT^&-9K#aVu4#%pJ_F%1dWo|$jn*l5Qe-5-B_MB+alkI&6!(_OFEZn<23zOPoR z&{`4um&@fzyLdmHPTh994cT{3f^j-c0;obJ!K(r@0IhpClm-hp`0Reace~xr zysj0%e!qXt=kqVM={$wtO@i6cwD!`C2j9b~(g0uswGaDRjx33y01zCq00(BX*$;Tk z5}X`zFHpGa^?&*^`3O`uL8=e_d2E{%pb~slXDkDc1J)8q>z@Er36T;s0f2F2A1`E} z4*(rJpU=hi0L?ypK?$hz>7z#lCIB!-2ymjW&T4Lgu&)59B9^E}fi3`8m`9=R0lGnA z49aE5lYr~#am!$-0`5B)Qv`sX#px#acs!o?Iqcnmt$+2ewwZa98cULj@C42^%?eOw zp#t3p2*CRz#0vo9p$3#;3Lp|Z)(Zhh9WS~2r?z++@%ILg$X^FgBl}tk8nCzS73v@g zh)8+JIe#8N4$Mg?paIAr&=imXZxU0R0w$5hj3AlOYE!@@(wGrMQ$Pm1Nla}D zm_!;gf`4cV$bdJAsbK|Zrv}YQy!zT@B`Dz`EY`)7XuNWsMuz~Tmn4R8#0n|}PurLu zc`oS&z{k>k7Zh@{@eTrmN1&Pn`Vwi&xd3SQ7abYBr^9hYp9sSGzptqSCv}zxqDyS8|-EM_>k!_J8OhH*{eMqt*tfFtj1dZV`R5LNEh> zVJ!hVf>MZVKGCeF^Hh~ZOMr3%VRmL=&`Nr!fOQ=Wo<4b7=5%VLh7R>2`&I!P%l5wXzfy9Nv6Kwf6q~D0)Pb({Hw)t znt79!EcK1)1Hf_W@4NL)0C)m;>Ao|b^Zoyz53T?OkmGc%xkUifa=x}5a|zUTtd_k7 zpcd(|+Gz?HYi4Ts)f7;R^jPgQ1&lQ_wft%ds6~3LcA5glnweUDH3ifnJytva04Z{l WUuMYIC;$Ke07*qoM6N<$f&c)?xRO=? From 7aca70d5436030edfbd8eaa510b7646145a8b385 Mon Sep 17 00:00:00 2001 From: Whatstone <166147148+whatston3@users.noreply.github.com> Date: Fri, 17 Jul 2026 22:01:08 -0400 Subject: [PATCH 075/108] Remove redundant TableContainer definition (#44548) Move TableContainer XAML refs + C# deps to engine --- .../Cargo/UI/FundingAllocationMenu.xaml | 8 +- .../Cartridges/WantedListUiFragment.xaml | 2 +- Content.Client/Guidebook/Richtext/Table.cs | 2 +- .../UserInterface/Controls/TableContainer.cs | 285 ------------------ 4 files changed, 6 insertions(+), 291 deletions(-) delete mode 100644 Content.Client/UserInterface/Controls/TableContainer.cs diff --git a/Content.Client/Cargo/UI/FundingAllocationMenu.xaml b/Content.Client/Cargo/UI/FundingAllocationMenu.xaml index 62f0ae924a..f796dc69f7 100644 --- a/Content.Client/Cargo/UI/FundingAllocationMenu.xaml +++ b/Content.Client/Cargo/UI/FundingAllocationMenu.xaml @@ -6,23 +6,23 @@ VerticalExpand="True" HorizontalExpand="True" Margin="10 5 10 10"> - + - +
+ private record CharacterPalette(Color SkinColor, Color HairColor, Color EyeColor); + + # region Palettes + + /// + /// Generates a new random , clamped to a strategy. + /// + private static CharacterPalette GetRandomClampedPalette(SkinColorationPrototype skinColoration, IRobustRandom random) + { + var baseColor = new Color(random.NextFloat(1), random.NextFloat(1), random.NextFloat(1), 1); + var palette = GetPaletteFromBase(baseColor, random.Next(4)); + return ClampPaletteToStrategy(palette, skinColoration, random); + } + + /// + /// Creates a new color palette from BaseColor. + /// Uses integer provided to choose what kind of palette is generated. + /// + /// The base color to generate a palette from. + /// 0 for split complementary, 1 for triadic complementary, 2 for analogous, any other value for a single complement. + /// A list of colours in the chosen palette. + /// + /// Personally I think this should be weighted, but I can't + /// be bothered to implement that. -widgetbeck (and mq) + /// + private static CharacterPalette GetPaletteFromBase(Color baseColor, int strategy) + { + var list = strategy switch + { + 0 => baseColor.GetSplitComplementaries(), + 1 => baseColor.GetTriadicComplementaries(), + 2 => baseColor.GetAnalogousComplementaries(), + _ => baseColor.GetOneComplementary(), + }; + + return new(list[0], list[1], list[2]); + } + + /// + /// Clamps a to the desired ISkinColorationStrategy. + /// + private static CharacterPalette ClampPaletteToStrategy(CharacterPalette palette, SkinColorationPrototype skinType, IRobustRandom random) + { + palette = palette with + { + SkinColor = skinType.Strategy.EnsureVerified(palette.SkinColor), + HairColor = ClampHairColorToStrategy(palette.HairColor, skinType, random), + EyeColor = ClampEyeColorToStrategy(palette.EyeColor, skinType) + }; + + return palette; + } + + /// + /// Clamps a hair color to a strategy. + /// + private static Color ClampHairColorToStrategy(Color color, SkinColorationPrototype skinType, IRobustRandom random) + + { + if (skinType.RealisticColors) + { + static float RandomizeColor(float channel, IRobustRandom random) => + MathHelper.Clamp01(channel + random.NextFloat(-0.25f, 0.25f)); + + // pick a random realistic hair color from the list and randomize it juuuuust a little bit. + color = random.Pick(HairStyles.RealisticHairColors); + color = color + .WithRed(RandomizeColor(color.R, random)) + .WithGreen(RandomizeColor(color.G, random)) + .WithBlue(RandomizeColor(color.B, random)); + } + + if (skinType.SquashEyeHairColors) + color = skinType.Strategy.ClosestSkinColor(color); + + return color; + } + + /// + /// Clamps an eye color to a strategy. + /// + + private static Color ClampEyeColorToStrategy(Color color, SkinColorationPrototype skinType) + { + var random = IoCManager.Resolve(); + + if (skinType.RealisticColors && !RealisticEyeColors.Contains(color)) + color = random.Pick(RealisticEyeColors); + + if (skinType.SquashEyeHairColors) + color = skinType.Strategy.EnsureVerified(color); + + return color; + } + + #endregion + #region Markings + + // TODO refactor how markings work completely so this isnt such a behemoth + + /// + /// Generates random colored markings for a specified character, respecting species and sex. + /// + /// Species of the character. + /// Sex of the character. + /// Palette used to color markings. + /// A dictionary of organs to their corresponding visual layers, and the markings corresponding to those visual layers. + private static Dictionary, Dictionary>> RandomizeMarkings(SpeciesPrototype species, Sex sex, CharacterPalette palette, IPrototypeManager protoMan, IRobustRandom random) + { + var markingManager = IoCManager.Resolve(); + var markingData = markingManager.GetMarkingData(species); + + Dictionary, Dictionary>> markings = new(); + + foreach (var (organ, organData) in markingData) + { + // if this is an organ with no markings (heart, stomach, etc) + if (!protoMan.TryIndex(organData.Group, out var groupProto)) + continue; + + Dictionary> layerMarkings = new(); + foreach (var layer in organData.Layers) + { + var allMarkings = markingManager.MarkingsByLayerAndGroupAndSex(layer, organData.Group, sex); + + if (allMarkings.Count == 0) + continue; + + var layerLimits = groupProto.Limits.GetValueOrDefault(layer); + if (layerLimits is null || layerLimits.Limit <= 0) + continue; + + layerMarkings.Add(layer, PickLayerRandomMarkings(layer, layerLimits, allMarkings, palette, random)); + } + markings.Add(organ, layerMarkings); + } + return markings; + } + + /// + /// Generates a list of random coloured markings for a layer, + /// with respect to the layer and marking weights and marking limits. + /// + /// A list of all markings for the layer. + /// A list of colors to choose from for the markings. + /// A list of markings for the desired layer. + private static List PickLayerRandomMarkings(HumanoidVisualLayers layer, MarkingsLimits? layerLimits, IReadOnlyDictionary allMarkings, CharacterPalette palette, IRobustRandom random) + { + if (layerLimits is null) + return new(); + + if (layer == HumanoidVisualLayers.Hair || + layer == HumanoidVisualLayers.FacialHair) + { + /* TODO: we should log an error here if using default, but Humanoid is full of static methods so we cant use sawmill until thats fixed + if (!palette.ContainsKey(HairColorKey)) + sawmill.Error($"Palette for {layer} contains no HairColorKey, using default colour"); + */ + + return PickHairsRandomMarking(layer, layerLimits, allMarkings, palette.HairColor, random); + } + + var layerWeight = layerLimits.Weight; + var pool = allMarkings.ToDictionary(); + + List outMarkings = new(); + + for (var i = 0; i < layerLimits.Limit; i++) + { + // just in case there are somehow more points than markings + if (pool.Count == 0) + break; + + // category roll to see if we add anything + if (!random.Prob(layerWeight)) + continue; + + var randomMarking = PickWeightedMarkingId(pool, random); + + if (randomMarking is null || !pool.Remove(randomMarking, out var protoToAdd)) + continue; + + List colors = new(); + foreach (var sprite in protoToAdd.Sprites) + { + // code here is from MarkingColoring.GetMarkingLayerColors + // Getting layer name + var name = sprite switch + { + SpriteSpecifier.Rsi rsi => rsi.RsiState, + SpriteSpecifier.Texture texture => texture.TexturePath.Filename, + _ => null + }; + + var coloringType = (name == null || + protoToAdd.Coloring.Layers is not { } layers || + !layers.TryGetValue(name, out var layerColoring)) + ? protoToAdd.Coloring.Default + : layerColoring; + + var color = coloringType.Type is not null + ? coloringType.GetColor( + palette.SkinColor, + palette.EyeColor, + outMarkings) + : random.Pick(new List + { + palette.HairColor, + palette.EyeColor + }); + + colors.Add(color); + } + + outMarkings.Add(new Marking(protoToAdd, colors)); + } + return outMarkings; + } + + /// + /// Picks a random marking for a or layer. + /// These layers are handled differently to other markings, so we need unique behaviour for them. + /// + /// A list of markings for the . + private static List PickHairsRandomMarking(HumanoidVisualLayers layer, MarkingsLimits layerLimits, IReadOnlyDictionary allMarkings, Color color, IRobustRandom random) + { + if (allMarkings.Count == 0 || !random.Prob(layerLimits.Weight)) + return new(); + + var hairId = PickWeightedMarkingId(allMarkings, random); + if (hairId is null || !allMarkings.TryGetValue(hairId, out var hairProto)) + return new(); + + if (allMarkings.TryGetValue(hairProto.ID, out var hairMarking)) + return new List { hairMarking.AsMarking().WithColor(color) }; + + var protoMan = IoCManager.Resolve(); + var defaultHair = layer switch + { + HumanoidVisualLayers.FacialHair => HairStyles.DefaultFacialHairStyle, + _ => HairStyles.DefaultHairStyle, + }; + + var defaultHairProto = protoMan.Index(defaultHair); + return new List { new Marking(defaultHair, defaultHairProto.Sprites.Count).WithColor(color) }; + } + + /// + /// Uses weights to pick a random marking from a provided dictionary. + /// + /// The string ID of the chosen . + private static string? PickWeightedMarkingId(IReadOnlyDictionary markings, IRobustRandom random) + { + if (markings.Count == 0) + return null; + + var weights = markings.ToDictionary(m => m.Key, m => m.Value.RandomWeight); + + return random.Pick(weights).Key; + } + #endregion +} diff --git a/Content.Shared/Humanoid/HumanoidCharacterAppearance.cs b/Content.Shared/Humanoid/HumanoidCharacterAppearance.cs index ad6c3aa86c..8a489ebd27 100644 --- a/Content.Shared/Humanoid/HumanoidCharacterAppearance.cs +++ b/Content.Shared/Humanoid/HumanoidCharacterAppearance.cs @@ -57,7 +57,7 @@ public sealed partial class HumanoidCharacterAppearance : IEquatable species, Sex sex) { var protoMan = IoCManager.Resolve(); - var speciesPrototype = protoMan.Index(species); + var speciesPrototype = protoMan.Index(species); var skinColoration = protoMan.Index(speciesPrototype.SkinColoration).Strategy; var skinColor = skinColoration.InputType switch { @@ -74,14 +74,14 @@ public sealed partial class HumanoidCharacterAppearance : IEquatable _realisticEyeColors = new List - { + private static readonly IReadOnlyList RealisticEyeColors = + [ Color.Brown, Color.Gray, Color.Azure, Color.SteelBlue, Color.Black - }; + ]; /// /// Picks a random eye color. @@ -90,7 +90,7 @@ public sealed partial class HumanoidCharacterAppearance : IEquatable(); - var eyes = random.Pick(_realisticEyeColors); + var eyes = random.Pick(RealisticEyeColors); return eyes; } @@ -117,42 +117,46 @@ public sealed partial class HumanoidCharacterAppearance : IEquatable - /// Generates a randomized character appearance. - /// - public static HumanoidCharacterAppearance Random(string species, Sex sex) - { - // TODO: Add random markings - - var appearance = Random( - RandomizeConfigAll, - new HumanoidCharacterAppearance { Markings = new () }, - species, - sex - ); - - return appearance; - } - - /// - /// Generates a randomized character appearance with selective randomizing. + /// Generates a randomized character appearance. /// + /// + /// When and an existing are passed in, + /// values will be selectively randomized with the option to maintain existing values. + /// /// Which values to randomize. /// Appearance to base the new appearance on. Values that are not randomized will be taken from this appearance. /// Species prototype ID. /// Sex. - /// A new character appearance with selected values randomized - public static HumanoidCharacterAppearance Random(RandomizeCfg charEditorRandomizeConfig, HumanoidCharacterAppearance baseAppearance, ProtoId species, Sex sex) + public static HumanoidCharacterAppearance Random(SpeciesPrototype species, Sex sex, RandomizeCfg? charEditorRandomizeConfig = null, HumanoidCharacterAppearance? baseAppearance = null) { - var appearance = new HumanoidCharacterAppearance { Markings = new () }; - appearance.EyeColor = (charEditorRandomizeConfig & RandomizeCfg.Eyes) != 0 ? RandomEyes() : baseAppearance.EyeColor; - appearance.SkinColor = (charEditorRandomizeConfig & RandomizeCfg.Skin) != 0 ? RandomSkin(species) : baseAppearance.SkinColor; + var random = IoCManager.Resolve(); + var protoMan = IoCManager.Resolve(); + + var skinType = protoMan.Index(species.SkinColoration); + var palette = GetRandomClampedPalette(skinType, random); + + // squash Cfg as necessary + palette = palette with + { + SkinColor = (charEditorRandomizeConfig & RandomizeCfg.Skin) != 0 || baseAppearance is null + ? palette.SkinColor : baseAppearance.SkinColor, + EyeColor = (charEditorRandomizeConfig & RandomizeCfg.Eyes) != 0 || baseAppearance is null + ? palette.EyeColor : baseAppearance.EyeColor + }; + + var markings = ((charEditorRandomizeConfig & RandomizeCfg.Markings) != 0 || baseAppearance is null) + ? RandomizeMarkings(species, sex, palette, protoMan, random) + : baseAppearance.Markings; + // TODO if someone really cares they can probably regenerate the old markings with new colors but im too tired to figure that out + + HumanoidCharacterAppearance appearance = new( + palette.EyeColor, + palette.SkinColor, + markings); // Safety step. Most systems which called Random() also called this, and not doing so caused issues with markings. // In the future it could *maybe* be removed, but it's probably worth the extra CPU cycles to validate this info. - return EnsureValid( - appearance, - species, - sex); + return EnsureValid(appearance, species, sex); } public static Color ClampColor(Color color) @@ -162,21 +166,22 @@ public sealed partial class HumanoidCharacterAppearance : IEquatable species, Sex sex) { - var eyeColor = ClampColor(appearance.EyeColor); var proto = IoCManager.Resolve(); var markingManager = IoCManager.Resolve(); var skinColor = appearance.SkinColor; + var eyeColor = appearance.EyeColor; var validatedMarkings = appearance.Markings.ShallowClone(); if (proto.TryIndex(species, out var speciesProto)) { - var strategy = proto.Index(speciesProto.SkinColoration).Strategy; + var coloration = proto.Index(speciesProto.SkinColoration); var organs = markingManager.GetOrgans(species); - skinColor = strategy.EnsureVerified(skinColor); + skinColor = coloration.Strategy.EnsureVerified(skinColor); + eyeColor = ClampEyeColorToStrategy(eyeColor, coloration); - foreach (var (organ, markings) in appearance.Markings) + foreach (var (organ, _) in appearance.Markings) { if (!organs.ContainsKey(organ)) validatedMarkings.Remove(organ); @@ -190,7 +195,7 @@ public sealed partial class HumanoidCharacterAppearance : IEquatable /// Coloring types that will be used if main coloring type will return nil ///
[DataField("fallbackTypes")] - public List FallbackTypes = new() {}; + public List FallbackTypes = new() { new ColoringTypes.SkinColoring() }; /// /// Color that will be used if coloring type and fallback type will return nil diff --git a/Content.Shared/Humanoid/Markings/MarkingPrototype.cs b/Content.Shared/Humanoid/Markings/MarkingPrototype.cs index 10da06d860..2ddcb817aa 100644 --- a/Content.Shared/Humanoid/Markings/MarkingPrototype.cs +++ b/Content.Shared/Humanoid/Markings/MarkingPrototype.cs @@ -36,9 +36,25 @@ namespace Content.Shared.Humanoid.Markings [DataField("sprites", required: true)] public List Sprites { get; private set; } = default!; + /// + /// Optional dictionary allowing assignment of shaders to sprite layers in a marking. + /// This implementation is very messy but unfortunately Robust doesn't like shaders in SpriteSpecifiers. + /// + [DataField] + public Dictionary? Shaders { get; private set; } + public Marking AsMarking() { return new Marking(ID, Sprites.Count); } + + /// + /// Chance this marking will be added by appearance randomizer. + /// + /// + /// Default value is 1. + /// + [DataField] + public float RandomWeight = 1f; } } diff --git a/Content.Shared/Humanoid/Markings/MarkingsGroupPrototype.cs b/Content.Shared/Humanoid/Markings/MarkingsGroupPrototype.cs index 640d5e5655..1334eb032e 100644 --- a/Content.Shared/Humanoid/Markings/MarkingsGroupPrototype.cs +++ b/Content.Shared/Humanoid/Markings/MarkingsGroupPrototype.cs @@ -71,6 +71,16 @@ public sealed partial class MarkingsLimits /// [DataField] public List> NudityDefault = new(); + + /// + /// Chance for a randomly generated entity to spawn with a marking in this category. + /// + /// + /// Does one roll for each point in limit- eg. at 2 points in limit with a .6 weight, + /// you have a 16% chance of no marking, a 48% chance of one marking and a 36% chance of two markings. + /// + [DataField] + public float Weight = 0.6f; } [DataDefinition] diff --git a/Content.Shared/Humanoid/SkinColorationPrototype.cs b/Content.Shared/Humanoid/SkinColorationPrototype.cs index 53ae115366..554211a18d 100644 --- a/Content.Shared/Humanoid/SkinColorationPrototype.cs +++ b/Content.Shared/Humanoid/SkinColorationPrototype.cs @@ -20,6 +20,20 @@ public sealed partial class SkinColorationPrototype : IPrototype ///
[DataField(required: true)] public ISkinColorationStrategy Strategy = default!; + + //// + /// If true, will randomly generate realistic hair and eye colors. + /// Will also crush randomly generated colors down to the skin's luminosity + /// so markings don't appear too bright on darker skin. + /// + [DataField] + public bool RealisticColors; + + /// + /// If true, will also squash hair and eye colors to the coloration strategy. + /// + [DataField] + public bool SquashEyeHairColors; } /// @@ -133,7 +147,7 @@ public sealed partial class HumanTonedSkinColoration : ISkinColorationStrategy public Color ClosestSkinColor(Color color) { - return ValidHumanSkinTone; + return FromUnary(ToUnary(color)); } public Color FromUnary(float color) diff --git a/Content.Shared/Preferences/HumanoidCharacterProfile.cs b/Content.Shared/Preferences/HumanoidCharacterProfile.cs index 549e1fb60c..df5bca934e 100644 --- a/Content.Shared/Preferences/HumanoidCharacterProfile.cs +++ b/Content.Shared/Preferences/HumanoidCharacterProfile.cs @@ -239,6 +239,7 @@ namespace Content.Shared.Preferences // appearance Eyes = 1 << 5, Skin = 1 << 6, + Markings = 1 << 7, } /// @@ -251,7 +252,8 @@ namespace Content.Shared.Preferences | RandomizeCfg.Sex | RandomizeCfg.Gender | RandomizeCfg.Eyes - | RandomizeCfg.Skin; + | RandomizeCfg.Skin + | RandomizeCfg.Markings; /// /// Picks a random species from roundstart species. @@ -366,7 +368,7 @@ namespace Content.Shared.Preferences profile.Name = (randomizeCfg & RandomizeCfg.Name) != 0 ? RandomName(speciesProto, profile.Gender) : baseProfile.Name; profile.Age = (randomizeCfg & RandomizeCfg.Age) != 0 ? RandomAge(speciesProto) : baseProfile.Age; - profile.Appearance = HumanoidCharacterAppearance.Random(randomizeCfg, baseProfile.Appearance, speciesProto, profile.Sex); + profile.Appearance = HumanoidCharacterAppearance.Random(speciesProto, profile.Sex, randomizeCfg, baseProfile.Appearance); return profile; } @@ -462,7 +464,7 @@ namespace Content.Shared.Preferences public HumanoidCharacterProfile WithJobFromCvar(IConfigurationManager cfg) { // This path should run only rarely, so the cvar does not need to be locally stored - var jobs = new HashSet( cfg.GetCVar(CCVars.NewCharacterJobs).Split(",")); + var jobs = new HashSet(cfg.GetCVar(CCVars.NewCharacterJobs).Split(",")); var priority = JobPriority.High; Dictionary, JobPriority> priorities = new(); diff --git a/Resources/Locale/en-US/preferences/ui/humanoid-profile-editor.ftl b/Resources/Locale/en-US/preferences/ui/humanoid-profile-editor.ftl index 261b3bbd92..019fc61737 100644 --- a/Resources/Locale/en-US/preferences/ui/humanoid-profile-editor.ftl +++ b/Resources/Locale/en-US/preferences/ui/humanoid-profile-editor.ftl @@ -6,6 +6,7 @@ humanoid-profile-editor-randomize-age-button = Age humanoid-profile-editor-randomize-sex-button = Sex humanoid-profile-editor-randomize-skin-button = Skin color humanoid-profile-editor-randomize-eye-button = Eye color +humanoid-profile-editor-randomize-markings-button = Markings humanoid-profile-editor-name-label = Name: humanoid-profile-editor-appearance-tab = Appearance humanoid-profile-editor-clothing = Show clothing diff --git a/Resources/Prototypes/Body/Species/human.yml b/Resources/Prototypes/Body/Species/human.yml index fac18875c1..012c1e8ca9 100644 --- a/Resources/Prototypes/Body/Species/human.yml +++ b/Resources/Prototypes/Body/Species/human.yml @@ -8,6 +8,7 @@ enum.HumanoidVisualLayers.Hair: limit: 1 required: false + weight: 1 enum.HumanoidVisualLayers.FacialHair: limit: 1 required: false diff --git a/Resources/Prototypes/Body/Species/slime.yml b/Resources/Prototypes/Body/Species/slime.yml index 36d9a91cd7..81270e0ccf 100644 --- a/Resources/Prototypes/Body/Species/slime.yml +++ b/Resources/Prototypes/Body/Species/slime.yml @@ -5,6 +5,7 @@ enum.HumanoidVisualLayers.Hair: limit: 1 required: false + weight: 1 enum.HumanoidVisualLayers.FacialHair: limit: 1 required: false diff --git a/Resources/Prototypes/Entities/Mobs/Customization/Markings/Vulpkanin/vulpkanin_limbs.yml b/Resources/Prototypes/Entities/Mobs/Customization/Markings/Vulpkanin/vulpkanin_limbs.yml index 7635114536..6234c49067 100644 --- a/Resources/Prototypes/Entities/Mobs/Customization/Markings/Vulpkanin/vulpkanin_limbs.yml +++ b/Resources/Prototypes/Entities/Mobs/Customization/Markings/Vulpkanin/vulpkanin_limbs.yml @@ -5,11 +5,6 @@ sprites: - sprite: Mobs/Customization/Vulpkanin/body_markings.rsi state: claws_l_hand - coloring: - default: - type: - !type:SimpleColoring - color: "#e5e3d1" - type: marking id: VulpClawsHandRight @@ -18,11 +13,6 @@ sprites: - sprite: Mobs/Customization/Vulpkanin/body_markings.rsi state: claws_r_hand - coloring: - default: - type: - !type:SimpleColoring - color: "#e5e3d1" - type: marking id: VulpClawsFootLeft @@ -31,11 +21,6 @@ sprites: - sprite: Mobs/Customization/Vulpkanin/body_markings.rsi state: claws_l_foot - coloring: - default: - type: - !type:SimpleColoring - color: "#e5e3d1" - type: marking id: VulpClawsFootRight @@ -44,11 +29,6 @@ sprites: - sprite: Mobs/Customization/Vulpkanin/body_markings.rsi state: claws_r_foot - coloring: - default: - type: - !type:SimpleColoring - color: "#e5e3d1" # Crest @@ -60,11 +40,6 @@ sprites: - sprite: Mobs/Customization/Vulpkanin/body_markings.rsi state: crest-leg-l - coloring: - default: - type: - !type:SimpleColoring - color: "#e5e3d1" - type: marking id: VulpPointsCrestArmLeft @@ -73,11 +48,6 @@ sprites: - sprite: Mobs/Customization/Vulpkanin/body_markings.rsi state: crest-arm-l - coloring: - default: - type: - !type:SimpleColoring - color: "#e5e3d1" - type: marking id: VulpPointsCrestFootLeft @@ -86,11 +56,6 @@ sprites: - sprite: Mobs/Customization/Vulpkanin/body_markings.rsi state: crest-foot-l - coloring: - default: - type: - !type:SimpleColoring - color: "#e5e3d1" - type: marking id: VulpPointsCrestHandLeft @@ -99,11 +64,6 @@ sprites: - sprite: Mobs/Customization/Vulpkanin/body_markings.rsi state: crest-hand-l - coloring: - default: - type: - !type:SimpleColoring - color: "#e5e3d1" ## Right Side @@ -114,11 +74,6 @@ sprites: - sprite: Mobs/Customization/Vulpkanin/body_markings.rsi state: crest-leg-r - coloring: - default: - type: - !type:SimpleColoring - color: "#e5e3d1" - type: marking id: VulpPointsCrestArmRight @@ -127,11 +82,6 @@ sprites: - sprite: Mobs/Customization/Vulpkanin/body_markings.rsi state: crest-arm-r - coloring: - default: - type: - !type:SimpleColoring - color: "#e5e3d1" - type: marking id: VulpPointsCrestFootRight @@ -140,11 +90,6 @@ sprites: - sprite: Mobs/Customization/Vulpkanin/body_markings.rsi state: crest-foot-r - coloring: - default: - type: - !type:SimpleColoring - color: "#e5e3d1" - type: marking id: VulpPointsCrestHandRight @@ -153,15 +98,10 @@ sprites: - sprite: Mobs/Customization/Vulpkanin/body_markings.rsi state: crest-hand-r - coloring: - default: - type: - !type:SimpleColoring - color: "#e5e3d1" # Fade -## Left Side +## Left Side - type: marking id: VulpPointsFadeLegLeft @@ -170,11 +110,6 @@ sprites: - sprite: Mobs/Customization/Vulpkanin/body_markings.rsi state: points_fade-leg-l - coloring: - default: - type: - !type:SimpleColoring - color: "#e5e3d1" - type: marking id: VulpPointsFadeArmLeft @@ -183,11 +118,6 @@ sprites: - sprite: Mobs/Customization/Vulpkanin/body_markings.rsi state: points_fade-arm-l - coloring: - default: - type: - !type:SimpleColoring - color: "#e5e3d1" - type: marking id: VulpPointsFadeFootLeft @@ -196,11 +126,6 @@ sprites: - sprite: Mobs/Customization/Vulpkanin/body_markings.rsi state: points_fade-foot-l - coloring: - default: - type: - !type:SimpleColoring - color: "#e5e3d1" - type: marking id: VulpPointsFadeHandLeft @@ -209,11 +134,6 @@ sprites: - sprite: Mobs/Customization/Vulpkanin/body_markings.rsi state: points_fade-hand-l - coloring: - default: - type: - !type:SimpleColoring - color: "#e5e3d1" ## Right Side @@ -224,11 +144,6 @@ sprites: - sprite: Mobs/Customization/Vulpkanin/body_markings.rsi state: points_fade-leg-r - coloring: - default: - type: - !type:SimpleColoring - color: "#e5e3d1" - type: marking id: VulpPointsFadeArmRight @@ -237,11 +152,6 @@ sprites: - sprite: Mobs/Customization/Vulpkanin/body_markings.rsi state: points_fade-arm-r - coloring: - default: - type: - !type:SimpleColoring - color: "#e5e3d1" - type: marking id: VulpPointsFadeFootRight @@ -250,11 +160,6 @@ sprites: - sprite: Mobs/Customization/Vulpkanin/body_markings.rsi state: points_fade-foot-r - coloring: - default: - type: - !type:SimpleColoring - color: "#e5e3d1" - type: marking id: VulpPointsFadeHandRight @@ -263,11 +168,6 @@ sprites: - sprite: Mobs/Customization/Vulpkanin/body_markings.rsi state: points_fade-hand-r - coloring: - default: - type: - !type:SimpleColoring - color: "#e5e3d1" # Sharp @@ -280,11 +180,6 @@ sprites: - sprite: Mobs/Customization/Vulpkanin/body_markings.rsi state: points_sharp-leg-l - coloring: - default: - type: - !type:SimpleColoring - color: "#e5e3d1" - type: marking id: VulpPointsSharpArmLeft @@ -293,11 +188,6 @@ sprites: - sprite: Mobs/Customization/Vulpkanin/body_markings.rsi state: points_sharp-arm-l - coloring: - default: - type: - !type:SimpleColoring - color: "#e5e3d1" - type: marking id: VulpPointsSharpLongArmLeft @@ -306,11 +196,6 @@ sprites: - sprite: Mobs/Customization/Vulpkanin/body_markings.rsi state: points_sharp-arm-long-l - coloring: - default: - type: - !type:SimpleColoring - color: "#e5e3d1" - type: marking id: VulpPointsSharpFootLeft @@ -319,11 +204,6 @@ sprites: - sprite: Mobs/Customization/Vulpkanin/body_markings.rsi state: points_sharp-foot-l - coloring: - default: - type: - !type:SimpleColoring - color: "#e5e3d1" - type: marking id: VulpPointsSharpHandLeft @@ -332,11 +212,6 @@ sprites: - sprite: Mobs/Customization/Vulpkanin/body_markings.rsi state: points_sharp-hand-l - coloring: - default: - type: - !type:SimpleColoring - color: "#e5e3d1" ## Right Side @@ -347,11 +222,6 @@ sprites: - sprite: Mobs/Customization/Vulpkanin/body_markings.rsi state: points_sharp-leg-r - coloring: - default: - type: - !type:SimpleColoring - color: "#e5e3d1" - type: marking id: VulpPointsSharpArmRight @@ -360,11 +230,6 @@ sprites: - sprite: Mobs/Customization/Vulpkanin/body_markings.rsi state: points_sharp-arm-r - coloring: - default: - type: - !type:SimpleColoring - color: "#e5e3d1" - type: marking id: VulpPointsSharpLongArmRight @@ -373,11 +238,6 @@ sprites: - sprite: Mobs/Customization/Vulpkanin/body_markings.rsi state: points_sharp-arm-long-r - coloring: - default: - type: - !type:SimpleColoring - color: "#e5e3d1" - type: marking id: VulpPointsSharpFootRight @@ -386,11 +246,6 @@ sprites: - sprite: Mobs/Customization/Vulpkanin/body_markings.rsi state: points_sharp-foot-r - coloring: - default: - type: - !type:SimpleColoring - color: "#e5e3d1" - type: marking id: VulpPointsSharpHandRight @@ -399,8 +254,3 @@ sprites: - sprite: Mobs/Customization/Vulpkanin/body_markings.rsi state: points_sharp-hand-r - coloring: - default: - type: - !type:SimpleColoring - color: "#e5e3d1" \ No newline at end of file diff --git a/Resources/Prototypes/Entities/Mobs/Customization/Markings/Vulpkanin/vulpkanin_snout.yml b/Resources/Prototypes/Entities/Mobs/Customization/Markings/Vulpkanin/vulpkanin_snout.yml index 7ffca898d0..7b52afe7c7 100644 --- a/Resources/Prototypes/Entities/Mobs/Customization/Markings/Vulpkanin/vulpkanin_snout.yml +++ b/Resources/Prototypes/Entities/Mobs/Customization/Markings/Vulpkanin/vulpkanin_snout.yml @@ -7,6 +7,10 @@ sprites: - sprite: Mobs/Customization/Vulpkanin/snout_markings.rsi state: snout + coloring: + default: + type: + !type:SkinColoring - type: marking id: VulpSnoutNose diff --git a/Resources/Prototypes/Entities/Mobs/Customization/Markings/arachnid.yml b/Resources/Prototypes/Entities/Mobs/Customization/Markings/arachnid.yml index 17e8f34c1d..6694ac7fd6 100644 --- a/Resources/Prototypes/Entities/Mobs/Customization/Markings/arachnid.yml +++ b/Resources/Prototypes/Entities/Mobs/Customization/Markings/arachnid.yml @@ -6,6 +6,10 @@ sprites: - sprite: Mobs/Customization/Arachnid/chelicerae.rsi state: downwards + coloring: + default: + type: + !type:SkinColoring - type: marking id: ArachnidCheliceraeInwards @@ -14,6 +18,10 @@ sprites: - sprite: Mobs/Customization/Arachnid/chelicerae.rsi state: inwards + coloring: + default: + type: + !type:SkinColoring # Appendages - type: marking diff --git a/Resources/Prototypes/Entities/Mobs/Customization/Markings/diona.yml b/Resources/Prototypes/Entities/Mobs/Customization/Markings/diona.yml index 7d37edb795..147a7e7671 100644 --- a/Resources/Prototypes/Entities/Mobs/Customization/Markings/diona.yml +++ b/Resources/Prototypes/Entities/Mobs/Customization/Markings/diona.yml @@ -2,11 +2,6 @@ id: DionaThornsHead bodyPart: Head groupWhitelist: [Diona] - coloring: - default: - type: - !type:SimpleColoring - color: "#FFFFFF" sprites: - sprite: Mobs/Customization/diona.rsi state: thorns_head @@ -15,11 +10,6 @@ id: DionaThornsBody bodyPart: Chest groupWhitelist: [Diona] - coloring: - default: - type: - !type:SimpleColoring - color: "#FFFFFF" sprites: - sprite: Mobs/Customization/diona.rsi state: thorns_body diff --git a/Resources/Prototypes/Entities/Mobs/Customization/Markings/scars.yml b/Resources/Prototypes/Entities/Mobs/Customization/Markings/scars.yml index 12430935dd..259c8c1841 100644 --- a/Resources/Prototypes/Entities/Mobs/Customization/Markings/scars.yml +++ b/Resources/Prototypes/Entities/Mobs/Customization/Markings/scars.yml @@ -5,6 +5,11 @@ sprites: - sprite: Mobs/Customization/scars.rsi state: scar_eye_right + coloring: + default: + type: + !type:TattooColoring + fallbackColor: "#666666" - type: marking id: ScarEyeLeft @@ -13,6 +18,11 @@ sprites: - sprite: Mobs/Customization/scars.rsi state: scar_eye_left + coloring: + default: + type: + !type:TattooColoring + fallbackColor: "#666666" - type: marking id: ScarTopSurgeryShort @@ -22,6 +32,11 @@ sprites: - sprite: Mobs/Customization/scars.rsi state: scar_top_surgery_short + coloring: + default: + type: + !type:TattooColoring + fallbackColor: "#666666" - type: marking id: ScarTopSurgeryLong @@ -31,6 +46,11 @@ sprites: - sprite: Mobs/Customization/scars.rsi state: scar_top_surgery_long + coloring: + default: + type: + !type:TattooColoring + fallbackColor: "#666666" - type: marking id: ScarChest @@ -39,6 +59,11 @@ sprites: - sprite: Mobs/Customization/scars.rsi state: scar_chest + coloring: + default: + type: + !type:TattooColoring + fallbackColor: "#666666" - type: marking id: ScarNeck @@ -47,6 +72,11 @@ sprites: - sprite: Mobs/Customization/scars.rsi state: scar_neck + coloring: + default: + type: + !type:TattooColoring + fallbackColor: "#666666" - type: marking id: ScarChestBullets @@ -55,6 +85,11 @@ sprites: - sprite: Mobs/Customization/scars.rsi state: scar_chest_bullets + coloring: + default: + type: + !type:TattooColoring + fallbackColor: "#666666" - type: marking id: ScarStomachBullets @@ -63,6 +98,11 @@ sprites: - sprite: Mobs/Customization/scars.rsi state: scar_stomach_bullets + coloring: + default: + type: + !type:TattooColoring + fallbackColor: "#666666" - type: marking id: ScarFace1 @@ -71,6 +111,11 @@ sprites: - sprite: Mobs/Customization/scars.rsi state: scar_face_1 + coloring: + default: + type: + !type:TattooColoring + fallbackColor: "#666666" - type: marking id: ScarFace2 @@ -79,6 +124,11 @@ sprites: - sprite: Mobs/Customization/scars.rsi state: scar_face_2 + coloring: + default: + type: + !type:TattooColoring + fallbackColor: "#666666" - type: marking id: ScarEyeRightSmall @@ -87,6 +137,11 @@ sprites: - sprite: Mobs/Customization/scars.rsi state: scar_eye_right_small + coloring: + default: + type: + !type:TattooColoring + fallbackColor: "#666666" - type: marking id: ScarEyeLeftSmall @@ -95,3 +150,8 @@ sprites: - sprite: Mobs/Customization/scars.rsi state: scar_eye_left_small + coloring: + default: + type: + !type:TattooColoring + fallbackColor: "#666666" diff --git a/Resources/Prototypes/Entities/Mobs/Customization/Markings/vox_scars.yml b/Resources/Prototypes/Entities/Mobs/Customization/Markings/vox_scars.yml index ce48e869bb..495dedb6fe 100644 --- a/Resources/Prototypes/Entities/Mobs/Customization/Markings/vox_scars.yml +++ b/Resources/Prototypes/Entities/Mobs/Customization/Markings/vox_scars.yml @@ -5,6 +5,11 @@ sprites: - sprite: Mobs/Customization/vox_scars.rsi state: vox_scar_eye_right + coloring: + default: + type: + !type:TattooColoring + fallbackColor: "#666666" - type: marking id: VoxScarEyeLeft @@ -13,6 +18,11 @@ sprites: - sprite: Mobs/Customization/vox_scars.rsi state: vox_scar_eye_left + coloring: + default: + type: + !type:TattooColoring + fallbackColor: "#666666" - type: marking id: VoxScarTopSurgeryShort @@ -21,6 +31,11 @@ sprites: - sprite: Mobs/Customization/vox_scars.rsi state: vox_top_surgery_short + coloring: + default: + type: + !type:TattooColoring + fallbackColor: "#666666" - type: marking id: VoxScarTopSurgeryLong @@ -29,6 +44,11 @@ sprites: - sprite: Mobs/Customization/vox_scars.rsi state: vox_top_surgery_long + coloring: + default: + type: + !type:TattooColoring + fallbackColor: "#666666" - type: marking id: VoxScarChest @@ -37,6 +57,11 @@ sprites: - sprite: Mobs/Customization/vox_scars.rsi state: vox_scar_chest + coloring: + default: + type: + !type:TattooColoring + fallbackColor: "#666666" - type: marking id: VoxScarNeck @@ -45,6 +70,11 @@ sprites: - sprite: Mobs/Customization/vox_scars.rsi state: vox_scar_neck + coloring: + default: + type: + !type:TattooColoring + fallbackColor: "#666666" - type: marking id: VoxScarChestBullets @@ -53,6 +83,11 @@ sprites: - sprite: Mobs/Customization/vox_scars.rsi state: vox_scar_chest_bullets + coloring: + default: + type: + !type:TattooColoring + fallbackColor: "#666666" - type: marking id: VoxScarStomachBullets @@ -61,6 +96,11 @@ sprites: - sprite: Mobs/Customization/vox_scars.rsi state: vox_scar_stomach_bullets + coloring: + default: + type: + !type:TattooColoring + fallbackColor: "#666666" - type: marking id: VoxScarFace1 @@ -69,6 +109,11 @@ sprites: - sprite: Mobs/Customization/vox_scars.rsi state: vox_scar_face_1 + coloring: + default: + type: + !type:TattooColoring + fallbackColor: "#666666" - type: marking id: VoxScarFace2 @@ -77,6 +122,11 @@ sprites: - sprite: Mobs/Customization/vox_scars.rsi state: vox_scar_face_2 + coloring: + default: + type: + !type:TattooColoring + fallbackColor: "#666666" - type: marking id: VoxScarEyeRightSmall @@ -85,6 +135,11 @@ sprites: - sprite: Mobs/Customization/vox_scars.rsi state: vox_scar_eye_right_small + coloring: + default: + type: + !type:TattooColoring + fallbackColor: "#666666" - type: marking id: VoxScarEyeLeftSmall @@ -92,4 +147,9 @@ groupWhitelist: [Vox] sprites: - sprite: Mobs/Customization/vox_scars.rsi - state: vox_scar_eye_left_small \ No newline at end of file + state: vox_scar_eye_left_small + coloring: + default: + type: + !type:TattooColoring + fallbackColor: "#666666" diff --git a/Resources/Prototypes/Species/skin_colorations.yml b/Resources/Prototypes/Species/skin_colorations.yml index a9e033c448..7b265199a6 100644 --- a/Resources/Prototypes/Species/skin_colorations.yml +++ b/Resources/Prototypes/Species/skin_colorations.yml @@ -1,3 +1,11 @@ +# PARAMETER EXPLANATIONS: + +# realisticColors: If true, will randomly generate realistic hair and eye colors. +# Will also crush randomly generated colors down to the skin's luminosity +# so markings don't appear too bright on darker skin. +# squashEyeHairColors: If true, will also squash hair and eye colors to the coloration strategy. +# By default, only skin colors are affected! + - type: skinColoration id: Hues strategy: !type:ClampedHsvColoration @@ -8,6 +16,7 @@ strategy: !type:ClampedHslColoration saturation: [0, 0.1] lightness: [0.85, 1] + squashEyeHairColors: true - type: skinColoration id: VoxFeathers @@ -32,6 +41,7 @@ - type: skinColoration id: HumanToned strategy: !type:HumanTonedSkinColoration {} + realisticColors: true - type: skinColoration id: VulpkaninColors @@ -55,3 +65,4 @@ - hue: 1 # Red saturation: [ 0, 0.75 ] value: [ 0.2, 0.9 ] + squashEyeHairColors: true From c17429daa479477b16cd00378449659cf142b5f0 Mon Sep 17 00:00:00 2001 From: B_Kirill <153602297+B-Kirill@users.noreply.github.com> Date: Sun, 19 Jul 2026 14:42:51 +1000 Subject: [PATCH 108/108] Directional visibility for wall-mounted entities (#43476) * Directional visibility for wall-mounted entities * Fix cache * Revert * InteractionIgnoreAnchoredInTileComponent + yml * Main system * Move it * Directional arrow * Add fade * retry * Split "Directional arrow" * fix * small thing * Split "InteractionIgnoreAnchoredInTileComponent" * correct description * I hate the online editor * retry * ... * Apply suggestions from code review Co-authored-by: Jessica M * Additional comment * cleanup --------- Co-authored-by: Jessica M Co-authored-by: AJCM-git --- .../Wall/Components/WallMountTreeComponent.cs | 11 + .../Wall/Systems/WallMountTreeSystem.cs | 22 ++ .../Wall/Systems/WallMountVisibilitySystem.cs | 187 ++++++++++++++ Content.Client/Wall/WallMountFadeState.cs | 88 +++++++ .../Wall/WallMountVisibilityOverlay.cs | 242 ++++++++++++++++++ Content.Shared/CCVar/CCVars.Game.cs | 6 + Content.Shared/Wall/WallMountComponent.cs | 43 +++- 7 files changed, 586 insertions(+), 13 deletions(-) create mode 100644 Content.Client/Wall/Components/WallMountTreeComponent.cs create mode 100644 Content.Client/Wall/Systems/WallMountTreeSystem.cs create mode 100644 Content.Client/Wall/Systems/WallMountVisibilitySystem.cs create mode 100644 Content.Client/Wall/WallMountFadeState.cs create mode 100644 Content.Client/Wall/WallMountVisibilityOverlay.cs diff --git a/Content.Client/Wall/Components/WallMountTreeComponent.cs b/Content.Client/Wall/Components/WallMountTreeComponent.cs new file mode 100644 index 0000000000..01fce349c8 --- /dev/null +++ b/Content.Client/Wall/Components/WallMountTreeComponent.cs @@ -0,0 +1,11 @@ +using Content.Shared.Wall; +using Robust.Shared.ComponentTrees; +using Robust.Shared.Physics; + +namespace Content.Client.Wall.Components; + +[RegisterComponent] +public sealed partial class WallMountTreeComponent : Component, IComponentTreeComponent +{ + public DynamicTree> Tree { get; set; } = default!; +} diff --git a/Content.Client/Wall/Systems/WallMountTreeSystem.cs b/Content.Client/Wall/Systems/WallMountTreeSystem.cs new file mode 100644 index 0000000000..93398750d7 --- /dev/null +++ b/Content.Client/Wall/Systems/WallMountTreeSystem.cs @@ -0,0 +1,22 @@ +using System.Numerics; +using Content.Client.Wall.Components; +using Content.Shared.Wall; +using Robust.Client.GameObjects; +using Robust.Shared.ComponentTrees; +using Robust.Shared.Physics; + +namespace Content.Client.Wall.Systems; + +public sealed partial class WallMountTreeSystem : ComponentTreeSystem +{ + [Dependency] private SpriteSystem _sprite = default!; + + protected override bool DoFrameUpdate => true; + protected override bool DoTickUpdate => false; + protected override bool Recursive => false; + + protected override Box2 ExtractAabb(in ComponentTreeEntry entry, Vector2 pos, Angle rot) + { + return _sprite.CalculateBounds((entry.Uid, Comp(entry.Uid)), pos, rot, default).CalcBoundingBox(); + } +} diff --git a/Content.Client/Wall/Systems/WallMountVisibilitySystem.cs b/Content.Client/Wall/Systems/WallMountVisibilitySystem.cs new file mode 100644 index 0000000000..39f1c8be78 --- /dev/null +++ b/Content.Client/Wall/Systems/WallMountVisibilitySystem.cs @@ -0,0 +1,187 @@ +using System.Linq; +using Content.Shared.CCVar; +using Content.Shared.GameTicking; +using Content.Shared.Tag; +using Content.Shared.Wall; +using Robust.Client.GameObjects; +using Robust.Client.Graphics; +using Robust.Shared.Configuration; +using Robust.Shared.Map.Components; +using Robust.Shared.Prototypes; +using Robust.Shared.Timing; + +namespace Content.Client.Wall.Systems; + +/// +/// Manages the directional visibility overlay for wall-mounted entities. +/// +public sealed partial class WallMountVisibilitySystem : EntitySystem +{ + [Dependency] private IConfigurationManager _cfg = default!; + [Dependency] private IGameTiming _timing = default!; + [Dependency] private IOverlayManager _overlay = default!; + [Dependency] private SharedMapSystem _map = default!; + [Dependency] private SpriteSystem _sprite = default!; + [Dependency] private TagSystem _tag = default!; + [Dependency] private TransformSystem _xform = default!; + [Dependency] private WallMountTreeSystem _tree = default!; + + [Dependency] private EntityQuery _gridQuery = default!; + [Dependency] private EntityQuery _spriteQuery = default!; + + /// + /// Tags that block visibility when present on the same tile. + /// + private static readonly ProtoId[] BlockingTags = ["Wall"]; + + /// + /// Caches for whether a tile has any blocking entity. + /// + private readonly Dictionary<(EntityUid Grid, Vector2i Tile), bool> _tileCache = []; + + private WallMountVisibilityOverlay _overlayInstance = default!; + + /// + /// Whether directional visibility is currently enabled. + /// + internal bool DirectionalVisibilityEnabled = true; + + public override void Initialize() + { + base.Initialize(); + + _overlayInstance = new WallMountVisibilityOverlay(_timing, _map, _sprite, _xform, _tree, this, _gridQuery, _spriteQuery); + Subs.CVar(_cfg, CCVars.WallMountDirectionalVisibility, OnDirectionalVisibilityChanged, true); + } + + public override void Shutdown() + { + base.Shutdown(); + + _overlay.RemoveOverlay(_overlayInstance); + } + + private void OnDirectionalVisibilityChanged(bool enabled) + { + DirectionalVisibilityEnabled = enabled; + + if (enabled) + _overlay.AddOverlay(_overlayInstance); + else + { + _overlay.RemoveOverlay(_overlayInstance); + SetAllVisible(true); + } + } + + /// + /// Invalidates tile cache when anchor state changes for a blocking entity. + /// + [SubscribeLocalEvent] + private void OnTagAnchorChanged(Entity ent, ref AnchorStateChangedEvent args) + { + if (!_tag.HasAnyTag(ent.Comp, BlockingTags)) + return; + + var xform = args.Transform; + if (xform.GridUid is not { } gridUid) + return; + + if (!_gridQuery.TryGetComponent(gridUid, out var grid)) + return; + + var tile = _map.TileIndicesFor(gridUid, grid, xform.Coordinates); + _tileCache.Remove((gridUid, tile)); + } + + /// + /// Makes the entity visible again on component shutdown. + /// + [SubscribeLocalEvent] + private void OnWallMountShutdown(Entity ent, ref ComponentShutdown args) + { + if (TerminatingOrDeleted(ent)) + return; + + if (!TryComp(ent, out var sprite)) + return; + + _sprite.SetVisible((ent, sprite), true); + } + + /// + /// Makes the entity visible again if directional visibility is disabled for this mount. + /// + [SubscribeLocalEvent] + private void OnWallMountAfterHandleState(Entity ent, ref AfterAutoHandleStateEvent args) + { + if (ent.Comp.DirectionalVisibility) + return; + + if (!TryComp(ent, out var sprite)) + return; + + _sprite.SetVisible((ent, sprite), true); + } + + /// + /// Removes all cached entries for a grid that is being removed. + /// + [SubscribeLocalEvent] + private void OnGridRemoval(GridRemovalEvent ev) + { + foreach (var key in _tileCache.Keys.Where(k => k.Grid == ev.EntityUid).ToList()) + { + _tileCache.Remove(key); + } + } + + /// + /// Clears tile cache and resets all wall-mount visibility on round restart. + /// + [SubscribeNetworkEvent] + private void OnRoundRestart(RoundRestartCleanupEvent ev) + { + _tileCache.Clear(); + SetAllVisible(true); + } + + /// + /// Forces all wall-mount entities to become visible or hidden. + /// + internal void SetAllVisible(bool visible) + { + var query = AllEntityQuery(); + while (query.MoveNext(out var uid, out _, out var sprite)) + { + _sprite.SetVisible((uid, sprite), visible); + } + } + + /// + /// Checks whether the tile contains any anchored blocking entity. + /// + internal bool IsTileBlocked(EntityUid gridUid, Vector2i tile, EntityUid? ignoreUid = null) + { + if (!_gridQuery.TryGetComponent(gridUid, out var grid)) + return false; + + var key = (gridUid, tile); + if (_tileCache.TryGetValue(key, out var cached)) + return cached; + + var enumerator = _map.GetAnchoredEntitiesEnumerator(gridUid, grid, tile); + while (enumerator.MoveNext(out var anchored)) + { + if (anchored == ignoreUid) + continue; + + if (!_tag.HasAnyTag(anchored.Value, BlockingTags)) + continue; + + return _tileCache[key] = true; + } + + return _tileCache[key] = false; + } +} diff --git a/Content.Client/Wall/WallMountFadeState.cs b/Content.Client/Wall/WallMountFadeState.cs new file mode 100644 index 0000000000..f8c7b7478c --- /dev/null +++ b/Content.Client/Wall/WallMountFadeState.cs @@ -0,0 +1,88 @@ +using Robust.Client.GameObjects; + +namespace Content.Client.Wall; + +/// +/// Tracks fade progress for a wall-mounted entity. +/// +internal struct WallMountFadeState +{ + public float OriginalAlpha; + public float CurrentAlpha; + public float TargetAlpha; + + /// + /// Sprite alpha after applying the fade multiplier. + /// + public readonly float EffectiveAlpha => OriginalAlpha * CurrentAlpha; + + /// + /// Whether the entity should be rendered as visible at the current fade level. + /// + public readonly bool IsVisible => CurrentAlpha > 0f; + + /// + /// Creates a new fade state snapped immediately to the given target alpha. + /// + public static WallMountFadeState Snapped(float originalAlpha, float targetAlpha) + { + return new() + { + OriginalAlpha = originalAlpha, + CurrentAlpha = targetAlpha, + TargetAlpha = targetAlpha, + }; + } + + /// + /// Moves one step towards . + /// + public void StepTowards(float fadeStep) + { + if (MathHelper.CloseTo(CurrentAlpha, TargetAlpha)) + return; + + var delta = TargetAlpha - CurrentAlpha; + var step = MathF.Sign(delta) * MathF.Min(MathF.Abs(delta), fadeStep); + CurrentAlpha = Math.Clamp(CurrentAlpha + step, 0f, 1f); + } +} + +/// +/// Per-viewport fade state for wall-mounted entities. +/// +internal sealed class ViewportFadeState(SpriteSystem sprite, EntityQuery spriteQuery) : IDisposable +{ + private readonly SpriteSystem _sprite = sprite; + private readonly EntityQuery _spriteQuery = spriteQuery; + + /// + /// Fade states for entities tracked in this viewport. + /// + public readonly Dictionary FadeStates = []; + + /// + /// Entities visible this frame. + /// + public readonly HashSet SeenThisFrame = []; + + /// + /// Whether FOV was enabled during the previous frame. + /// + public bool WasFovEnabled = true; + + public void Dispose() + { + foreach (var (uid, state) in FadeStates) + { + if (!_spriteQuery.TryGetComponent(uid, out var sprite)) + continue; + + _sprite.SetColor((uid, sprite), sprite.Color.WithAlpha(state.OriginalAlpha)); + _sprite.SetVisible((uid, sprite), true); + } + + FadeStates.Clear(); + SeenThisFrame.Clear(); + } +} diff --git a/Content.Client/Wall/WallMountVisibilityOverlay.cs b/Content.Client/Wall/WallMountVisibilityOverlay.cs new file mode 100644 index 0000000000..c2c3e1dc7d --- /dev/null +++ b/Content.Client/Wall/WallMountVisibilityOverlay.cs @@ -0,0 +1,242 @@ +using System.Linq; +using System.Numerics; +using Content.Client.Graphics; +using Content.Client.Wall.Systems; +using Content.Shared.Wall; +using Robust.Client.GameObjects; +using Robust.Client.Graphics; +using Robust.Shared.Enums; +using Robust.Shared.Graphics; +using Robust.Shared.Map.Components; +using Robust.Shared.Timing; + +namespace Content.Client.Wall; + +/// +/// Renders wall-mounted entities conditionally based on their facing arc relative to the viewport's eye. +/// +public sealed partial class WallMountVisibilityOverlay( + IGameTiming timing, + SharedMapSystem map, + SpriteSystem sprite, + TransformSystem xform, + WallMountTreeSystem tree, + WallMountVisibilitySystem visibility, + EntityQuery gridQuery, + EntityQuery spriteQuery) : Overlay +{ + private readonly IGameTiming _timing = timing; + private readonly SharedMapSystem _map = map; + private readonly SpriteSystem _sprite = sprite; + private readonly TransformSystem _xform = xform; + private readonly WallMountTreeSystem _tree = tree; + private readonly WallMountVisibilitySystem _visibility = visibility; + + private readonly EntityQuery _gridQuery = gridQuery; + private readonly EntityQuery _spriteQuery = spriteQuery; + + /// + /// Caches instances per viewport. + /// + private readonly OverlayResourceCache _fadeCache = new(); + + /// + /// Original sprite alphas, shared across viewports to avoid capturing values modified by another viewport. + /// + private readonly Dictionary _originalAlphas = []; + + /// + /// Alpha change per second during fade. + /// + private const float FadeSpeed = 9f; + + public override OverlaySpace Space => OverlaySpace.WorldSpaceBelowEntities; + + protected override void Draw(in OverlayDrawArgs args) + { + if (!_visibility.DirectionalVisibilityEnabled) + return; + + if (args.Viewport.Eye is not { } eye) + return; + + var viewportState = _fadeCache.GetForViewport(args.Viewport, _ => new ViewportFadeState(_sprite, _spriteQuery)); + + if (!eye.DrawFov) + { + HandleFovDisabled(args, viewportState); + return; + } + + viewportState.WasFovEnabled = true; + + var fadeStep = FadeSpeed * (float)_timing.FrameTime.TotalSeconds; + var matrix = args.Viewport.GetWorldToLocalMatrix(); + + viewportState.SeenThisFrame.Clear(); + ProcessVisibleEntities(args, eye, matrix, fadeStep, viewportState); + + // Remove entities that left the viewport this frame. + foreach (var uid in viewportState.FadeStates.Keys.Except(viewportState.SeenThisFrame).ToList()) + { + RemoveTrackedEntity(uid, viewportState); + } + + ApplyFadeToVisibleEntities(viewportState); + } + + /// + /// When FOV gets disabled, clears fade state and restores sprites. + /// On subsequent frames, keeps wall-mounts visible and restores alpha modified by other viewports. + /// + private void HandleFovDisabled(in OverlayDrawArgs args, ViewportFadeState viewportState) + { + if (viewportState.WasFovEnabled) + { + ClearViewportFadeState(viewportState); + viewportState.WasFovEnabled = false; + } + + // Restore alpha modified by other viewports. + foreach (var entity in _tree.QueryAabb(args.MapId, args.WorldBounds)) + { + var uid = entity.Uid; + if (!_spriteQuery.TryGetComponent(uid, out var sprite)) + continue; + + if (_originalAlphas.Remove(uid, out var origAlpha)) + _sprite.SetColor((uid, sprite), sprite.Color.WithAlpha(origAlpha)); + + _sprite.SetVisible((uid, sprite), true); + } + } + + /// + /// Updates fade state for all wall-mounted entities in the viewport. + /// + private void ProcessVisibleEntities(in OverlayDrawArgs args, IEye eye, Matrix3x2 matrix, float fadeStep, ViewportFadeState viewportState) + { + foreach (var entity in _tree.QueryAabb(args.MapId, args.WorldBounds)) + { + var (wallmount, xform) = entity; + var uid = entity.Uid; + + if (!_spriteQuery.TryGetComponent(uid, out var sprite)) + continue; + + // Capture original alpha before any viewport modifies it. + if (!_originalAlphas.TryGetValue(uid, out var originalAlpha)) + _originalAlphas[uid] = originalAlpha = sprite.Color.A; + + viewportState.SeenThisFrame.Add(uid); + + var targetAlpha = ComputeTargetAlpha(uid, wallmount, xform, eye, matrix); + UpdateFadeState(uid, originalAlpha, targetAlpha, fadeStep, viewportState); + } + } + + /// + /// Returns 1 if the entity is within its facing arc relative to the eye, 0 otherwise. + /// + private float ComputeTargetAlpha(EntityUid uid, WallMountComponent wallmount, TransformComponent xform, IEye eye, Matrix3x2 matrix) + { + if (!wallmount.DirectionalVisibility || wallmount.Arc >= Math.Tau) + return 1f; + + if (xform.GridUid is not { } gridUid || !_gridQuery.TryGetComponent(gridUid, out var grid)) + return 1f; + + var tile = _map.TileIndicesFor(gridUid, grid, xform.Coordinates); + if (!_visibility.IsTileBlocked(gridUid, tile, uid)) + return 1f; + + var (pos, rot) = _xform.GetWorldPositionRotation(xform); + var facingAngle = rot + eye.Rotation + wallmount.Direction; + + var entityScreenPos = Vector2.Transform(pos, matrix); + var eyeScreenPos = Vector2.Transform(eye.Position.Position, matrix); + var toEntity = entityScreenPos - eyeScreenPos; + var eyeToEntityAngle = (toEntity with { X = -toEntity.X }).ToWorldAngle(); + + var angleDiff = Angle.ShortestDistance(eyeToEntityAngle, facingAngle); + return Math.Abs(angleDiff) < wallmount.Arc / 2 ? 1f : 0f; + } + + /// + /// Applies the current fade state to all entities seen this frame. + /// + private void ApplyFadeToVisibleEntities(ViewportFadeState viewportState) + { + foreach (var uid in viewportState.SeenThisFrame) + { + if (!viewportState.FadeStates.TryGetValue(uid, out var state)) + continue; + + if (!_spriteQuery.TryGetComponent(uid, out var sprite)) + { + RemoveTrackedEntity(uid, viewportState); + continue; + } + + _sprite.SetColor((uid, sprite), sprite.Color.WithAlpha(state.EffectiveAlpha)); + _sprite.SetVisible((uid, sprite), state.IsVisible); + } + } + + /// + /// Updates fade target for a tracked entity. Newly seen entities snap immediately without fading. + /// + private static void UpdateFadeState(EntityUid uid, float originalAlpha, float targetAlpha, float fadeStep, ViewportFadeState viewportState) + { + if (viewportState.FadeStates.TryGetValue(uid, out var state)) + { + state.TargetAlpha = targetAlpha; + state.StepTowards(fadeStep); + viewportState.FadeStates[uid] = state; + return; + } + + viewportState.FadeStates[uid] = WallMountFadeState.Snapped(originalAlpha, targetAlpha); + } + + private void RestoreSprite(EntityUid uid, WallMountFadeState state) + { + if (!_spriteQuery.TryGetComponent(uid, out var sprite)) + return; + + _sprite.SetColor((uid, sprite), sprite.Color.WithAlpha(state.OriginalAlpha)); + _sprite.SetVisible((uid, sprite), true); + } + + /// + /// Removes an entity from fade tracking and restores its sprite. + /// + private void RemoveTrackedEntity(EntityUid uid, ViewportFadeState viewportState) + { + if (viewportState.FadeStates.Remove(uid, out var state)) + RestoreSprite(uid, state); + + _originalAlphas.Remove(uid); + } + + /// + /// Clears all fade tracking for a viewport and restores sprites. + /// + private void ClearViewportFadeState(ViewportFadeState viewportState) + { + foreach (var (uid, state) in viewportState.FadeStates) + { + RestoreSprite(uid, state); + _originalAlphas.Remove(uid); + } + + viewportState.FadeStates.Clear(); + viewportState.SeenThisFrame.Clear(); + } + + protected override void DisposeBehavior() + { + _fadeCache.Dispose(); + base.DisposeBehavior(); + } +} diff --git a/Content.Shared/CCVar/CCVars.Game.cs b/Content.Shared/CCVar/CCVars.Game.cs index 16fcac7385..342cf783ce 100644 --- a/Content.Shared/CCVar/CCVars.Game.cs +++ b/Content.Shared/CCVar/CCVars.Game.cs @@ -435,4 +435,10 @@ public sealed partial class CCVars /// public static readonly CVarDef NewCharacterJobs = CVarDef.Create("game.new_character_jobs", "Passenger", CVar.REPLICATED); + + /// + /// Determines whether wall-mounted entities are hidden when viewed from outside their facing arc. + /// + public static readonly CVarDef WallMountDirectionalVisibility = + CVarDef.Create("game.wallmount_directional_visibility", true, CVar.SERVER | CVar.REPLICATED); } diff --git a/Content.Shared/Wall/WallMountComponent.cs b/Content.Shared/Wall/WallMountComponent.cs index 765dd5aff2..d7d1b04391 100644 --- a/Content.Shared/Wall/WallMountComponent.cs +++ b/Content.Shared/Wall/WallMountComponent.cs @@ -1,28 +1,45 @@ +using Robust.Shared.ComponentTrees; using Robust.Shared.GameStates; +using Robust.Shared.Physics; namespace Content.Shared.Wall; /// -/// This component enables an entity to ignore some obstructions for interaction checks. +/// Marks an entity as wall-mounted. +/// Allows interaction through other anchored entities on the same tile within the . +/// Hides the sprite when viewed from outside that arc. /// -/// -/// This will only exempt anchored entities that intersect the wall-mount. Additionally, this exemption will apply -/// in a limited arc, providing basic functionality for directional wall mounts. -/// -[RegisterComponent, NetworkedComponent, AutoGenerateComponentState] -public sealed partial class WallMountComponent : Component +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState(raiseAfterAutoHandleState: true)] +public sealed partial class WallMountComponent : Component, IComponentTreeEntry { /// - /// Range of angles for which the exemption applies. Bigger is more permissive. + /// Range of angles where interaction through other anchored entities on the same tile is allowed. + /// Bigger is more permissive. /// - [ViewVariables(VVAccess.ReadWrite)] - [DataField("arc"), AutoNetworkedField] + [DataField, AutoNetworkedField] public Angle Arc = new(MathF.PI); /// - /// The direction in which the exemption arc is facing, relative to the entity's rotation. Defaults to south. + /// The direction the allowed angle range faces, relative to the entity's rotation. + /// Defaults to south. /// - [ViewVariables(VVAccess.ReadWrite)] - [DataField("direction"), AutoNetworkedField] + [DataField, AutoNetworkedField] public Angle Direction = Angle.Zero; + + /// + /// If true, the sprite is only visible from within the facing . + /// + [DataField, AutoNetworkedField] + public bool DirectionalVisibility = true; + + [ViewVariables] + public EntityUid? TreeUid { get; set; } + + [ViewVariables] + public DynamicTree>? Tree { get; set; } + + [ViewVariables] + public bool AddToTree => Arc < Math.Tau && DirectionalVisibility; + + public bool TreeUpdateQueued { get; set; } }