From 35885345c22ec407241cd2144376565f1120f0d2 Mon Sep 17 00:00:00 2001 From: nao fujiwara Date: Sat, 27 Apr 2024 05:57:35 -0400 Subject: [PATCH 001/110] tweaked the old dress sprite (#27391) # made the waistband position consistent when rotating --- .../olddress.rsi/equipped-INNERCLOTHING.png | Bin 1260 -> 1263 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/olddress.rsi/equipped-INNERCLOTHING.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/olddress.rsi/equipped-INNERCLOTHING.png index a300332899cb9269e5bf050ec61f8b37b016aeda..145cf97b2e5d94f09cea0a71804be0a3d92c0f94 100644 GIT binary patch delta 1230 zcmV;<1Tp*U3GWGzF@LE^L_t(|ob8%HXd_h^$N$|;LXD+Knt;JAImC5sH@l@SNF+oo zO0XIh;$fie76i+BQcy&p9xPt=&|Z4*v=TvB+BIR>Kye!oq{vW>OPheS8;W#8sl{S; zH(T0HXe-Y{c(ao@narC`QkD0+G|U^m|9`%D^WJp658!Y(9Dfdn!{KlmGBFh=k*Gk_ z#v)OHOiaa9$NtUwr&z@M&YpqS(}`LWk*Gkto=#l7B4Bnt+ms~C&S%NhD}tte-`O)@ zO+uSq@z_8Q9y~fkCbNiCDv3XeJMy^K(}`G2Krk4B+hs*+A&=oVU(^-*r1cw~q!g!6 z6BH^=F*6Cx)_=F?F+s)etz^&}2qG8^A(cuZ783wK7N_G%vu2>CujDxTnrlELDiB+F zTMk}4^2lQ}>q;}lBMrR^7cQTRaUh0srGU88_s}KDvA8+5*8M7`1Hf~;C5A} zW9?mVyR2}vZDVpej)BlG$gi#IyiEQ2AAc|g;JLczdVefMOio{C($`FY(_u&X@Cdn; zwW{N8msK+;J>TiD>oUQj-$(0Ym^mZy*S_%Zdk&4&ioLA&Me? z`t^5w|6S6w)n85j^l1^{a9Gw=>WjGzW_{i70hFEHzYq?GRgbrVdOAk+nG-;t{Xh42 z4GEeJ^?y;jCh0}jHmC>x#XgkEl3C$Y@pX5>f3eThn9MVv_RgQwOfbs_a{~TvFeP9$ z`=jRg#^%FgnQ26$_>KIj!8`+&?`GuRq9|64EiR;)4X~gUU+IelrbV#ycpvGx6nvfz zY!r9l^K@YOZU%S0T}5tX?bt6qjc_{bxc2!t`hNrG;PszJ@qWce@qP!=b19S_?=#0V zv36%B@;C$L9|7|6OLZOmyg}#xC=WsY24u`|xa5x+ehk-~`s9UE$369g7!2CsM zVk%CCMn@31@IqDXt(6I>)g2lgfv>xZxiKQV*n}%9~vD&&xK1>C2{IeFNR8Ez>^~7kT8sPs|B%`fHz)!oi!XY z&i1F!Zna=Y7?$;@7bE2{=G&HEU8*WW(SP4YOH-_9>E&0K;PszpipP|Ijm?MHDikn2 z{trwKk{qqXt$lhfz8Vli+Ki=_6`74zRUvp>h)%# zrdKEwP(D0D`4D)vnc`~Oj3h~9b8Cl4l0VGf* zl*$qaF)z=iC7`XXsoQ_kw3rj1>;%pJwncy^rRhsA1x+(n52`^msfSu`dNDKuX6Li2 z&)-QQNfI&IqH8DtJVaxgFGf5V`WG%em#VJK s?;W(XK3~`>p`_xW)qM&a4(Gqm-x>#X;BC!?r~m)}07*qoM6N<$f+s9kEC2ui delta 1227 zcmV;+1T_2a3G4}wF@L5>L_t(|ob8%XXd87L$G_c@5@TtS=D^@e9^#zsx|KSRNQhXJ zV6_b5!$H~=1j~F^CA4tyLh?W|8hyE{67#9?tlEg-}~MF{&%_G4`47D41WfL!C){NGCdm=L!-Q? zHWnJ?#p&6o>e!R4e~LzY@a!3QxNg*%2#xZhhwH}GD?ApK)>@K;g{3v|>J?s7fAH)X z&?ccnuXuR44}b0+A)QVkk%;5>;$vyt!*wGZ=Hd4T;C5M&Sk7VW%@=jWK56}iJITcf z!~}te6UQ4xmhz%)0fkXzUCSb8s){# z%8nGgc+5#-BqIlX!JD`5TE}>v4{kQM?^pX0Q3*|B{Oc96@nn( zr(d`5{daNGR)019)29UlgF!_Sh`x|1Q0wb{4j??<`wPKfP<4Adkn70Lx>0@V1dwb0 zkApo!f`4X1eAKQaUi_V&PcanRJ5)H9&=%%9XuFv|yZ0{(AM zB_O-@qvm+w!NaD^G@?=bM*h^Go&l?O)6#E25ENsnI_$Xi`F|9K2F}6bJCEZ1s*mFRE+iKdC_Or$ zj%nyF5R1i7+CPNz=}zgpo#gZRYQkmuMh>3AU@#aA27|$1Fc=I9LZf`$I{it|Om719 z8=>jhs2G_T$H0Xb6t%Z@CZtw3GBFNsZx3~E0HCu!fG|B96@x=w1cN~cf`FO1>(ZFh zVSmTSJV}po3M4B!eOU}Di-w&DD58tsJ@wfQpo4? zs2m-mas)ivN+Gq|Ou1YZ$>-MXWXo@bw{9mzxuzbET9{HB%x&#L6vdWThXJ5eDSty0 zMdY@2O^Ih(akQhOrMLfD$1<=5VlYDDv-N8sll?$CxZ4Dmp;i5DXt4E=>mE+&+<`TfJT p*5~uvC6rV=w7XA%!C?IN`5R%=b+ Date: Sat, 27 Apr 2024 03:22:10 -0700 Subject: [PATCH 002/110] Canes + Cane Blade for Syndicate Librarians (#25873) * Cane + Cane Blade * Add - type: ContainerContainer * Add another - type: ContainerContainer * Fix and add proper ContainerContainer component * Add UserInterface component * Remove Space * Stat Changes * review --------- Co-authored-by: metalgearsloth --- Resources/Audio/Items/attributions.yml | 7 ++ Resources/Audio/Items/sheath.ogg | Bin 0 -> 7529 bytes Resources/Audio/Items/unsheath.ogg | Bin 0 -> 8558 bytes .../Locale/en-US/store/uplink-catalog.ftl | 3 + .../VendingMachines/Inventories/curadrobe.yml | 1 + .../Prototypes/Catalog/uplink_catalog.yml | 19 ++++ .../Entities/Objects/Weapons/Melee/cane.yml | 97 ++++++++++++++++++ Resources/Prototypes/tags.yml | 5 + .../Weapons/Melee/cane.rsi/cane-empty.png | Bin 0 -> 564 bytes .../Objects/Weapons/Melee/cane.rsi/cane.png | Bin 0 -> 649 bytes .../Weapons/Melee/cane.rsi/inhand-left.png | Bin 0 -> 261 bytes .../Weapons/Melee/cane.rsi/inhand-right.png | Bin 0 -> 268 bytes .../Objects/Weapons/Melee/cane.rsi/meta.json | 33 ++++++ .../Melee/cane.rsi/wielded-inhand-left.png | Bin 0 -> 633 bytes .../Melee/cane.rsi/wielded-inhand-right.png | Bin 0 -> 640 bytes .../Weapons/Melee/cane_blade.rsi/icon.png | Bin 0 -> 682 bytes .../Melee/cane_blade.rsi/inhand-left.png | Bin 0 -> 264 bytes .../Melee/cane_blade.rsi/inhand-right.png | Bin 0 -> 266 bytes .../Weapons/Melee/cane_blade.rsi/meta.json | 22 ++++ 19 files changed, 187 insertions(+) create mode 100644 Resources/Audio/Items/sheath.ogg create mode 100644 Resources/Audio/Items/unsheath.ogg create mode 100644 Resources/Prototypes/Entities/Objects/Weapons/Melee/cane.yml create mode 100644 Resources/Textures/Objects/Weapons/Melee/cane.rsi/cane-empty.png create mode 100644 Resources/Textures/Objects/Weapons/Melee/cane.rsi/cane.png create mode 100644 Resources/Textures/Objects/Weapons/Melee/cane.rsi/inhand-left.png create mode 100644 Resources/Textures/Objects/Weapons/Melee/cane.rsi/inhand-right.png create mode 100644 Resources/Textures/Objects/Weapons/Melee/cane.rsi/meta.json create mode 100644 Resources/Textures/Objects/Weapons/Melee/cane.rsi/wielded-inhand-left.png create mode 100644 Resources/Textures/Objects/Weapons/Melee/cane.rsi/wielded-inhand-right.png create mode 100644 Resources/Textures/Objects/Weapons/Melee/cane_blade.rsi/icon.png create mode 100644 Resources/Textures/Objects/Weapons/Melee/cane_blade.rsi/inhand-left.png create mode 100644 Resources/Textures/Objects/Weapons/Melee/cane_blade.rsi/inhand-right.png create mode 100644 Resources/Textures/Objects/Weapons/Melee/cane_blade.rsi/meta.json diff --git a/Resources/Audio/Items/attributions.yml b/Resources/Audio/Items/attributions.yml index 675e4fff24..b3ae4f611f 100644 --- a/Resources/Audio/Items/attributions.yml +++ b/Resources/Audio/Items/attributions.yml @@ -127,3 +127,10 @@ license: "CC0-1.0" copyright: "Original sound by stomachache on freesound.org, processed by vanilla" source: "https://freesound.org/s/262213/" + +- files: + - "sheath.ogg" + - "unsheath.ogg" + license: "CC-BY-SA-3.0" + copyright: "Taken from tgstation." + source: "https://github.com/tgstation/tgstation/blob/a7f525bce9a359ab5282fc754078cd4b5678a006/sound/items" diff --git a/Resources/Audio/Items/sheath.ogg b/Resources/Audio/Items/sheath.ogg new file mode 100644 index 0000000000000000000000000000000000000000..9e1d5cdc0097d2931d97aef889a5ba4fe3822251 GIT binary patch literal 7529 zcmaiX2Ut@})BmAJKthow2x@{L1ZkltL6NFL=z$Ag!Y3L;(+P!#-c;NJJW|M&Zz_dCy?efI3^&g{(mX3ng!i;Ee=2>taeAKM)? zzPfRP;SfX66+e47fBF;yq2{k8R~dE&RSd@To&S31JL#0Ec|0Cq^Nwkk5uLfE zn~$rkv7ZaV)6L#uhdn|Mp&*Y|kXMjbL`WKYdAs@eIr%$z2cYP@8TRaMMQLeUFhHze z25o?#5xQdV5X22Zm&H(=@y>cE3OPeEIFYPNAJOC^6UmV@L5FB``-Z1rnL9lUeOb3D8|P~xl{R(l{|7Y$uxI3JGQ z+22J*2!ig8h+i`@H`Q;i)YJ6adli}yVFn5xv*V3aKR(SOsV+*EcWJT9l=ol_(ESz; zMXy+FZ}@j$7E=G}*mm?lfU{_^2sv_VvC`S!Mdc*=0am+eAs_-!6FL{mr&q$)S|ZZk zEoS^x+LTwhTk(vUxgj1rfwt#^oCbpe2ZKVa62on(LaeI7ZHB^aH^S`%BmQdNLnb!p zZAWzk1C)LQlQ4tI6g`kRjmcypMieqaj&zeC*y2P{aanpf&hABSDV44Tm0qo-(ygWN zoh87h%=FVh>2Aq6|D!ouB{==xO~bWW3eo_!Z1NRp@)bLS6KnF5hV59m83I1lz)92m zl+O7pHTj z#EZPdlpPOxb_mS?U!q!)Xz58^$^IRB@MOyFD3~V&M$PL1b3zNLoQ*i>V!NFjHVhnIg58Wr7#pZ>X;DjV70k?NFM?esfdk4jT zcRNttMR9iAJ*gJSvNnZQX?j=K(4o5Ytbtn_js_@}Rt6}(UooHNUxd;1pi~T4AES_Q zSQKS9qJUEojxm}nLOVeck?7Zg$^}vJPse=`>)dy+`yZ|IPZ3idanQOIWXu%R@aFjQ zL0(pm0!N>R+YSXz42Db$-oLaz;y;1)ugHNw&=7ZGl58K1Zb}U^(qh|n@ZXW+%hwbu z@-9|Pzf{byN4ov1lJTliH}4r!B||fQ+iw2AUI8bwuZPQ7@i{vfB}N++A=Ay$=t z1PObiD8BXZ~=B8nl+=*BVsJ95$`Nz*E%BYJUSR&hsz6I>#b^ODj&=4I~vkH~So zmz#Jm_wK!gyCliT1h>fK{1=&?Ek#S!|7ZJGoj?skGth zu8wNmz@PzV_W#oX5L6cf*Wbw_rZ|~?oN_--25+wR-y;T4`;`oPm4IO%LXZ#y9RW@z za^Lfd(ehTaWJS-5?a9EfWV{t5=5i~-F&v@+F`5!;RdJXG`06B1l3&Ll?7sL35`v>X z=Yrmx3M)u^%#bMr5zx)(w}O5hdhgP8I?!y7$;}uEN_>wVN+v;25hb3(<1mw&)uZ<= zn=Gh*?{PMdLnIY!f?(if&*+NbXVBn-AbU7&FDjgj>p;!N;9AggA~-B2H`S~I!+Ma| zf@XOf#*Lzgn026+0-20%8Tze$Bzma;w!}sc?}J}nd5oS;Q8^r35NIzuTCYWVRQU@0epX@ z)2Kk``Gmj;MMEp_IRL1Eg9#y*2E1$&|6*mxx5MfhZotXzdEkVk zTe6#b=F|LS$^87h{7SF*Qu<_)$^kI_copQQl(WSgT|kp4zknh4nh>y9M%Ni`zONqWtx@jO^p z6uAcn%b=KGJu=7xIFFK?KKo@vwgA>mhTLQAp4ZrC9lg(iTVWyFu|toIQcfoTRtxFb zoLX2)HlIFL#-a@XIjcugH!qvVOfRnju%cuO=ws29d^Xli!#G@9YCN4)7zwL~s*J-LfKy?yCE+-0PxL@4&Qlqj z3b2a9ddf6f+Za>?a$B?SoQhgu;o(kg1j5BBg8JB!3IPvq^!x#=8aHa zlye5$=>!`uwSi=REOnp{cOMWOyk7MuUtjrKb9;B0#sPaOUAR=q!#E&(e#AN&L+-H$ ztm1IdV26$8i<|^^KuE?#Rm_k0dn&K@Sr^h}=z~9m|AQB679i^om>>-Tn^QVHh0w!R z^DeGK&yCx!4I{;-)rOJC^E1#wq3~^*tl||N7!-;&fMFG<2N5s5^GT zmc=lV#;}*eiVe~MQQU|Cd51-aA{f>sn9b+FElLptexdL=0NV=sb81NmIdo`BqKGC~ zDO5N&R!^J)3f#RSpq}&WB3p`p1MTLK%W!)*Isy@3t{}CKXn>W-y9F#t4Fpi2(Auos zspUf&tkm!U1$}V<1!wBpL~BsNegX&jw3A1~p%@sXA(#c^VqCcG+b|zQlt5+_A#zGJ zriO89vGRjsfPYmR26Wt7fB@>fj4;qq$USrd4*L-S=1`OXI)RMa3qevopdxx^>gazv zHXY`2g3taQdLdPt z6-7$~HBOEoz4QP-S$h2u4G7?~5fCs7BJ?iRpY-p-O(dWxFGJtaj zQdC(f<$ZKfLz=oM%7As03v?2RKbaoF8#HXM`AqXIA4{&r38C1o9 zeRKt|KgbXR_EE|M*6h%vw+}?nedZhSFuSb2dveFuNKkBR?O2z6RjO+v1Wid)Ik6;$(@ln7_sdZa64cm@_duG_NjKNdV&v{#dMyYb%0$n?M?Q#UwTOBuP1Q4* zxHe-U0vv*ThuoJ?1I-9pDltKy7~{unFS`$S4|A@>Nmqy_*iS}N_{?w~A5!h3O^qKr zV9^bQWDBfh?Cl=E!iu0aaHB-9Lh{^5#akK-e1gqD5Rn-Lr9Z3dLSJBJp5;;43*XyB z^zU(Fg1Cvz@YuVSa30?LTbcH%kmZHT%`gJ|{{8YO_74hmdu+!75kv$t@-B^mFNP4t z>wRsS!?@}Vo9Y<~=gtLq5`qpvP#gzBR5Tew;(Wjr!yUUXjwha%4B!hv&lm_?5J7Cu z-Me?4Nm&guOkz5Y#O$}T%;Gy_ddJGTdsSiH8Sh+>nF$(n3Ix$F$aFDOmKTSSvhwd< zmQ>RuC61w_(25Eu)KN)kc?HGR>WWfoPDx2|L7!D|(a88n=hc&+e@8K2;Oh5q=21YM zlWqR#R427={Ck-aZKTZJy_D(y9rK3qtyl3S_{l$c>jOe=>eVe~ypr$lS{9qWzJI%U z`n~UzF{ejhpU@O#KRRt_=tV39RS%5mJcIW%Xt(gQ>vF`p)UF(H9uDq17qEN_UME%) zaDYdIQKL7>C<zs#fU2VK>mh}6VOySh}N?ut|$oP=F!QkQ9&mYb!ju#a$3Qwp; z^GTkPDELZ}j$vsJOnD<~R=6(T^CkGJ^}}tk3kbpD;9s)|)Pru{tm3Ck)LpUrHE;Uu=JwPRugF4i4bO_e zIbo8n>H^)_(}t6dgX*1KT$kSkH6NAyAu4CzFs*ao9);}pb365$qm0UU(6-lxNXY4+ zo2TS1R~tR4;Y1*%UCqe?DJIX`#-IZNPd6g{It4#6*rZEq`W8MYRJrRFyULCt_KHJ? za>n>nC|;)v8+A+;XJ(s)1fh7}w(EHg8Ia`_g->@cnR$&ti2boy|gYT zT}tl_O)9^VTyPU(*Vy|uzM^Nb7O_@}=MwB9vrXLOea;*XT~lcA=0CFIy;rbkPXghq&JTq7JH*3^;Rv(Y=RUQXNUneuBl^mUmBZ{%X zF5BLWJ$3mCd8$*+*bvwuN!LRnCl)znFZxWH}U8C?<0g75H&a-McMlhIYKJ8cMeQ1zxT zbUbIw{P>F9P24=Io+dv-f!*f!8{5totLERt60D&@XzmB{fjQLEpV!_nUvI=PIEaC* zo-Aw3`}D`rD{NEiavtY5o>mPjhKNVKpCx=)kNkA|r8rEk!8wTMy?X13!U!FH)xf=M zSQ2(NBV9>;q-wz7WQ%+0}+4fQy!_6`r z$LGM`Ge(!W85fGfqiMuRzA#R4o0l2mr`~v7$aA=U2EYuFD)exBMgo7Fu8O;+kk zh*;6d&LF?q(%h=EY@>IrzdyOkkZO1-De>rG)w%XPDFbk>m}Zkt=dz?^^4166xs^`W zmuIw$k3e26zk=ByqS~e2IiwedILZCWQ5VJ|8K?W-eoE3YKU@6Ezoi^^aHPxOZFLQb z5qhgvoT71aVeZ48n%Wk5UAD=UKWZfmlCVpRP?Gm%igtL*FV5~q(ifbx9Zhfg4C<^o zo_2Nki5G(?ceY3K4t=h@rHIct$}&7#zIpJ<-u?2|}R@-GT#0q{^AWhIM?}PQv>P{Qz8@g2{Tk^ocqV@O_ zj3nko5rT$S|{yC`7xtRk7JC5P~mUyakfh(k8MxvJ~?>?t9aZIz=hVXSN=j2f54Td7dUTwSBX4zLWkhb;sL%wL16MV|4k*#;CxR-@4GLi>)m0v+bU%@JogEYp_5! zd`$W7INm7P3dqqoosK&F$nww8wa!fa`8bby_SLHNP7n|!pR#?F9aoT;E zxgfi=tnym@ebdVF+=QK|v&V4S!M#<&6WZv{OEY({ERc1=n2v|q+O+9;z7j*F;H^Kt z`S2j;AMdNh>LmOxGELem-<%wAOkcY~OPQDVpJ#t`@yV;)iv_EJNh2f0>&#!{ z^cWtXZ`U-H4-0qe9d560Y|tUB&0KresFi%c?6$wl@Z+AYxY`W@+FOgMdGg3$UaY9G zOQV)`Ad$fl+NgM3A>L;ZV7$;?MC`w|W|0u~B_y7w=bWC+0TF{sE_)5n#n>uNacWHP z1Z^!>boeG}-@x%yS42oaWq=2rdddC5nPQiXfxEd7=! zy>&{lyf`-Y$=`DYW@k%BMO11-FsWN#ivP$M`Stb7BZpVpmQB9+F&_by6&97Vo*A5v z*`L1RD|vzNhu0+Htw}ZVBmQKCxLJ4YqQP-NTlH+=U+4U5NPc`NSwZ?&Xk}y{cZPom0ta5RX6(jk@*>~nACHdkpn*!-P8J};;^lPZfNWttI z($%&5oa3O{l#&&wHUdsd4n?!Q{*a?nf+fF4DOb135|bGDtrWnovwv6!>^0x&!pv(OXNOvI zH^@wV_sirKj!~5v>)Lt;b2tuNOr1*k5{er-xPLXoHTUQ-lxB5%hD3kDadO*JyP{E= zyJp}13C9es3>b9i4)fYWW%<)>7LNCC`?Ob?^Y|O}Vp|TZOG6e{Tui#B@%Nv}!ipahJVUFPNU|v|PtX2wd9Cii8B=gQ=4*k!4?tjRr%x-Rhy6 z4tCtGhR0tqv8bInC(EifM1d^1JR&9tNS&b5hr>w4POEGzg<{{ImHwOjHYHB>Xkx0K6c;HHbDo_HG4+D^2rY+rQl0GwH)>g=G3 zF&jI=nfg1lyHCc4)#_aFmPfhtZCs(JN}Iw1M{fZb=WHS!}vioO)TF*e2c};4SZLR6i|l03|}9 z;TKxiMlM?SjtFyAOy?=+m^0w{vq<+)(C_b;#?^n@{#ckAyr0Y!|MPb{>8E0=dQwMz zaCH3M#M5b#U%v|lZtp+STi^5YdNJd*%^Di)DXg%h>RN!&50?hk)A>&=aSK&j?;}Nj zdr}NsQOdV&F)t0Pz3DwBFC!~EUs1wxss^o0>+I}o=;QO|=oHM6v?MdmcGjwUK);|b Veh%&}Yua{xTPBm|%$JK9{vRtX5cL26 literal 0 HcmV?d00001 diff --git a/Resources/Audio/Items/unsheath.ogg b/Resources/Audio/Items/unsheath.ogg new file mode 100644 index 0000000000000000000000000000000000000000..09867f5966a1527855036b59e4fa064ffdd8772b GIT binary patch literal 8558 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 v@DXRM&#AX872dtgPBfG0x&I?XHrRdHNPf@ z-Vua^VaOO)m}4(x7jx)3ejX7J^&u{Lb>G)<3=}kn0f9c^S!Q#Wc%C@D<=TSxh=*B8 zDG;9!$2c93_*Uqu&u@Z@K7R@3xy%9}iJo$?jny`0C2kT=5l2mhTd?d@m+ z*Fgt50001gNklpkCE067zF@UCR1S*{BP9&0000gPBfG0x&I?XHrRdHNPf@ z-Vua^VaOO)m}4(x7jx)3ejX7J^&u{Lb>G)<3=}kn0f9c^S!Q#Wc%C@D<=TSxh=*B8 zDG;9!$2c93_*Uqu&u@Z@K7R@3xy%9}iJo$?jny`0C2kT=5l2mhTd?d@m+ z*Fgt50002gNklJHGB7XB|Oz|FwGz`&p? zDafEHFU>G>$4R`7psM9A+H(IH7#QFokm;iTe^Rm+iWp5DfX$*z7ybX}(EbGNJhWZLz6{@oWfYq{Mwh&c=lMi7m^JPm&}_A5u}x&?y0C1m=*FY3-b~B3Kd|VW_|yF=UHg_S(f}Fc>FVdQ&MBb@ E0RKX4{Qv*} literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Weapons/Melee/cane.rsi/inhand-right.png b/Resources/Textures/Objects/Weapons/Melee/cane.rsi/inhand-right.png new file mode 100644 index 0000000000000000000000000000000000000000..8f12a08afd648aa3f70d944e580f2ed4899b821f GIT binary patch literal 268 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|j(NH`hE&XX zduyZMAp@S)M0xS9DJPkBHYYQ2y~xCWq+*~> z5Qut^e|P!0q^3VN*FLjr5vkhS|1#5LH_z+IYdn4KEzo~pm&YIM1Y|L8>0zA0x1i~# z`-aqK>;ftKzOAZjylXqX{VgNJAch0|SKd0Tv%6T`_0?|XHpB0)oaL&Q!oIJ{6vF50Grm{pVta5&7i5~JtDnm{ Hr-UW|eKKm5 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Weapons/Melee/cane.rsi/meta.json b/Resources/Textures/Objects/Weapons/Melee/cane.rsi/meta.json new file mode 100644 index 0000000000..913fcb524b --- /dev/null +++ b/Resources/Textures/Objects/Weapons/Melee/cane.rsi/meta.json @@ -0,0 +1,33 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Sprited by ps3moira#9488 on discord", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "cane-empty" + }, + { + "name": "cane" + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "wielded-inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + }, + { + "name": "wielded-inhand-right", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/Objects/Weapons/Melee/cane.rsi/wielded-inhand-left.png b/Resources/Textures/Objects/Weapons/Melee/cane.rsi/wielded-inhand-left.png new file mode 100644 index 0000000000000000000000000000000000000000..f6f87a4a90e382d7c6fc50e6e8147fe527d146ba GIT binary patch literal 633 zcmV-<0*3vGP)EX>4Tx04R}tkv&MmKpe$i)0T=<9IPNBlA$_T5S8L6RV;#q(pG5I!Q|2}Xws0h zxHt-~1qVMCs}3&Cx;nTDg5U>;tBaGOie&bxUS>Tx=Ba@mZ4iSsRE|$BPl?;`5hB&OK8s!UF zhZW9SoYhL5weQJa7|d%cX|B^8K^#j+APEsN>L{av8X~l6q?kz2e$2%`Z2ObslF3yD zBgX=&P$AiV@IUz7ty!3!a*~2E!2e=dA7emZ7icvs>-*TUS|@<_8Mx9q{%RAL{Up87 z(ZWYS|2A-O-O=Pd;Bp5TdeS9BvL!D~p-=$c&*+n`u^>F({{GwuF<0IolBzu?qTg#Z8muSrBfRCt{2+A#`)Fc=2VP`WsJ261xi z(4m8iqgN1mN{{1J(xDWJp#`fpg}w(_g7Je4S-w9600000U>e)lor*Z$ugef0YpBvy zmmxXRH$@!I$7KJV;e3pJljeV-I~8#n+fDwp%21`3v*x?49KIR$i~jxscK3K6_C5mu z000000BmbMJ20Oa2;tuE?~(f|@7eY8Bb{Q-a&t+xdVCMLtL@zR*_bN;0G7A`oi#zI TGB5<)00000NkvXXu0mjfdut=m literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Weapons/Melee/cane.rsi/wielded-inhand-right.png b/Resources/Textures/Objects/Weapons/Melee/cane.rsi/wielded-inhand-right.png new file mode 100644 index 0000000000000000000000000000000000000000..e1f0449b4c21149ca6bae96f72bfb67781bdbff9 GIT binary patch literal 640 zcmV-`0)PF9P)EX>4Tx04R}tkv&MmKpe$i)0T=<9IPNBlA$_T5S8L6RV;#q(pG5I!Q|2}Xws0h zxHt-~1qVMCs}3&Cx;nTDg5U>;tBaGOie&bxUS>Tx=Ba@mZ4iSsRE|$BPl?;`5hB&OK8s!UF zhZW9SoYhL5weQJa7|d%cX|B^8K^#j+APEsN>L{av8X~l6q?kz2e$2%`Z2ObslF3yD zBgX=&P$AiV@IUz7ty!3!a*~2E!2e=dA7emZ7icvs>-*TUS|@<_8Mx9q{%RAL{Up87 z(ZWYS|2A-O-O=Pd;Bp5TdeS9BvL!D~p-=$c&*+n`u^>F({{GwuF<0IolBzu?qTg#Z8mwn;=mRCt{2+A$7-KoA8`Vr(cmgQ23N zu&|)9 atl$QEdqJp8bA4<80000gPBfG0x&I?XHrRdHNPf@ z-Vua^VaOO)m}4(x7jx)3ejX7J^&u{Lb>G)<3=}kn0f9c^S!Q#Wc%C@D<=TSxh=*B8 zDG;9!$2c93_*Uqu&u@Z@K7R@3xy%9}iJo$?jny`0C2kT=5l2mhTd?d@m+ z*Fgt50002>NklJHGB7XB|Oz|FwGz`&p? zDafEHFU>G>$4R`7psM9A+H(IH7#QFokm;iTe^Rm+iWp5DfX$*z7ybX}(Ei?+|rx_kUd&j^)L^(rM2RwQH>i_jy_Zc2Pd&e+iVjb-Z9(2ohA3XU# zBfp9MaXvgPKXKv&!8jZgK8I$vQOidyAGLhca@sgxz$|BAfHW!w%<>Th0Q=X@7wQGn QBme*a07*qoM6N<$g8H8`@c;k- literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Weapons/Melee/cane_blade.rsi/inhand-left.png b/Resources/Textures/Objects/Weapons/Melee/cane_blade.rsi/inhand-left.png new file mode 100644 index 0000000000000000000000000000000000000000..f8e57880cb1f1e0b31de848993dec767a7e952cf GIT binary patch literal 264 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|4tcsbhE&XX zdut=_VFMnQK+!y-_R~BMR5vxLl|H>x%^|Qr^+lI&14E%xRLH0M3?lEN3{`>JKtS-R zrDvSl%e}{=KN+2TTvr@vc3!iL^Yu3Gm1lEKKCfKJ{ee$j>LI6m@jUHA!gkMW!k3y| zPF?$)5u%&npXYaJruDlUjNh03b<*E@a@X7GIv-v+Fa6DXP*k<$zwaj<#hQwzfrktp zPEF-J+!`*X$|D_D8+_=)!>j75e|#!RpUE}cX8d8zaPkRn?mx%WKOl2GUHx3vIVCg! E0KE!l5dZ)H literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Weapons/Melee/cane_blade.rsi/inhand-right.png b/Resources/Textures/Objects/Weapons/Melee/cane_blade.rsi/inhand-right.png new file mode 100644 index 0000000000000000000000000000000000000000..5fa04f7f87c7fc48cdcb023ce561ab6bfe89192f GIT binary patch literal 266 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|j(EB_hE&XX zdvhaivx9)kMNW?uhZR{bu;|7tb!qw1*y1AWzC~!7N6vk@?bqsA89qCQF#&Y}fk3F# z?m2O%T;;8JYyFbLzb)kJ;@^MkoAUY7w@O;F8K%GQ6?oXiq12?Jr^D>hwcPTzXA|Bsa5EZKY;WfS{*6)qgc_onm+ z Date: Sat, 27 Apr 2024 10:23:16 +0000 Subject: [PATCH 003/110] Automatic changelog update --- Resources/Changelog/Changelog.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 4ffc67a483..6a915fab15 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: Dygon - changes: - - message: Diona nymphs aren't deleted immediately after spawning anymore. - type: Fix - id: 5956 - time: '2024-02-17T16:38:21.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/25344 - author: Geekyhobo changes: - message: Massban Flag has been added to admin ranks @@ -3847,3 +3840,10 @@ id: 6455 time: '2024-04-27T06:30:30.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/27387 +- author: ps3moira + changes: + - message: Added Canes to the CuraDrobe and Cane Blades for Syndicate Librarians + type: Add + id: 6456 + time: '2024-04-27T10:22:10.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/25873 From 1861ae8e2bb419b32fbb34e93916393bc351afbf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20M=C4=99drek?= Date: Sat, 27 Apr 2024 10:23:55 +0000 Subject: [PATCH 004/110] fix: localisation keys in random content books (#27390) Fixes #27327 --- Content.Server/RandomMetadata/RandomMetadataSystem.cs | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/Content.Server/RandomMetadata/RandomMetadataSystem.cs b/Content.Server/RandomMetadata/RandomMetadataSystem.cs index 0c254c52ac..abab5e5fc3 100644 --- a/Content.Server/RandomMetadata/RandomMetadataSystem.cs +++ b/Content.Server/RandomMetadata/RandomMetadataSystem.cs @@ -47,9 +47,13 @@ public sealed class RandomMetadataSystem : EntitySystem var outputSegments = new List(); foreach (var segment in segments) { - if (_prototype.TryIndex(segment, out var proto)) - outputSegments.Add(_random.Pick(proto.Values)); - else if (Loc.TryGetString(segment, out var localizedSegment)) + if (_prototype.TryIndex(segment, out var proto)) { + var random = _random.Pick(proto.Values); + if (Loc.TryGetString(random, out var localizedSegment)) + outputSegments.Add(localizedSegment); + else + outputSegments.Add(random); + } else if (Loc.TryGetString(segment, out var localizedSegment)) outputSegments.Add(localizedSegment); else outputSegments.Add(segment); From b8a8d6f8fc8e0c1d83998c07a3265108d49de615 Mon Sep 17 00:00:00 2001 From: eoineoineoin Date: Sat, 27 Apr 2024 11:25:02 +0100 Subject: [PATCH 005/110] Add tooltips to artifact analyzer UI (#27393) Add tooltips to indicate why "Extract" button is disabled. Co-authored-by: Eoin Mcloughlin --- .../Ui/AnalysisConsoleMenu.xaml.cs | 33 +++++++++++++++++-- .../xenoarchaeology/artifact-analyzer.ftl | 3 ++ 2 files changed, 33 insertions(+), 3 deletions(-) diff --git a/Content.Client/Xenoarchaeology/Ui/AnalysisConsoleMenu.xaml.cs b/Content.Client/Xenoarchaeology/Ui/AnalysisConsoleMenu.xaml.cs index 59cf34944c..2890bb3dbf 100644 --- a/Content.Client/Xenoarchaeology/Ui/AnalysisConsoleMenu.xaml.cs +++ b/Content.Client/Xenoarchaeology/Ui/AnalysisConsoleMenu.xaml.cs @@ -78,17 +78,44 @@ public sealed partial class AnalysisConsoleMenu : FancyWindow else UpBiasButton.Pressed = true; - var disabled = !state.ServerConnected || !state.CanScan || state.PointAmount <= 0; + ExtractButton.Disabled = false; + if (!state.ServerConnected) + { + ExtractButton.Disabled = true; + ExtractButton.ToolTip = Loc.GetString("analysis-console-no-server-connected"); + } + else if (!state.CanScan) + { + ExtractButton.Disabled = true; - ExtractButton.Disabled = disabled; + // CanScan can be false if either there's no analyzer connected or if there's + // no entity on the scanner. The `Information` text will always tell the user + // of the former case, but in the latter, it'll only show a message if a scan + // has never been performed, so add a tooltip to indicate that the artifact + // is gone. + if (state.AnalyzerConnected) + { + ExtractButton.ToolTip = Loc.GetString("analysis-console-no-artifact-placed"); + } + else + { + ExtractButton.ToolTip = null; + } + } + else if (state.PointAmount <= 0) + { + ExtractButton.Disabled = true; + ExtractButton.ToolTip = Loc.GetString("analysis-console-no-points-to-extract"); + } - if (disabled) + if (ExtractButton.Disabled) { ExtractButton.RemoveStyleClass("ButtonColorGreen"); } else { ExtractButton.AddStyleClass("ButtonColorGreen"); + ExtractButton.ToolTip = null; } } private void UpdateArtifactIcon(EntityUid? uid) diff --git a/Resources/Locale/en-US/xenoarchaeology/artifact-analyzer.ftl b/Resources/Locale/en-US/xenoarchaeology/artifact-analyzer.ftl index 672d80ed31..35dd42167f 100644 --- a/Resources/Locale/en-US/xenoarchaeology/artifact-analyzer.ftl +++ b/Resources/Locale/en-US/xenoarchaeology/artifact-analyzer.ftl @@ -30,6 +30,9 @@ analysis-console-progress-text = {$seconds -> [one] T-{$seconds} second *[other] T-{$seconds} seconds } +analysis-console-no-server-connected = Cannot extract. No server connected. +analysis-console-no-artifact-placed = No artifact on scanner. +analysis-console-no-points-to-extract = No points to extract. analyzer-artifact-component-upgrade-analysis = analysis duration From 670ad3d962d0d36c5d593de060fa686002b78f2f Mon Sep 17 00:00:00 2001 From: PJBot Date: Sat, 27 Apr 2024 10:25:01 +0000 Subject: [PATCH 006/110] Automatic changelog update --- Resources/Changelog/Changelog.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 6a915fab15..09e9444209 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: Geekyhobo - changes: - - message: Massban Flag has been added to admin ranks - type: Add - id: 5957 - time: '2024-02-17T20:32:21.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/25327 - author: Moomoobeef changes: - message: Detectives are now supplied with a box of evidence markers, useful for @@ -3847,3 +3840,10 @@ id: 6456 time: '2024-04-27T10:22:10.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/25873 +- author: Lukasz825700516 + changes: + - message: Fixed books containing localization keys. + type: Fix + id: 6457 + time: '2024-04-27T10:23:55.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/27390 From a62e8701cb30cc0c96cbac5a33b57728efe596b5 Mon Sep 17 00:00:00 2001 From: Errant <35878406+Errant-4@users.noreply.github.com> Date: Sat, 27 Apr 2024 12:33:35 +0200 Subject: [PATCH 007/110] vox oxygen toxicity, respiration changes (#26705) * vox oxygen toxicity and related stuff * Review --------- Co-authored-by: metalgearsloth --- .../Loadouts/Effects/SpeciesLoadoutEffect.cs | 6 +++++ Resources/Prototypes/Reagents/botany.yml | 8 +++++++ Resources/Prototypes/Reagents/gases.yml | 24 ++++++++++++++++++- 3 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 Content.Shared/Preferences/Loadouts/Effects/SpeciesLoadoutEffect.cs diff --git a/Content.Shared/Preferences/Loadouts/Effects/SpeciesLoadoutEffect.cs b/Content.Shared/Preferences/Loadouts/Effects/SpeciesLoadoutEffect.cs new file mode 100644 index 0000000000..74673cbef3 --- /dev/null +++ b/Content.Shared/Preferences/Loadouts/Effects/SpeciesLoadoutEffect.cs @@ -0,0 +1,6 @@ +namespace Content.Shared.Preferences.Loadouts.Effects; + +public sealed class SpeciesLoadoutEffect +{ + +} diff --git a/Resources/Prototypes/Reagents/botany.yml b/Resources/Prototypes/Reagents/botany.yml index 4cb7d0c184..cdd19dc308 100644 --- a/Resources/Prototypes/Reagents/botany.yml +++ b/Resources/Prototypes/Reagents/botany.yml @@ -222,6 +222,9 @@ - !type:OrganType type: Rat shouldHave: false + - !type:OrganType + type: Vox + shouldHave: false - !type:ReagentThreshold reagent: Ammonia min: 0.8 @@ -249,6 +252,11 @@ Burn: -5 types: Bloodloss: -5 + - !type:Oxygenate # ammonia displaces nitrogen in vox blood + conditions: + - !type:OrganType + type: Vox + factor: -4 - type: reagent diff --git a/Resources/Prototypes/Reagents/gases.yml b/Resources/Prototypes/Reagents/gases.yml index 9cb73fffb8..06fb2b269b 100644 --- a/Resources/Prototypes/Reagents/gases.yml +++ b/Resources/Prototypes/Reagents/gases.yml @@ -35,6 +35,25 @@ ratios: CarbonDioxide: 1.0 Oxygen: -1.0 + - !type:HealthChange + conditions: + - !type:OrganType + type: Vox + scaleByQuantity: true + ignoreResistances: true + damage: + types: + Poison: + 7 + - !type:AdjustAlert + alertType: Toxins + conditions: + - !type:ReagentThreshold + min: 0.5 + - !type:OrganType + type: Vox + clear: true + time: 5 - type: reagent id: Plasma @@ -142,6 +161,9 @@ - !type:OrganType type: Plant shouldHave: false + - !type:OrganType + type: Vox + shouldHave: false # Don't want people to get toxin damage from the gas they just # exhaled, right? - !type:ReagentThreshold @@ -194,7 +216,7 @@ - !type:OrganType type: Vox ratios: - CarbonDioxide: 1.0 + Ammonia: 1.0 Nitrogen: -1.0 - !type:ModifyLungGas conditions: From 4d85ca5c2afda7600714f04a46d5b883f45ec8d3 Mon Sep 17 00:00:00 2001 From: PJBot Date: Sat, 27 Apr 2024 10:34:41 +0000 Subject: [PATCH 008/110] Automatic changelog update --- Resources/Changelog/Admin.yml | 11 +++++++++++ Resources/Changelog/Changelog.yml | 15 +++++++-------- 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/Resources/Changelog/Admin.yml b/Resources/Changelog/Admin.yml index 186b0500ae..0ba5665ab4 100644 --- a/Resources/Changelog/Admin.yml +++ b/Resources/Changelog/Admin.yml @@ -175,5 +175,16 @@ Entries: id: 23 time: '2024-04-26T00:25:57.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/27319 +- author: Errant + changes: + - message: When spawning vox for admemes, they should be given/spawned in a nitrogen-filled + space if possible. If they must be placed in normal air, an alternate vox prototype + now comes with breathing gear and N2 tank already equipped, but the internals + must be turned on via right click and even if you do this instantly they will + still probably take ~4 poison damage from the air, so heal them afterwards. + type: Add + id: 24 + time: '2024-04-27T10:33:35.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/26705 Name: Admin Order: 1 diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 09e9444209..7ac2ddf923 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,12 +1,4 @@ Entries: -- author: Moomoobeef - changes: - - message: Detectives are now supplied with a box of evidence markers, useful for - marking evidence at a crime scene. - type: Add - id: 5958 - time: '2024-02-17T20:49:16.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/25255 - author: Ubaser changes: - message: New "tailed" hair. @@ -3847,3 +3839,10 @@ id: 6457 time: '2024-04-27T10:23:55.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/27390 +- author: Errant + changes: + - message: Vox now take significant damage over time while inhaling oxygen. + type: Tweak + id: 6458 + time: '2024-04-27T10:33:35.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/26705 From 4903bc2e3da8c21008527909dd036d77ec916359 Mon Sep 17 00:00:00 2001 From: Ed <96445749+TheShuEd@users.noreply.github.com> Date: Sat, 27 Apr 2024 13:35:13 +0300 Subject: [PATCH 009/110] Small tomato killer tweak (#27265) * Update miscellaneous.yml * Update mobspawn.yml * Update miscellaneous.yml * Update miscellaneous.yml --- Resources/Prototypes/Entities/Effects/mobspawn.yml | 3 ++- Resources/Prototypes/Entities/Mobs/NPCs/miscellaneous.yml | 5 ----- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/Resources/Prototypes/Entities/Effects/mobspawn.yml b/Resources/Prototypes/Entities/Effects/mobspawn.yml index 4529497021..fb59aa3fc4 100644 --- a/Resources/Prototypes/Entities/Effects/mobspawn.yml +++ b/Resources/Prototypes/Entities/Effects/mobspawn.yml @@ -107,6 +107,7 @@ - FoodOnionRed - FoodWatermelon - FoodGatfruit + - MobTomatoKiller rarePrototypes: - MobLuminousEntity - - MobLuminousObject \ No newline at end of file + - MobLuminousObject diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/miscellaneous.yml b/Resources/Prototypes/Entities/Mobs/NPCs/miscellaneous.yml index 6fca4e6a63..f77429d597 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/miscellaneous.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/miscellaneous.yml @@ -79,7 +79,6 @@ description: it seems today it's not you eating tomatoes, it's the tomatoes eating you. components: - type: Item - size: Huge - type: NpcFactionMember factions: - SimpleHostile @@ -142,10 +141,6 @@ - type: Climbing - type: NameIdentifier group: GenericNumber - - type: SlowOnDamage - speedModifierThresholds: - 60: 0.7 - 80: 0.5 - type: FootstepModifier footstepSoundCollection: path: /Audio/Effects/Footsteps/slime1.ogg From dec101465bc011898dfe1f193cd928c997c63a35 Mon Sep 17 00:00:00 2001 From: PJBot Date: Sat, 27 Apr 2024 10:36:19 +0000 Subject: [PATCH 010/110] Automatic changelog update --- Resources/Changelog/Changelog.yml | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 7ac2ddf923..0bba26b13d 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: Ubaser - changes: - - message: New "tailed" hair. - type: Add - id: 5959 - time: '2024-02-17T20:49:48.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/25216 - author: Ubaser changes: - message: A new chest scar marking is now available to humans and dwarves. @@ -3846,3 +3839,12 @@ id: 6458 time: '2024-04-27T10:33:35.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/26705 +- author: TheShuEd + changes: + - message: Added tomato killers in floral anomaly berries + type: Add + - message: tweak size and damage of killer tomatoes + type: Tweak + id: 6459 + time: '2024-04-27T10:35:13.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/27265 From cafb41c161e5cd4780777ed3d5039c2b98bee1c1 Mon Sep 17 00:00:00 2001 From: Plykiya <58439124+Plykiya@users.noreply.github.com> Date: Sat, 27 Apr 2024 03:38:59 -0700 Subject: [PATCH 011/110] Printable Special Mags and Empty Mags and Material Rebalance for Ammo (#26178) * Printable Empty Magazines * Adjust values of ammo boxes, adjust material costs, add empty lethal/non-lethal mags, swap secfab shotgun shells with shotgun ammo boxes, add recipe for shotgun ammo boxes * Adds fully loaded pistol mags at secfab, removes printing respective cartridges at secfab * Adds fully loaded rifle mags at secfab, removes respective cartridges * Adds fully loaded light rifle mags at secfab, removes respective cartridges from secfab * Adds fully loaded speedloader to secfab, removes respective cartridges from secfab * small id mismatch fix * another wrong ID fix * capitalize Ls in speedloader * Add missing SpeedLoader recipe * Adds fully loaded shotgun drums to secfab, removes respective shells from secfab * add rifle ammo unlocks back in, forgot ammo unlocks affect other fabs as well * Moves tranquilizer shells to the non-lethal ammunition research * Account for the removal of rubbers, adds in craftable disablers * rubber rounds don't exist, remove empty non-lethal mags to just have empty mags * Add in WT550 mags * Convert latheRecipes to use LayeredTextureRect instead of TextureRect * Fix for issue, texture layering now works * Add in missing shell uranium box art * add shelluranium to meta.json * Fix yml issue * Get rid of unused single ammo printing unlocks --------- Co-authored-by: Plykiya --- Content.Client/Lathe/UI/LatheMenu.xaml.cs | 21 +- Content.Client/Lathe/UI/RecipeControl.xaml | 10 +- Content.Client/Lathe/UI/RecipeControl.xaml.cs | 6 +- .../Guns/Ammunition/Boxes/light_rifle.yml | 2 +- .../Weapons/Guns/Ammunition/Boxes/magnum.yml | 2 +- .../Weapons/Guns/Ammunition/Boxes/rifle.yml | 2 +- .../Weapons/Guns/Ammunition/Boxes/shotgun.yml | 17 +- .../Guns/Ammunition/Magazines/light_rifle.yml | 21 ++ .../Guns/Ammunition/Magazines/magnum.yml | 26 ++ .../Guns/Ammunition/Magazines/pistol.yml | 70 ++++ .../Guns/Ammunition/Magazines/rifle.yml | 21 ++ .../Guns/Ammunition/Magazines/shotgun.yml | 9 + .../Guns/Ammunition/SpeedLoaders/magnum.yml | 21 ++ .../Entities/Structures/Machines/lathe.yml | 47 ++- .../Prototypes/Recipes/Lathes/security.yml | 333 ++++++++++++++++-- Resources/Prototypes/Research/arsenal.yml | 35 +- .../Objects/Storage/boxes.rsi/meta.json | 3 + .../Storage/boxes.rsi/shelluranium.png | Bin 0 -> 1504 bytes 18 files changed, 572 insertions(+), 74 deletions(-) create mode 100644 Resources/Textures/Objects/Storage/boxes.rsi/shelluranium.png diff --git a/Content.Client/Lathe/UI/LatheMenu.xaml.cs b/Content.Client/Lathe/UI/LatheMenu.xaml.cs index ca8d256127..9e15f8239e 100644 --- a/Content.Client/Lathe/UI/LatheMenu.xaml.cs +++ b/Content.Client/Lathe/UI/LatheMenu.xaml.cs @@ -10,6 +10,8 @@ using Robust.Client.GameObjects; using Robust.Client.UserInterface.Controls; using Robust.Client.UserInterface.CustomControls; using Robust.Client.UserInterface.XAML; +using Robust.Client.ResourceManagement; +using Robust.Client.Graphics; using Robust.Shared.Prototypes; namespace Content.Client.Lathe.UI; @@ -19,6 +21,8 @@ public sealed partial class LatheMenu : DefaultWindow { [Dependency] private readonly IEntityManager _entityManager = default!; [Dependency] private readonly IPrototypeManager _prototypeManager = default!; + [Dependency] private readonly IResourceCache _resources = default!; + private EntityUid _owner; private readonly SpriteSystem _spriteSystem; private readonly LatheSystem _lathe; @@ -104,12 +108,21 @@ public sealed partial class LatheMenu : DefaultWindow RecipeList.Children.Clear(); foreach (var prototype in sortedRecipesToShow) { - var icon = prototype.Icon == null - ? _spriteSystem.GetPrototypeIcon(prototype.Result).Default - : _spriteSystem.Frame0(prototype.Icon); + List textures; + if (_prototypeManager.TryIndex(prototype.Result, out EntityPrototype? entityProto) && entityProto != null) + { + textures = SpriteComponent.GetPrototypeTextures(entityProto, _resources).Select(o => o.Default).ToList(); + } + else + { + textures = prototype.Icon == null + ? new List { _spriteSystem.GetPrototypeIcon(prototype.Result).Default } + : new List { _spriteSystem.Frame0(prototype.Icon) }; + } + var canProduce = _lathe.CanProduce(_owner, prototype, quantity); - var control = new RecipeControl(prototype, () => GenerateTooltipText(prototype), canProduce, icon); + var control = new RecipeControl(prototype, () => GenerateTooltipText(prototype), canProduce, textures); control.OnButtonPressed += s => { if (!int.TryParse(AmountLineEdit.Text, out var amount) || amount <= 0) diff --git a/Content.Client/Lathe/UI/RecipeControl.xaml b/Content.Client/Lathe/UI/RecipeControl.xaml index 2e02c8a614..d1371a026a 100644 --- a/Content.Client/Lathe/UI/RecipeControl.xaml +++ b/Content.Client/Lathe/UI/RecipeControl.xaml @@ -5,11 +5,15 @@ Margin="0" StyleClasses="ButtonSquare"> - + CanShrink="true" + /> diff --git a/Content.Client/Lathe/UI/RecipeControl.xaml.cs b/Content.Client/Lathe/UI/RecipeControl.xaml.cs index bf85ff7d93..47b6b5932c 100644 --- a/Content.Client/Lathe/UI/RecipeControl.xaml.cs +++ b/Content.Client/Lathe/UI/RecipeControl.xaml.cs @@ -2,8 +2,8 @@ using Content.Shared.Research.Prototypes; using Robust.Client.AutoGenerated; using Robust.Client.Graphics; using Robust.Client.UserInterface; +using Robust.Client.UserInterface.Controls; using Robust.Client.UserInterface.XAML; -using Robust.Shared.Graphics; namespace Content.Client.Lathe.UI; @@ -13,12 +13,12 @@ public sealed partial class RecipeControl : Control public Action? OnButtonPressed; public Func TooltipTextSupplier; - public RecipeControl(LatheRecipePrototype recipe, Func tooltipTextSupplier, bool canProduce, Texture? texture = null) + public RecipeControl(LatheRecipePrototype recipe, Func tooltipTextSupplier, bool canProduce, List textures) { RobustXamlLoader.Load(this); RecipeName.Text = recipe.Name; - RecipeTexture.Texture = texture; + RecipeTextures.Textures = textures; Button.Disabled = !canProduce; TooltipTextSupplier = tooltipTextSupplier; Button.TooltipSupplier = SupplyTooltip; diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/light_rifle.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/light_rifle.yml index 5b2ec79491..d5fb4360a8 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/light_rifle.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/light_rifle.yml @@ -10,7 +10,7 @@ tags: - CartridgeLightRifle proto: CartridgeLightRifle - capacity: 50 + capacity: 60 - type: Item size: Small - type: ContainerContainer diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/magnum.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/magnum.yml index f5b2955e08..018d812e3f 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/magnum.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/magnum.yml @@ -9,7 +9,7 @@ tags: - CartridgeMagnum proto: CartridgeMagnum - capacity: 60 + capacity: 12 - type: Item size: Small - type: ContainerContainer diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/rifle.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/rifle.yml index 54d5327dda..7a5f5d27ca 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/rifle.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/rifle.yml @@ -9,7 +9,7 @@ tags: - CartridgeRifle proto: CartridgeRifle - capacity: 60 + capacity: 50 - type: Item size: Small - type: ContainerContainer diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/shotgun.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/shotgun.yml index 831c3c3352..63ad52c032 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/shotgun.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/shotgun.yml @@ -21,7 +21,7 @@ whitelist: tags: - ShellShotgun - capacity: 12 + capacity: 16 # Shotgun Shells - type: entity @@ -89,6 +89,19 @@ - state: boxwide - state: shellincendiary +- type: entity + name: shotgun uranium cartridges dispenser + parent: AmmoProviderShotgunShell + id: BoxShotgunUranium + description: A dispenser box full of uranium cartridges, designed for riot shotguns. + components: + - type: BallisticAmmoProvider + proto: ShellShotgunUranium + - type: Sprite + layers: + - state: boxwide + - state: shelluranium + - type: entity name: shotgun practice cartridges dispenser parent: AmmoProviderShotgunShell @@ -113,4 +126,4 @@ - type: Sprite layers: - state: boxwide - - state: shellslug \ No newline at end of file + - state: shellslug diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/light_rifle.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/light_rifle.yml index ebb98b879c..495bcd37d1 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/light_rifle.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/light_rifle.yml @@ -68,6 +68,19 @@ - state: mag-1 map: ["enum.GunVisualLayers.Mag"] +- type: entity + id: MagazineLightRifleEmpty + name: "magazine (.30 rifle any)" + suffix: empty + parent: MagazineLightRifle + components: + - type: BallisticAmmoProvider + proto: null + - type: Sprite + layers: + - state: base + map: ["enum.GunVisualLayers.Base"] + - type: entity id: MagazineLightRiflePractice name: "magazine (.30 rifle practice)" @@ -96,6 +109,14 @@ - state: mag-1 map: ["enum.GunVisualLayers.Mag"] +- type: entity + id: MagazineLightRifleIncendiary + name: "magazine (.30 rifle incendiary)" + parent: MagazineLightRifle + components: + - type: BallisticAmmoProvider + proto: CartridgeLightRifleIncendiary + - type: entity id: MagazineLightRifleMaxim name: "pan magazine (.30 rifle)" diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/magnum.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/magnum.yml index 1d8437a884..304014d11b 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/magnum.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/magnum.yml @@ -47,6 +47,19 @@ zeroVisible: false - type: Appearance +- type: entity + id: MagazineMagnumEmpty + name: pistol magazine (.45 magnum any) + suffix: empty + parent: BaseMagazineMagnum + components: + - type: BallisticAmmoProvider + proto: null + - type: Sprite + layers: + - state: base + map: ["enum.GunVisualLayers.Base"] + - type: entity id: MagazineMagnum name: pistol magazine (.45 magnum) @@ -103,6 +116,19 @@ - state: mag-1 map: ["enum.GunVisualLayers.Mag"] +- type: entity + id: MagazineMagnumSubMachineGunEmpty + name: "Vector magazine (.45 magnum any)" + suffix: empty + parent: BaseMagazineMagnumSubMachineGun + components: + - type: BallisticAmmoProvider + proto: null + - type: Sprite + layers: + - state: base + map: ["enum.GunVisualLayers.Base"] + - type: entity id: MagazineMagnumSubMachineGun name: "Vector magazine (.45 magnum)" diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/pistol.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/pistol.yml index 3526281907..b55961a87f 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/pistol.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/pistol.yml @@ -128,6 +128,14 @@ containers: ballistic-ammo: !type:Container +- type: entity + id: MagazinePistolSubMachineGunTopMountedEmpty + name: WT550 magazine (.35 auto top-mounted any) + parent: MagazinePistolSubMachineGunTopMounted + components: + - type: BallisticAmmoProvider + proto: null + - type: entity id: MagazinePistol name: pistol magazine (.35 auto) @@ -142,6 +150,28 @@ - state: mag-1 map: ["enum.GunVisualLayers.Mag"] +- type: entity + id: MagazinePistolEmpty + name: pistol magazine (.35 auto any) + suffix: empty + parent: MagazinePistol + components: + - type: BallisticAmmoProvider + proto: null + - type: Sprite + layers: + - state: base + map: ["enum.GunVisualLayers.Base"] + + +- type: entity + id: MagazinePistolIncendiary + name: pistol magazine (.35 auto incendiary) + parent: MagazinePistol + components: + - type: BallisticAmmoProvider + proto: CartridgePistolIncendiary + - type: entity id: MagazinePistolPractice name: pistol magazine (.35 auto practice) @@ -156,6 +186,33 @@ - state: mag-1 map: ["enum.GunVisualLayers.Mag"] +- type: entity + id: MagazinePistolUranium + name: pistol magazine (.35 auto uranium) + parent: BaseMagazinePistol + components: + - type: BallisticAmmoProvider + proto: CartridgePistolUranium + - type: Sprite + layers: + - state: uranium + map: ["enum.GunVisualLayers.Base"] + - state: mag-1 + map: ["enum.GunVisualLayers.Mag"] + +- type: entity + id: MagazinePistolHighCapacityEmpty + name: machine pistol magazine (.35 auto any) + suffix: empty + parent: BaseMagazinePistolHighCapacity + components: + - type: BallisticAmmoProvider + proto: null + - type: Sprite + layers: + - state: base + map: ["enum.GunVisualLayers.Base"] + - type: entity id: MagazinePistolHighCapacity name: machine pistol magazine (.35 auto) @@ -218,6 +275,19 @@ - state: mag-1 map: ["enum.GunVisualLayers.Mag"] +- type: entity + id: MagazinePistolSubMachineGunEmpty + name: SMG magazine (.35 auto any) + suffix: empty + parent: BaseMagazinePistolSubMachineGun + components: + - type: BallisticAmmoProvider + proto: null + - type: Sprite + layers: + - state: base + map: ["enum.GunVisualLayers.Base"] + - type: entity id: MagazinePistolSubMachineGunPractice name: SMG magazine (.35 auto practice) diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/rifle.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/rifle.yml index d060af2c21..b2148ba1b2 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/rifle.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/rifle.yml @@ -47,6 +47,27 @@ - state: mag-1 map: ["enum.GunVisualLayers.Mag"] +- type: entity + id: MagazineRifleEmpty + name: "magazine (.20 rifle any)" + suffix: empty + parent: MagazineRifle + components: + - type: BallisticAmmoProvider + proto: null + - type: Sprite + layers: + - state: base + map: ["enum.GunVisualLayers.Base"] + +- type: entity + id: MagazineRifleIncendiary + name: "magazine (.20 rifle incendiary)" + parent: MagazineRifle + components: + - type: BallisticAmmoProvider + proto: CartridgeRifleIncendiary + - type: entity id: MagazineRiflePractice name: "magazine (.20 rifle practice)" diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/shotgun.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/shotgun.yml index cbe9bbfbe9..5b0b16bf4b 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/shotgun.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/shotgun.yml @@ -33,6 +33,15 @@ zeroVisible: false - type: Appearance +- type: entity + id: MagazineShotgunEmpty + name: ammo drum (.50 shells any) + suffix: empty + parent: BaseMagazineShotgun + components: + - type: BallisticAmmoProvider + proto: null + - type: entity id: MagazineShotgun name: ammo drum (.50 pellet) diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/SpeedLoaders/magnum.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/SpeedLoaders/magnum.yml index fda8046cc6..08d50db9b2 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/SpeedLoaders/magnum.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/SpeedLoaders/magnum.yml @@ -39,6 +39,27 @@ zeroVisible: false - type: Appearance +- type: entity + id: SpeedLoaderMagnumEmpty + name: "speed loader (.45 magnum any)" + parent: SpeedLoaderMagnum + components: + - type: BallisticAmmoProvider + proto: null + - type: Sprite + sprite: Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/magnum_speed_loader.rsi + layers: + - state: base + map: [ "enum.GunVisualLayers.Base" ] + +- type: entity + id: SpeedLoaderMagnumIncendiary + name: "speed loader (.45 magnum incendiary)" + parent: SpeedLoaderMagnum + components: + - type: BallisticAmmoProvider + proto: CartridgeMagnumIncendiary + - type: entity id: SpeedLoaderMagnumPractice name: "speed loader (.45 magnum practice)" diff --git a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml index 1bfb67f66a..318f880ab9 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml @@ -646,21 +646,28 @@ - Stunbaton - ForensicPad - RiotShield - - ShellShotgun - - ShellShotgunBeanbag - - ShellShotgunSlug - - ShellShotgunFlare - - ShellTranquilizer - - MagazinePistol + - BoxShotgunSlug + - BoxLethalshot + - BoxShotgunFlare + - MagazinePistol + - MagazinePistolEmpty - MagazinePistolSubMachineGun + - MagazinePistolSubMachineGunEmpty - MagazinePistolSubMachineGunTopMounted + - MagazinePistolSubMachineGunTopMountedEmpty - MagazineRifle + - MagazineRifleEmpty - MagazineLightRifle + - MagazineLightRifleEmpty + - MagazineShotgunEmpty + - MagazineShotgun + - MagazineShotgunSlug - MagazineBoxPistol - MagazineBoxMagnum - MagazineBoxRifle - MagazineBoxLightRifle - SpeedLoaderMagnum + - SpeedLoaderMagnumEmpty - TargetHuman - TargetSyndicate - TargetClown @@ -668,18 +675,21 @@ - MagazineBoxMagnumPractice - MagazineBoxPistolPractice - MagazineBoxRiflePractice - - ShellShotgunPractice - WeaponLaserCarbinePractice - WeaponDisablerPractice + - BoxShotgunPractice dynamicRecipes: - - CartridgeLightRifleIncendiary - - CartridgeMagnumIncendiary - - CartridgePistolIncendiary - - CartridgeRifleIncendiary - - CartridgeLightRifleUranium - - CartridgeMagnumUranium - - CartridgePistolUranium - - CartridgeRifleUranium + - MagazineLightRifleIncendiary + - SpeedLoaderMagnumIncendiary + - MagazinePistolIncendiary + - MagazineRifleIncendiary + - MagazineShotgunIncendiary + - MagazineLightRifleUranium + - SpeedLoaderMagnumUranium + - MagazinePistolUranium + - MagazineRifleUranium + - MagazineShotgunBeanbag + - ShellTranquilizer - ExplosivePayload - FlashPayload - HoloprojectorSecurity @@ -687,23 +697,24 @@ - MagazineBoxMagnumIncendiary - MagazineBoxPistolIncendiary - MagazineBoxRifleIncendiary + - BoxShotgunIncendiary - MagazineBoxLightRifleUranium - MagazineBoxMagnumUranium - MagazineBoxPistolUranium - MagazineBoxRifleUranium + - BoxShotgunUranium + - BoxBeanbag - MagazineGrenadeEmpty - GrenadeEMP - GrenadeFlash - - ShellShotgunIncendiary - - ShellShotgunUranium - Signaller - SignalTrigger - TelescopicShield - TimerTrigger - Truncheon - VoiceTrigger - - WeaponDisablerPractice - WeaponAdvancedLaser + - WeaponDisabler - WeaponDisablerSMG - WeaponLaserCannon - WeaponLaserCarbine diff --git a/Resources/Prototypes/Recipes/Lathes/security.yml b/Resources/Prototypes/Recipes/Lathes/security.yml index f536242238..f5d538618b 100644 --- a/Resources/Prototypes/Recipes/Lathes/security.yml +++ b/Resources/Prototypes/Recipes/Lathes/security.yml @@ -239,13 +239,56 @@ materials: Steel: 500 +- type: latheRecipe + id: MagazinePistolEmpty + result: MagazinePistolEmpty + category: Ammo + completetime: 5 + materials: + Steel: 25 + - type: latheRecipe id: MagazinePistol result: MagazinePistol category: Ammo completetime: 5 materials: - Steel: 100 + Steel: 145 + +- type: latheRecipe + id: MagazinePistolPractice + result: MagazinePistolPractice + category: Ammo + completetime: 5 + materials: + Steel: 85 + +- type: latheRecipe + id: MagazinePistolUranium + result: MagazinePistolUranium + category: Ammo + completetime: 5 + materials: + Steel: 25 + Plastic: 65 + Uranium: 120 + +- type: latheRecipe + id: MagazinePistolIncendiary + result: MagazinePistolIncendiary + category: Ammo + completetime: 5 + materials: + Steel: 25 + Plastic: 120 + +- type: latheRecipe + id: MagazinePistolSubMachineGunEmpty + result: MagazinePistolSubMachineGunEmpty + category: Ammo + completetime: 5 + materials: + Steel: 30 - type: latheRecipe id: MagazinePistolSubMachineGun @@ -255,6 +298,14 @@ materials: Steel: 300 +- type: latheRecipe + id: MagazinePistolSubMachineGunTopMountedEmpty + result: MagazinePistolSubMachineGunTopMountedEmpty + category: Ammo + completetime: 5 + materials: + Steel: 30 + - type: latheRecipe id: MagazinePistolSubMachineGunTopMounted result: MagazinePistolSubMachineGunTopMounted @@ -269,7 +320,7 @@ category: Ammo completetime: 5 materials: - Steel: 650 + Steel: 600 - type: latheRecipe id: MagazineBoxMagnum @@ -277,7 +328,15 @@ category: Ammo completetime: 5 materials: - Steel: 1250 + Steel: 240 + +- type: latheRecipe + id: MagazineRifleEmpty + result: MagazineRifleEmpty + category: Ammo + completetime: 5 + materials: + Steel: 25 - type: latheRecipe id: MagazineRifle @@ -285,7 +344,43 @@ category: Ammo completetime: 5 materials: - Steel: 375 + Steel: 475 + + +- type: latheRecipe + id: MagazineRiflePractice + result: MagazineRiflePractice + category: Ammo + completetime: 5 + materials: + Steel: 175 + +- type: latheRecipe + id: MagazineRifleUranium + result: MagazineRifleUranium + category: Ammo + completetime: 5 + materials: + Steel: 25 + Plastic: 300 + Uranium: 300 + +- type: latheRecipe + id: MagazineRifleIncendiary + result: MagazineRifleIncendiary + category: Ammo + completetime: 5 + materials: + Steel: 25 + Plastic: 450 + +- type: latheRecipe + id: MagazineLightRifleEmpty + result: MagazineLightRifleEmpty + category: Ammo + completetime: 5 + materials: + Steel: 25 - type: latheRecipe id: MagazineLightRifle @@ -293,7 +388,35 @@ category: Ammo completetime: 5 materials: - Steel: 375 + Steel: 565 + +- type: latheRecipe + id: MagazineLightRiflePractice + result: MagazineLightRiflePractice + category: Ammo + completetime: 5 + materials: + Steel: 205 + + +- type: latheRecipe + id: MagazineLightRifleUranium + result: MagazineLightRifleUranium + category: Ammo + completetime: 5 + materials: + Steel: 25 + Plastic: 360 + Uranium: 360 + +- type: latheRecipe + id: MagazineLightRifleIncendiary + result: MagazineLightRifleIncendiary + category: Ammo + completetime: 5 + materials: + Steel: 25 + Plastic: 540 - type: latheRecipe id: MagazineBoxRifle @@ -301,7 +424,7 @@ category: Ammo completetime: 5 materials: - Steel: 950 + Steel: 750 - type: latheRecipe id: MagazineBoxLightRifle @@ -309,7 +432,41 @@ category: Ammo completetime: 5 materials: - Steel: 1800 + Steel: 900 + +- type: latheRecipe + id: BoxLethalshot + result: BoxLethalshot + category: Ammo + completetime: 5 + materials: + Steel: 320 + +- type: latheRecipe + id: BoxBeanbag + result: BoxBeanbag + category: Ammo + completetime: 5 + materials: + Steel: 160 + Plastic: 240 + +- type: latheRecipe + id: BoxShotgunSlug + result: BoxShotgunSlug + category: Ammo + completetime: 5 + materials: + Steel: 240 + Plastic: 160 + +- type: latheRecipe + id: SpeedLoaderMagnumEmpty + result: SpeedLoaderMagnumEmpty + category: Ammo + completetime: 5 + materials: + Steel: 50 - type: latheRecipe id: SpeedLoaderMagnum @@ -317,7 +474,77 @@ category: Ammo completetime: 5 materials: - Steel: 200 + Steel: 190 + +- type: latheRecipe + id: SpeedLoaderMagnumPractice + result: SpeedLoaderMagnumPractice + category: Ammo + completetime: 5 + materials: + Steel: 90 + +- type: latheRecipe + id: SpeedLoaderMagnumUranium + result: SpeedLoaderMagnumUranium + category: Ammo + completetime: 5 + materials: + Steel: 50 + Plastic: 150 + Uranium: 110 + +- type: latheRecipe + id: SpeedLoaderMagnumIncendiary + result: SpeedLoaderMagnumIncendiary + category: Ammo + completetime: 5 + materials: + Steel: 50 + Plastic: 150 + +- type: latheRecipe + id: MagazineShotgunEmpty + result: MagazineShotgunEmpty + category: Ammo + completetime: 5 + materials: + Steel: 50 + +- type: latheRecipe + id: MagazineShotgun + result: MagazineShotgun + category: Ammo + completetime: 5 + materials: + Steel: 240 + +- type: latheRecipe + id: MagazineShotgunBeanbag + result: MagazineShotgunBeanbag + category: Ammo + completetime: 5 + materials: + Steel: 150 + Plastic: 140 + +- type: latheRecipe + id: MagazineShotgunSlug + result: MagazineShotgunSlug + category: Ammo + completetime: 5 + materials: + Steel: 190 + Plastic: 100 + +- type: latheRecipe + id: MagazineShotgunIncendiary + result: MagazineShotgunIncendiary + category: Ammo + completetime: 5 + materials: + Steel: 100 + Plastic: 190 - type: latheRecipe id: ShellShotgunIncendiary @@ -349,7 +576,7 @@ category: Ammo completetime: 2 materials: - Plastic: 20 + Plastic: 15 - type: latheRecipe id: CartridgeRifleIncendiary @@ -365,7 +592,7 @@ category: Ammo completetime: 5 materials: - Plastic: 650 + Plastic: 600 - type: latheRecipe id: MagazineBoxMagnumIncendiary @@ -373,7 +600,7 @@ category: Ammo completetime: 5 materials: - Plastic: 1250 + Plastic: 240 - type: latheRecipe id: MagazineBoxLightRifleIncendiary @@ -381,7 +608,7 @@ category: Ammo completetime: 5 materials: - Plastic: 1800 + Plastic: 900 - type: latheRecipe id: MagazineBoxRifleIncendiary @@ -389,7 +616,25 @@ category: Ammo completetime: 5 materials: - Plastic: 950 + Plastic: 750 + +- type: latheRecipe + id: BoxShotgunFlare + result: BoxShotgunFlare + category: Ammo + completetime: 5 + materials: + Steel: 80 + Plastic: 80 + +- type: latheRecipe + id: BoxShotgunIncendiary + result: BoxShotgunIncendiary + category: Ammo + completetime: 5 + materials: + Steel: 80 + Plastic: 320 - type: latheRecipe id: ShellShotgunPractice @@ -405,7 +650,7 @@ category: Ammo completetime: 5 materials: - Plastic: 600 + Steel: 300 - type: latheRecipe id: MagazineBoxMagnumPractice @@ -413,7 +658,7 @@ category: Ammo completetime: 5 materials: - Plastic: 1200 + Steel: 60 - type: latheRecipe id: MagazineBoxLightRiflePractice @@ -421,7 +666,7 @@ category: Ammo completetime: 5 materials: - Plastic: 1000 + Steel: 300 - type: latheRecipe id: MagazineBoxRiflePractice @@ -429,7 +674,7 @@ category: Ammo completetime: 5 materials: - Plastic: 900 + Steel: 250 - type: latheRecipe id: WeaponLaserCarbinePractice @@ -451,14 +696,22 @@ Glass: 100 Plastic: 200 +- type: latheRecipe + id: BoxShotgunPractice + result: BoxShotgunPractice + category: Ammo + completetime: 5 + materials: + Steel: 80 + - type: latheRecipe id: ShellShotgunUranium result: ShellShotgunUranium category: Ammo completetime: 2 materials: - Plastic: 15 - Uranium: 10 + Plastic: 20 + Uranium: 15 - type: latheRecipe id: CartridgePistolUranium @@ -476,7 +729,7 @@ completetime: 2 materials: Plastic: 20 - Uranium: 10 + Uranium: 15 - type: latheRecipe id: CartridgeLightRifleUranium @@ -484,7 +737,7 @@ category: Ammo completetime: 2 materials: - Plastic: 20 + Plastic: 10 Uranium: 10 - type: latheRecipe @@ -493,7 +746,7 @@ category: Ammo completetime: 2 materials: - Plastic: 15 + Plastic: 10 Uranium: 10 - type: latheRecipe @@ -502,8 +755,8 @@ category: Ammo completetime: 5 materials: - Plastic: 650 - Uranium: 65 + Plastic: 300 + Uranium: 600 - type: latheRecipe id: MagazineBoxMagnumUranium @@ -511,8 +764,8 @@ category: Ammo completetime: 5 materials: - Plastic: 1250 - Uranium: 125 + Plastic: 240 + Uranium: 180 - type: latheRecipe id: MagazineBoxLightRifleUranium @@ -520,8 +773,8 @@ category: Ammo completetime: 5 materials: - Plastic: 1800 - Uranium: 180 + Plastic: 600 + Uranium: 600 - type: latheRecipe id: MagazineBoxRifleUranium @@ -529,8 +782,27 @@ category: Ammo completetime: 5 materials: - Plastic: 950 - Uranium: 95 + Plastic: 500 + Uranium: 500 + +- type: latheRecipe + id: BoxShotgunUranium + result: BoxShotgunUranium + category: Ammo + completetime: 5 + materials: + Plastic: 320 + Uranium: 240 + +- type: latheRecipe + id: WeaponDisabler + result: WeaponDisabler + category: Weapons + completetime: 6 + materials: + Steel: 300 + Glass: 200 + Plastic: 200 - type: latheRecipe id: WeaponDisablerSMG @@ -576,4 +848,3 @@ Steel: 150 Plastic: 100 Glass: 20 - \ No newline at end of file diff --git a/Resources/Prototypes/Research/arsenal.yml b/Resources/Prototypes/Research/arsenal.yml index 3b7284c749..264a7df109 100644 --- a/Resources/Prototypes/Research/arsenal.yml +++ b/Resources/Prototypes/Research/arsenal.yml @@ -24,11 +24,12 @@ tier: 1 cost: 10000 recipeUnlocks: - - ShellShotgunIncendiary - - CartridgePistolIncendiary - - CartridgeMagnumIncendiary - - CartridgeLightRifleIncendiary - - CartridgeRifleIncendiary + - BoxShotgunIncendiary + - MagazineRifleIncendiary + - MagazinePistolIncendiary + - MagazineLightRifleIncendiary + - SpeedLoaderMagnumIncendiary + - MagazineShotgunIncendiary - MagazineBoxPistolIncendiary - MagazineBoxMagnumIncendiary - MagazineBoxLightRifleIncendiary @@ -46,6 +47,20 @@ recipeUnlocks: - WeaponLaserCarbine +- type: technology + id: NonlethalAmmunition + name: research-technology-nonlethal-ammunition + icon: + sprite: Objects/Weapons/Guns/Ammunition/Casings/shotgun_shell.rsi + state: beanbag + discipline: Arsenal + tier: 1 + cost: 5000 + recipeUnlocks: + - ShellTranquilizer + - BoxBeanbag + - WeaponDisabler + - type: technology id: UraniumMunitions name: research-technology-uranium-munitions @@ -56,15 +71,15 @@ tier: 1 cost: 7500 recipeUnlocks: - - ShellShotgunUranium - - CartridgePistolUranium - - CartridgeMagnumUranium - - CartridgeLightRifleUranium - - CartridgeRifleUranium + - MagazineRifleUranium + - MagazinePistolUranium + - MagazineLightRifleUranium + - SpeedLoaderMagnumUranium - MagazineBoxPistolUranium - MagazineBoxMagnumUranium - MagazineBoxLightRifleUranium - MagazineBoxRifleUranium + - BoxShotgunUranium - type: technology id: AdvancedRiotControl diff --git a/Resources/Textures/Objects/Storage/boxes.rsi/meta.json b/Resources/Textures/Objects/Storage/boxes.rsi/meta.json index 53ac39b639..788c43845c 100644 --- a/Resources/Textures/Objects/Storage/boxes.rsi/meta.json +++ b/Resources/Textures/Objects/Storage/boxes.rsi/meta.json @@ -197,6 +197,9 @@ { "name": "shellslug" }, + { + "name": "shelluranium" + }, { "name": "shelltoy" }, diff --git a/Resources/Textures/Objects/Storage/boxes.rsi/shelluranium.png b/Resources/Textures/Objects/Storage/boxes.rsi/shelluranium.png new file mode 100644 index 0000000000000000000000000000000000000000..2a4e1dee152d5bef64656a240060ddc6d97bc06d GIT binary patch literal 1504 zcmbVMU5MO79M6hg&pQeQTM&I2=6pE8B$MpdWo$g}E?0M@S&!|)ZHo`hPA0qIHkp`Y zyB{D(v7k__P^Bsg=gU3G;hX4*Ek%6rp)WqPB8VbI5$b_TRSM!{KSGt$VgpGgncw{W z|KI=X<+aLF`)3}S5d>j>xnxxN8zlGi6n{p8!LR&ve^5Fe3Bv3H$(<42diy~^xc4Ww zR*&oEQB0U8SvG4>spkb8EeMAfdx1qZXbc*(>H0d{-MI*XYwK`5Zz3~Tp)I#G2#s)6wZxw+7GaMd_6Hpahn*oxx-%W}8dmAYAp zg-uz}G)+dTtg0eMh*953_K%1nvpcA%-#%&_gHub0-{;xfho*%KYr`T>=zG-92Q(A87i&ACKPfLB6l#Vo8b)}CZ)ZQ?Revr-Psue-j@ zy3wPz9iWC4QyucG32CDpA%lBAW|aQxf7>j;c!yDiE||0CTaSj3#TYlU>F$)k10a+108 za?*z*9r8aV4)<>B*$JEvf@GPFApVgKG3xWl74i|a{GqnR$J-laW2sg@bK|NqbB}W1 z%(sj1^gCedz|qRdcfaY}%zb_3a@PL*TK&c8!k2T8Y%d@D{`GU{kLfQyeXaV#o5!zy zb!bz#Z~n>5%rUp Date: Sat, 27 Apr 2024 10:40:05 +0000 Subject: [PATCH 012/110] Automatic changelog update --- Resources/Changelog/Changelog.yml | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 0bba26b13d..42166a050c 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: Ubaser - changes: - - message: A new chest scar marking is now available to humans and dwarves. - type: Add - id: 5960 - time: '2024-02-17T20:50:40.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/25215 - author: ArchPigeon changes: - message: Tails now stop wagging on crit @@ -3848,3 +3841,17 @@ id: 6459 time: '2024-04-27T10:35:13.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/27265 +- author: Plykiya + changes: + - message: You can no longer print singular bullets at the security techfab. + type: Remove + - message: The security techfab now has recipes for ammunition boxes and pre-filled + magazines of every type of ammo. + type: Add + - message: You can now print empty magazines at the security techfab. + type: Add + - message: Material costs for printing all ammo and mags were rebalanced. + type: Tweak + id: 6460 + time: '2024-04-27T10:38:59.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/26178 From 6d6e7f0c98ef94f3e960a3bf562a52e28fc6ce28 Mon Sep 17 00:00:00 2001 From: Tainakov <136968973+Tainakov@users.noreply.github.com> Date: Sat, 27 Apr 2024 14:17:46 +0300 Subject: [PATCH 013/110] [Admin QOL] +Adminchat flag (#26930) --- .../UserInterface/Systems/Chat/ChatUIController.cs | 2 +- Content.Server/Chat/Commands/AdminChatCommand.cs | 2 +- Content.Shared/Administration/AdminFlags.cs | 5 +++++ 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/Content.Client/UserInterface/Systems/Chat/ChatUIController.cs b/Content.Client/UserInterface/Systems/Chat/ChatUIController.cs index 907268295c..31e09e6603 100644 --- a/Content.Client/UserInterface/Systems/Chat/ChatUIController.cs +++ b/Content.Client/UserInterface/Systems/Chat/ChatUIController.cs @@ -546,7 +546,7 @@ public sealed class ChatUIController : UIController } // only admins can see / filter asay - if (_admin.HasFlag(AdminFlags.Admin)) + if (_admin.HasFlag(AdminFlags.Adminchat)) { FilterableChannels |= ChatChannel.Admin; FilterableChannels |= ChatChannel.AdminAlert; diff --git a/Content.Server/Chat/Commands/AdminChatCommand.cs b/Content.Server/Chat/Commands/AdminChatCommand.cs index 979051e9d3..1a7ae050b6 100644 --- a/Content.Server/Chat/Commands/AdminChatCommand.cs +++ b/Content.Server/Chat/Commands/AdminChatCommand.cs @@ -5,7 +5,7 @@ using Robust.Shared.Console; namespace Content.Server.Chat.Commands { - [AdminCommand(AdminFlags.Admin)] + [AdminCommand(AdminFlags.Adminchat)] internal sealed class AdminChatCommand : IConsoleCommand { public string Command => "asay"; diff --git a/Content.Shared/Administration/AdminFlags.cs b/Content.Shared/Administration/AdminFlags.cs index 52161cf3f3..571982b548 100644 --- a/Content.Shared/Administration/AdminFlags.cs +++ b/Content.Shared/Administration/AdminFlags.cs @@ -99,6 +99,11 @@ /// Stealth = 1 << 16, + /// + /// Allows you to use Admin chat + /// + Adminchat = 1 << 17, + /// /// Dangerous host permissions like scsi. /// From 3a198cbb0d7def7c9e3fa22eba58454eea4a99ea Mon Sep 17 00:00:00 2001 From: PJBot Date: Sat, 27 Apr 2024 11:18:52 +0000 Subject: [PATCH 014/110] Automatic changelog update --- Resources/Changelog/Admin.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Resources/Changelog/Admin.yml b/Resources/Changelog/Admin.yml index 0ba5665ab4..fe1a1f56d7 100644 --- a/Resources/Changelog/Admin.yml +++ b/Resources/Changelog/Admin.yml @@ -186,5 +186,13 @@ Entries: id: 24 time: '2024-04-27T10:33:35.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/26705 +- author: Tainakov + changes: + - message: +Adminchat flag is added. Now to gain access to the admin chat you will + need this flag. + type: Add + id: 25 + time: '2024-04-27T11:17:47.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/26930 Name: Admin Order: 1 From 6d3e788dd666cc5b2dad636643bf6e4ce9e5b356 Mon Sep 17 00:00:00 2001 From: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> Date: Sat, 27 Apr 2024 23:17:23 +1000 Subject: [PATCH 015/110] Update cane UI key (#27395) * Update cane UI key * none of the pr passed ci yippee * weh --- .../Prototypes/Entities/Objects/Weapons/Melee/cane.yml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Melee/cane.yml b/Resources/Prototypes/Entities/Objects/Weapons/Melee/cane.yml index 9bb266bbde..5c26020d72 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Melee/cane.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Melee/cane.yml @@ -64,10 +64,11 @@ containers: storagebase: !type:Container ents: [] + item: !type:ContainerSlot - type: UserInterface interfaces: - - key: enum.StorageUiKey.Key - type: StorageBoundUserInterface + enum.StorageUiKey.Key: + type: StorageBoundUserInterface - type: ItemSlots slots: item: @@ -94,4 +95,4 @@ - type: ContainerFill containers: item: - - CaneBlade \ No newline at end of file + - CaneBlade From db555a7c79af0704680d49ec78035743393b71fa Mon Sep 17 00:00:00 2001 From: Ramlik <105449767+Ramlik@users.noreply.github.com> Date: Sat, 27 Apr 2024 16:27:18 +0300 Subject: [PATCH 016/110] Add a handy security radio (#25913) * Add a handy security radio I've always wanted to have a handy security radio in game and I thought it would be cool to have one in game. Demonstation can be found in here: https://youtu.be/VQOLiTQAmKc * Merged radio files and changed sprite location * Fixed RSI not having license and copyright * Added a chance to spawn in security closets All security closets will have 50% chance to spawn a handy security radio in it * Update radio id Co-authored-by: lzk <124214523+lzk228@users.noreply.github.com> * Change id in locker spawn * Change id in locker spawn * Changed id to RadioHandheldSecurity as suggested * Add radio to vending machine instead of locker Removed radio from lockers and added it to security vending machine * Fixed radio not having a sprite --------- Co-authored-by: lzk <124214523+lzk228@users.noreply.github.com> --- .../VendingMachines/Inventories/sec.yml | 1 + .../Entities/Objects/Devices/radio.yml | 17 +++++++++++ .../Devices/securityhandy.rsi/meta.json | 28 ++++++++++++++++++ .../walkietalkie-inhand-left.png | Bin 0 -> 372 bytes .../walkietalkie-inhand-right.png | Bin 0 -> 384 bytes .../securityhandy.rsi/walkietalkie-off.png | Bin 0 -> 357 bytes .../securityhandy.rsi/walkietalkie-on.png | Bin 0 -> 156 bytes .../securityhandy.rsi/walkietalkie.png | Bin 0 -> 348 bytes 8 files changed, 46 insertions(+) create mode 100644 Resources/Textures/Objects/Devices/securityhandy.rsi/meta.json create mode 100644 Resources/Textures/Objects/Devices/securityhandy.rsi/walkietalkie-inhand-left.png create mode 100644 Resources/Textures/Objects/Devices/securityhandy.rsi/walkietalkie-inhand-right.png create mode 100644 Resources/Textures/Objects/Devices/securityhandy.rsi/walkietalkie-off.png create mode 100644 Resources/Textures/Objects/Devices/securityhandy.rsi/walkietalkie-on.png create mode 100644 Resources/Textures/Objects/Devices/securityhandy.rsi/walkietalkie.png diff --git a/Resources/Prototypes/Catalog/VendingMachines/Inventories/sec.yml b/Resources/Prototypes/Catalog/VendingMachines/Inventories/sec.yml index b54c2cdbcf..afbeff6b08 100644 --- a/Resources/Prototypes/Catalog/VendingMachines/Inventories/sec.yml +++ b/Resources/Prototypes/Catalog/VendingMachines/Inventories/sec.yml @@ -19,6 +19,7 @@ RiotShield: 2 RiotLaserShield: 2 RiotBulletShield: 2 + RadioHandheldSecurity: 5 # security officers need to follow a diet regimen! contrabandInventory: FoodDonutHomer: 12 diff --git a/Resources/Prototypes/Entities/Objects/Devices/radio.yml b/Resources/Prototypes/Entities/Objects/Devices/radio.yml index 74c2865d07..43f84fe404 100644 --- a/Resources/Prototypes/Entities/Objects/Devices/radio.yml +++ b/Resources/Prototypes/Entities/Objects/Devices/radio.yml @@ -23,3 +23,20 @@ - type: Tag tags: - Radio + +- type: entity + name: security radio + description: A handy security radio. + parent: RadioHandheld + id: RadioHandheldSecurity + components: + - type: RadioMicrophone + broadcastChannel: Security + - type: RadioSpeaker + channels: + - Security + - type: Sprite + sprite: Objects/Devices/securityhandy.rsi + - type: Item + sprite: Objects/Devices/securityhandy.rsi + heldPrefix: walkietalkie \ No newline at end of file diff --git a/Resources/Textures/Objects/Devices/securityhandy.rsi/meta.json b/Resources/Textures/Objects/Devices/securityhandy.rsi/meta.json new file mode 100644 index 0000000000..18a2d93272 --- /dev/null +++ b/Resources/Textures/Objects/Devices/securityhandy.rsi/meta.json @@ -0,0 +1,28 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from cev-eris and modified by Swept at https://github.com/discordia-space/CEV-Eris/commit/efce5b6c3be75458ce238dcc01510e8f8a653ca6", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "walkietalkie" + }, + { + "name": "walkietalkie-inhand-left", + "directions": 4 + }, + { + "name": "walkietalkie-inhand-right", + "directions": 4 + }, + { + "name": "walkietalkie-off" + }, + { + "name": "walkietalkie-on" + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/Objects/Devices/securityhandy.rsi/walkietalkie-inhand-left.png b/Resources/Textures/Objects/Devices/securityhandy.rsi/walkietalkie-inhand-left.png new file mode 100644 index 0000000000000000000000000000000000000000..5815169abfb1130fd615856f17d084f3f24ea563 GIT binary patch literal 372 zcmV-)0gL{LP)Px$ElET{RCr$Pnz0eXFbo6fX}p5&l0h}lgJh5tT0zq&$3C5b0!L&39Q=IR zMR-K<-%fTcz+_USH!a-fY#dXy~h|M=A2Nt5(XrIEUNPG*%dmaT!E{#+5nQO z%KpO*VC^Y07rFw>qO5EKV3AeHwE-%VV)e8EEV3%OHb7-kte!T2MOG!(2B=Jm)zb#B z$g1Sp0F_CxdfEUMS(RKHpfV{|PaD7@tCA~i0OId>15i=*Ur)q6g0umMdjx3!hZqyZrA5##~fy+@D+fcSzL0D_`&h7C}j9-_MqKu}c9umQ@`Lv$~1zz^r!KtUj} Srs4nq002ovPDHLkV1fXKu$MXj literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Devices/securityhandy.rsi/walkietalkie-inhand-right.png b/Resources/Textures/Objects/Devices/securityhandy.rsi/walkietalkie-inhand-right.png new file mode 100644 index 0000000000000000000000000000000000000000..ed1e606cfb74c5af4fabd68a551a76d900210393 GIT binary patch literal 384 zcmV-`0e}99P)Px$I!Q!9RCr$Pnz0eXAPhz2X}p4q43a_8Fo7Enl0lL?R`4|VxJ!C0PKQ4FZd@V6 z(-SVNMS?#|@be1+(173s*aE=?;3dcwU<(8%z!nHD0KWpaT3}t*a-Qd{HQo)ob(pXK zib(nXO8Jnv+NQ~Xk4QP*BCn@NNC4Zmm6Vd~`z|@>CTQM!|DRv;VJd{WC^Ud0=a?-} zD_`${`VM&qp!BmQ&*nQo6C7a;0U%V#GDjLSKsNyNnSm|Px$9Z5t%R9Hvtl`(F@KomsB1uc?APrElj8<9FGD0~NV14s&=zy(QefbZaf0%{N| zZm@0o$P#S|N8_*-qRLw6yU4n+SMvHl&;K(Uq30{=xjq6wP~a{KD5Yv^ZKrQ_+H~uj z0Pz15_yB6o!2-WQCawSrvTz*7%{*3B1u++Bt?Q#PI9yp_3gAI&7-PI$<-K7K)aTCu zPP)-TPv%817Hp?14IF6L+5)ICxpudF&Fe2 zL~J~rz`L^_pSuho_jw1APs;t}-2f022nzJBzz?yujUfgX)K>ri002ovPDHLkV1fVu D=x>X5 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Devices/securityhandy.rsi/walkietalkie-on.png b/Resources/Textures/Objects/Devices/securityhandy.rsi/walkietalkie-on.png new file mode 100644 index 0000000000000000000000000000000000000000..dfd79a644160d79f8d519a00ff5bc7abfe1244f7 GIT binary patch literal 156 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}A)YRdArbD$ zDG~_>EDn4#?y*WRVR3VY5hwT>8$@~jCyL%|nRFl2>3PH8`| jf*GM0%vvGJ#L#tvP4VtINok<@44$rjF6*2Univ=WPx$6iGxuR9Hvtl|2f=Koo?>!d3|Ow%c2+KX>pB5pn>r$qCYk2N291yn{bm*>7tv z0b7g6L|4Vi4f0aBX_AF(-j{iAW?N|ZYBgLR0U#*w69tq~rM0%!w`y(rbWQ;HKLwUR z$vK$e9%SMQupkRZQB=)iQ4|n!f!4Y_7=zuL6-EFCTEiIQ?JDmLTcEt0+F0$cPlROH zMyGeh_|X!d1FjYT|G1yL${bgy6cGVn3l_#;t~K&JM;ym+YmpW>fb(X9EX$ClDY}zM z1tbQ*A>`0G1>9N;fRay@dJe(bT3H1g0CRvDAPPVmI^VN6AzUtqxuDS?V&mxq-ktsU uTxS5e&pU{GQtq2~13*w9DA2e9H)XPnA$vAlWdHyG07*qoM6N<$f&c&wW{HRZ literal 0 HcmV?d00001 From 37105b3400e9df81bc935baf821fe45d9c93c4cf Mon Sep 17 00:00:00 2001 From: PJBot Date: Sat, 27 Apr 2024 13:28:24 +0000 Subject: [PATCH 017/110] Automatic changelog update --- Resources/Changelog/Changelog.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 42166a050c..484241fd5c 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: ArchPigeon - changes: - - message: Tails now stop wagging on crit - type: Fix - id: 5961 - time: '2024-02-17T21:33:10.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/25323 - author: Killerqu00 changes: - message: EVA and paramedic suits now play sound when putting helmet on. @@ -3855,3 +3848,10 @@ id: 6460 time: '2024-04-27T10:38:59.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/26178 +- author: Ramlik + changes: + - message: Added security walkie talkies to the vendor. + type: Add + id: 6461 + time: '2024-04-27T13:27:18.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/25913 From c0ce5fba2a03dfb1ada8600008ab7b8846dcf828 Mon Sep 17 00:00:00 2001 From: brainfood1183 <113240905+brainfood1183@users.noreply.github.com> Date: Sat, 27 Apr 2024 14:50:57 +0100 Subject: [PATCH 018/110] Rodents can be Faxecuted (executed via Fax machine) (#21461) * Rodents can be Faxecuted (executed via Fax machine) * use brute instead of new group. * fax visuals now use tags for mouse and hamster instead of comps * fix for ubuntu, damn ubuntu bane of my life * cant copy hamlet, can now faxecute mothroaches. * fix * fix * fixes * removed ifs now using switch, removed hastag now using string. * fixes and no more switch * cleanup * more cleanup * fix * cleanup * moved damage out of faxmachine and into own system and component. * changes * fixes and done i think. * tidy * Fixes --------- Co-authored-by: metalgearsloth --- Content.Client/Fax/System/FaxVisualsSystem.cs | 48 +++++++++++++++ .../TransformableContainerSystem.cs | 2 +- Content.Server/Fax/AdminUI/AdminFaxEui.cs | 1 + Content.Server/Fax/FaxSystem.cs | 24 ++++++-- Content.Server/Nuke/NukeCodePaperSystem.cs | 1 + .../Fax/Components}/FaxMachineComponent.cs | 42 +++++++------ .../Fax/Components/FaxableObjectComponent.cs | 16 +++++ .../Fax/Components/FaxecuteComponent.cs | 19 ++++++ Content.Shared/Fax/DamageOnFaxecuteEvent.cs | 9 +++ Content.Shared/Fax/Systems/FaxecuteSystem.cs | 34 +++++++++++ Resources/Locale/en-US/fax/fax.ftl | 2 + .../Prototypes/Entities/Mobs/NPCs/animals.yml | 6 ++ .../Entities/Objects/Misc/paper.yml | 1 + .../Structures/Machines/fax_machine.yml | 16 +++-- .../fax_machine.rsi/inserting_hamster.png | Bin 0 -> 23368 bytes .../fax_machine.rsi/inserting_mothroach.png | Bin 0 -> 23838 bytes .../fax_machine.rsi/inserting_mouse.png | Bin 0 -> 23808 bytes .../Machines/fax_machine.rsi/meta.json | 57 ++++++++++++++++++ 18 files changed, 250 insertions(+), 28 deletions(-) create mode 100644 Content.Client/Fax/System/FaxVisualsSystem.cs rename {Content.Server/Fax => Content.Shared/Fax/Components}/FaxMachineComponent.cs (84%) create mode 100644 Content.Shared/Fax/Components/FaxableObjectComponent.cs create mode 100644 Content.Shared/Fax/Components/FaxecuteComponent.cs create mode 100644 Content.Shared/Fax/DamageOnFaxecuteEvent.cs create mode 100644 Content.Shared/Fax/Systems/FaxecuteSystem.cs create mode 100644 Resources/Textures/Structures/Machines/fax_machine.rsi/inserting_hamster.png create mode 100644 Resources/Textures/Structures/Machines/fax_machine.rsi/inserting_mothroach.png create mode 100644 Resources/Textures/Structures/Machines/fax_machine.rsi/inserting_mouse.png diff --git a/Content.Client/Fax/System/FaxVisualsSystem.cs b/Content.Client/Fax/System/FaxVisualsSystem.cs new file mode 100644 index 0000000000..892aec1d95 --- /dev/null +++ b/Content.Client/Fax/System/FaxVisualsSystem.cs @@ -0,0 +1,48 @@ +using Robust.Client.GameObjects; +using Content.Shared.Fax.Components; +using Content.Shared.Fax; +using Robust.Client.Animations; + +namespace Content.Client.Fax.System; + +/// +/// Visualizer for the fax machine which displays the correct sprite based on the inserted entity. +/// +public sealed class FaxVisualsSystem : EntitySystem +{ + [Dependency] private readonly AnimationPlayerSystem _player = default!; + [Dependency] private readonly SharedAppearanceSystem _appearance = default!; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnAppearanceChanged); + } + + private void OnAppearanceChanged(EntityUid uid, FaxMachineComponent component, ref AppearanceChangeEvent args) + { + if (args.Sprite == null) + return; + + if (_appearance.TryGetData(uid, FaxMachineVisuals.VisualState, out FaxMachineVisualState visuals) && visuals == FaxMachineVisualState.Inserting) + { + _player.Play(uid, new Animation() + { + Length = TimeSpan.FromSeconds(2.4), + AnimationTracks = + { + new AnimationTrackSpriteFlick() + { + LayerKey = FaxMachineVisuals.VisualState, + KeyFrames = + { + new AnimationTrackSpriteFlick.KeyFrame(component.InsertingState, 0f), + new AnimationTrackSpriteFlick.KeyFrame("icon", 2.4f), + } + } + } + }, "faxecute"); + } + } +} diff --git a/Content.Server/Chemistry/EntitySystems/TransformableContainerSystem.cs b/Content.Server/Chemistry/EntitySystems/TransformableContainerSystem.cs index 94a3fe2186..c375d97b8c 100644 --- a/Content.Server/Chemistry/EntitySystems/TransformableContainerSystem.cs +++ b/Content.Server/Chemistry/EntitySystems/TransformableContainerSystem.cs @@ -20,7 +20,7 @@ public sealed class TransformableContainerSystem : EntitySystem SubscribeLocalEvent(OnSolutionChange); } - private void OnMapInit(Entity entity, ref MapInitEvent args) + private void OnMapInit(Entity entity, ref MapInitEvent args) { var meta = MetaData(entity.Owner); if (string.IsNullOrEmpty(entity.Comp.InitialName)) diff --git a/Content.Server/Fax/AdminUI/AdminFaxEui.cs b/Content.Server/Fax/AdminUI/AdminFaxEui.cs index c8be6618e4..5153e62195 100644 --- a/Content.Server/Fax/AdminUI/AdminFaxEui.cs +++ b/Content.Server/Fax/AdminUI/AdminFaxEui.cs @@ -1,6 +1,7 @@ using Content.Server.DeviceNetwork.Components; using Content.Server.EUI; using Content.Shared.Eui; +using Content.Shared.Fax.Components; using Content.Shared.Fax; using Content.Shared.Follower; using Content.Shared.Ghost; diff --git a/Content.Server/Fax/FaxSystem.cs b/Content.Server/Fax/FaxSystem.cs index f492595444..c21e0db20c 100644 --- a/Content.Server/Fax/FaxSystem.cs +++ b/Content.Server/Fax/FaxSystem.cs @@ -16,7 +16,10 @@ using Content.Shared.DeviceNetwork; using Content.Shared.Emag.Components; using Content.Shared.Emag.Systems; using Content.Shared.Fax; +using Content.Shared.Fax.Systems; +using Content.Shared.Fax.Components; using Content.Shared.Interaction; +using Content.Shared.Mobs.Components; using Content.Shared.Paper; using Robust.Server.GameObjects; using Robust.Shared.Audio; @@ -42,6 +45,7 @@ public sealed class FaxSystem : EntitySystem [Dependency] private readonly UserInterfaceSystem _userInterface = default!; [Dependency] private readonly ISharedAdminLogManager _adminLogger = default!; [Dependency] private readonly MetaDataSystem _metaData = default!; + [Dependency] private readonly FaxecuteSystem _faxecute = default!; private const string PaperSlotId = "Paper"; @@ -313,12 +317,18 @@ public sealed class FaxSystem : EntitySystem private void OnCopyButtonPressed(EntityUid uid, FaxMachineComponent component, FaxCopyMessage args) { - Copy(uid, component, args); + if (HasComp(component.PaperSlot.Item)) + _faxecute.Faxecute(uid, component); /// when button pressed it will hurt the mob. + else + Copy(uid, component, args); } private void OnSendButtonPressed(EntityUid uid, FaxMachineComponent component, FaxSendMessage args) { - Send(uid, component, args.Actor); + if (HasComp(component.PaperSlot.Item)) + _faxecute.Faxecute(uid, component); /// when button pressed it will hurt the mob. + else + Send(uid, component, args.Actor); } private void OnRefreshButtonPressed(EntityUid uid, FaxMachineComponent component, FaxRefreshMessage args) @@ -336,14 +346,20 @@ public sealed class FaxSystem : EntitySystem if (!Resolve(uid, ref component)) return; + if (TryComp(component.PaperSlot.Item, out var faxable)) + component.InsertingState = faxable.InsertingState; + + if (component.InsertingTimeRemaining > 0) + { _appearanceSystem.SetData(uid, FaxMachineVisuals.VisualState, FaxMachineVisualState.Inserting); + Dirty(uid, component); + } else if (component.PrintingTimeRemaining > 0) _appearanceSystem.SetData(uid, FaxMachineVisuals.VisualState, FaxMachineVisualState.Printing); else _appearanceSystem.SetData(uid, FaxMachineVisuals.VisualState, FaxMachineVisualState.Normal); } - private void UpdateUserInterface(EntityUid uid, FaxMachineComponent? component = null) { if (!Resolve(uid, ref component)) @@ -477,7 +493,7 @@ public sealed class FaxSystem : EntitySystem return; if (!TryComp(sendEntity, out var metadata) || - !TryComp(sendEntity, out var paper)) + !TryComp(sendEntity, out var paper)) return; var payload = new NetworkPayload() diff --git a/Content.Server/Nuke/NukeCodePaperSystem.cs b/Content.Server/Nuke/NukeCodePaperSystem.cs index 8df25feebf..c1725536e7 100644 --- a/Content.Server/Nuke/NukeCodePaperSystem.cs +++ b/Content.Server/Nuke/NukeCodePaperSystem.cs @@ -1,6 +1,7 @@ using System.Diagnostics.CodeAnalysis; using Content.Server.Chat.Systems; using Content.Server.Fax; +using Content.Shared.Fax.Components; using Content.Server.Paper; using Content.Server.Station.Components; using Content.Server.Station.Systems; diff --git a/Content.Server/Fax/FaxMachineComponent.cs b/Content.Shared/Fax/Components/FaxMachineComponent.cs similarity index 84% rename from Content.Server/Fax/FaxMachineComponent.cs rename to Content.Shared/Fax/Components/FaxMachineComponent.cs index d1f269dd37..ee9459f508 100644 --- a/Content.Server/Fax/FaxMachineComponent.cs +++ b/Content.Shared/Fax/Components/FaxMachineComponent.cs @@ -1,12 +1,13 @@ using Content.Shared.Containers.ItemSlots; using Content.Shared.Paper; using Robust.Shared.Audio; +using Robust.Shared.GameStates; using Robust.Shared.Prototypes; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; -namespace Content.Server.Fax; +namespace Content.Shared.Fax.Components; -[RegisterComponent] +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState] public sealed partial class FaxMachineComponent : Component { /// @@ -16,6 +17,13 @@ public sealed partial class FaxMachineComponent : Component [DataField("name")] public string FaxName { get; set; } = "Unknown"; + /// + /// Sprite to use when inserting an object. + /// + [ViewVariables(VVAccess.ReadWrite)] + [DataField, AutoNetworkedField] + public string InsertingState = "inserting"; + /// /// Device address of fax in network to which data will be send /// @@ -26,7 +34,7 @@ public sealed partial class FaxMachineComponent : Component /// /// Contains the item to be sent, assumes it's paper... /// - [DataField("paperSlot", required: true)] + [DataField(required: true)] public ItemSlot PaperSlot = new(); /// @@ -34,39 +42,39 @@ public sealed partial class FaxMachineComponent : Component /// This will make it visible to others on the network /// [ViewVariables(VVAccess.ReadWrite)] - [DataField("responsePings")] + [DataField] public bool ResponsePings { get; set; } = true; /// /// Should admins be notified on message receive /// [ViewVariables(VVAccess.ReadWrite)] - [DataField("notifyAdmins")] + [DataField] public bool NotifyAdmins { get; set; } = false; /// /// Should that fax receive nuke codes send by admins. Probably should be captain fax only /// [ViewVariables(VVAccess.ReadWrite)] - [DataField("receiveNukeCodes")] + [DataField] public bool ReceiveNukeCodes { get; set; } = false; /// /// Sound to play when fax has been emagged /// - [DataField("emagSound")] + [DataField] public SoundSpecifier EmagSound = new SoundCollectionSpecifier("sparks"); /// /// Sound to play when fax printing new message /// - [DataField("printSound")] + [DataField] public SoundSpecifier PrintSound = new SoundPathSpecifier("/Audio/Machines/printer.ogg"); /// /// Sound to play when fax successfully send message /// - [DataField("sendSound")] + [DataField] public SoundSpecifier SendSound = new SoundPathSpecifier("/Audio/Machines/high_tech_confirm.ogg"); /// @@ -79,27 +87,27 @@ public sealed partial class FaxMachineComponent : Component /// Print queue of the incoming message /// [ViewVariables] - [DataField("printingQueue")] + [DataField] public Queue PrintingQueue { get; private set; } = new(); /// /// Message sending timeout /// [ViewVariables] - [DataField("sendTimeoutRemaining")] + [DataField] public float SendTimeoutRemaining; /// /// Message sending timeout /// [ViewVariables] - [DataField("sendTimeout")] + [DataField] public float SendTimeout = 5f; /// /// Remaining time of inserting animation /// - [DataField("insertingTimeRemaining")] + [DataField] public float InsertingTimeRemaining; /// @@ -111,7 +119,7 @@ public sealed partial class FaxMachineComponent : Component /// /// Remaining time of printing animation /// - [DataField("printingTimeRemaining")] + [DataField] public float PrintingTimeRemaining; /// @@ -124,13 +132,13 @@ public sealed partial class FaxMachineComponent : Component [DataDefinition] public sealed partial class FaxPrintout { - [DataField("name", required: true)] + [DataField(required: true)] public string Name { get; private set; } = default!; - [DataField("content", required: true)] + [DataField(required: true)] public string Content { get; private set; } = default!; - [DataField("prototypeId", customTypeSerializer: typeof(PrototypeIdSerializer), required: true)] + [DataField(customTypeSerializer: typeof(PrototypeIdSerializer), required: true)] public string PrototypeId { get; private set; } = default!; [DataField("stampState")] diff --git a/Content.Shared/Fax/Components/FaxableObjectComponent.cs b/Content.Shared/Fax/Components/FaxableObjectComponent.cs new file mode 100644 index 0000000000..57b6e610a3 --- /dev/null +++ b/Content.Shared/Fax/Components/FaxableObjectComponent.cs @@ -0,0 +1,16 @@ +using Robust.Shared.GameStates; + +namespace Content.Shared.Fax.Components; +/// +/// Entity with this component can be faxed. +/// +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState] +public sealed partial class FaxableObjectComponent : Component +{ + /// + /// Sprite to use when inserting an object. + /// + [ViewVariables(VVAccess.ReadWrite)] + [DataField, AutoNetworkedField] + public string InsertingState = "inserting"; +} diff --git a/Content.Shared/Fax/Components/FaxecuteComponent.cs b/Content.Shared/Fax/Components/FaxecuteComponent.cs new file mode 100644 index 0000000000..9c9bd03020 --- /dev/null +++ b/Content.Shared/Fax/Components/FaxecuteComponent.cs @@ -0,0 +1,19 @@ +using Content.Shared.Damage; +using Robust.Shared.GameStates; + +namespace Content.Shared.Fax.Components; + +/// +/// A fax component which stores a damage specifier for attempting to fax a mob. +/// +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState] +public sealed partial class FaxecuteComponent : Component +{ + + /// + /// Type of damage dealt when entity is faxecuted. + /// + [DataField(required: true), AutoNetworkedField] + public DamageSpecifier Damage = new(); +} + diff --git a/Content.Shared/Fax/DamageOnFaxecuteEvent.cs b/Content.Shared/Fax/DamageOnFaxecuteEvent.cs new file mode 100644 index 0000000000..b36f55ab5d --- /dev/null +++ b/Content.Shared/Fax/DamageOnFaxecuteEvent.cs @@ -0,0 +1,9 @@ + +namespace Content.Shared.Fax.Components; + +/// +/// Event for killing any mob within the fax machine. +/// +/// System for handling execution of a mob within fax when copy or send attempt is made. +/// +public sealed class FaxecuteSystem : EntitySystem +{ + [Dependency] private readonly DamageableSystem _damageable = default!; + [Dependency] private readonly SharedPopupSystem _popupSystem = default!; + + public override void Initialize() + { + base.Initialize(); + } + + public void Faxecute(EntityUid uid, FaxMachineComponent component, DamageOnFaxecuteEvent? args = null) + { + var sendEntity = component.PaperSlot.Item; + if (sendEntity == null) + return; + + if (!TryComp(uid, out var faxecute)) + return; + + var damageSpec = faxecute.Damage; + _damageable.TryChangeDamage(sendEntity, damageSpec); + _popupSystem.PopupEntity(Loc.GetString("fax-machine-popup-error", ("target", uid)), uid, PopupType.LargeCaution); + return; + + } +} diff --git a/Resources/Locale/en-US/fax/fax.ftl b/Resources/Locale/en-US/fax/fax.ftl index 1f1881a05d..412f3d7f43 100644 --- a/Resources/Locale/en-US/fax/fax.ftl +++ b/Resources/Locale/en-US/fax/fax.ftl @@ -3,6 +3,8 @@ fax-machine-popup-received = Received correspondence from { $from }. fax-machine-popup-name-long = Fax name is too long fax-machine-popup-name-exist = Fax with same name already exist in network fax-machine-popup-name-set = Fax name has been updated +fax-machine-popup-error = ERROR - jam in paper feed +fax-machine-popup-copy-error = ERROR - unable to copy! fax-machine-dialog-rename = Rename fax-machine-dialog-field-name = Name diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml b/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml index ad5b51d998..1cf56c29c6 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml @@ -432,6 +432,8 @@ - type: Speech speechVerb: Moth speechSounds: Squeak + - type: FaxableObject + insertingState: inserting_mothroach - type: MothAccent - type: Sprite sprite: Mobs/Animals/mothroach.rsi @@ -1535,6 +1537,8 @@ rootTask: task: MouseCompound - type: Physics + - type: FaxableObject + insertingState: inserting_mouse - type: Fixtures fixtures: fix1: @@ -3049,6 +3053,8 @@ - type: Item size: Tiny - type: Physics + - type: FaxableObject + insertingState: inserting_hamster - type: Fixtures fixtures: fix1: diff --git a/Resources/Prototypes/Entities/Objects/Misc/paper.yml b/Resources/Prototypes/Entities/Objects/Misc/paper.yml index 08e5e3caaf..0c87459164 100644 --- a/Resources/Prototypes/Entities/Objects/Misc/paper.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/paper.yml @@ -32,6 +32,7 @@ - Trash - Paper - type: Appearance + - type: FaxableObject - type: PaperVisuals - type: Flammable fireSpread: true diff --git a/Resources/Prototypes/Entities/Structures/Machines/fax_machine.yml b/Resources/Prototypes/Entities/Structures/Machines/fax_machine.yml index 583b5e3548..36be6451d2 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/fax_machine.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/fax_machine.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity parent: BaseMachinePowered id: FaxMachineBase name: long range fax machine @@ -9,7 +9,7 @@ drawdepth: SmallObjects layers: - state: icon - map: ["base"] + map: [ "enum.FaxMachineVisuals.VisualState" ] - type: Icon sprite: Structures/Machines/fax_machine.rsi state: icon @@ -36,23 +36,27 @@ type: FaxBoundUi - type: ApcPowerReceiver powerLoad: 250 + - type: Faxecute + damage: + types: + Blunt: 100 - type: FaxMachine paperSlot: insertSound: /Audio/Machines/scanning.ogg ejectSound: /Audio/Machines/tray_eject.ogg whitelist: components: - - Paper + - FaxableObject #used to be PaperComponent - brainfood1183 - type: GenericVisualizer visuals: enum.PowerDeviceVisuals.Powered: - base: + enum.FaxMachineVisuals.VisualState: True: { state: idle } False: { state: icon } enum.FaxMachineVisuals.VisualState: - base: - Inserting: { state: inserting } + enum.FaxMachineVisuals.VisualState: Printing: { state: printing } + Normal: {state: idle} - type: ItemSlots - type: ContainerContainer containers: diff --git a/Resources/Textures/Structures/Machines/fax_machine.rsi/inserting_hamster.png b/Resources/Textures/Structures/Machines/fax_machine.rsi/inserting_hamster.png new file mode 100644 index 0000000000000000000000000000000000000000..5f14e3013fe27a556cf939324a970734cb697eda GIT binary patch literal 23368 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 J*@hl#{s)EQ{v7}S literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/fax_machine.rsi/inserting_mothroach.png b/Resources/Textures/Structures/Machines/fax_machine.rsi/inserting_mothroach.png new file mode 100644 index 0000000000000000000000000000000000000000..d034322697ed03497fc66f815351a1c3966b4087 GIT binary patch literal 23838 zcmeI42{=?;{P?ewtwf79EodPbGxyGV#n_9Yg^{Jrow;|0EF%=DLuzp7 zZ=RdbU+Cv1^wF?3H`nm-74qFZ2?z>&6mKu!*uNfO)co|l+3bjrzh(>V)D$%A%(jLM zkD8*Zsi-WwA+e0pB^&kh}rld&o&h16+ExfHwjgm;4hG^8*HqRfxjG!^Q<8gjilabh5}F$Nkw zqtVf@VOpwcjV>S+bJ{Rt5^5Q`P=T~u-qBHiyiT$8$Z5kFSU)V*L_c>`%xEN(rt+-m z1_UKVse#cpwFedtPAx8GY)>1!l=LQBu2YN4t?Z~SIqG8qLC^hzZ+GaC&x{F~E*Ij} zv43)1f43zAlU6iu<)2nDIR_=Ze&pEXBVuE@Z%4+%ht*Y84`$_=EyS)nuI&)yF3oXl z_iPO|Y-|4TEbGOjP-JoF%>FIUa&Nr1IXJfDPsNSg$1fviwxtj3Y#Vo1E6W24!myj(L?GbKD^tgq|TW9!Xy!fu`%r|U|-XEKhKGv6(2r_W&h zT!-_6jeJx-VG0SCbuNY~_BXw%Fbvat6d}Xi;xuu)!pN9SEt;3D`VZYYN#k0?@cCM^ zqv%$!-4>39gVnf3Bj0{#_@WsXqNZPkko9e07iYqMg`S>obZ^i(^NhpHF&k&>A9xG* zhhrm0B*oqGJv+u|8)IM1t)p%#k0ROTg_N9EqvWZ1o)rCpD`uxydWt)FMW?im4LVvd z=H!B7vYDGd@Jdbv^dA~(nWM<)A7G||jW@M&vT>U8!0NEZ*h#b@j})1TvK!~;YHRI0 zJp1gF3qxA-MsX21+{sFB;{BnK!^o7~0Qm@i%T&NV!HCg_5i~S27yX(tljjmR$ zrd7)kdk|BH1F?2b4)5a(p+~xy9p9H`cVd3{;bF8DvFObWBdlj1JidR|-7#(>-J0D` zyz;*=+7T6wWRV<2zz znLs^F59Om_D?;gcQ%>D{xMrnp=AQO(nOlugj_gCtsk5k#XY88(;v36X?pfZl*ME*; zjZSiOQ}C9j!|SKMn5uq=W|ILEi#$?xNAGqzYISt}(V1^AF;Z)j;}2c3%yj-7I@q*u zmi8j;nS#jT0r55V5AB~MDyfML@Q9a^0SUtR*1{Hp1kmt1i`i z8oQR<&T04hl>A}lASbyqgC@z94=NsIm``6WG#p1REN_@^zW9oX`9W+K7X5ruYvpX?bqRFQOFNu)p0GY$<#NcmF72ZCCKuHCpp%2k;xjXj#~+`3Kl6BI z@{r_=IXmYZO}H<(a~OUf`+GmTt-e0}xh)Fp9rThx8Z1d!0pH8eias8lnIHEsP z&tSKSO~f45U++v+bq|l&Ho0+Fz~t>pt8&NX3be?#8Mh-Im@m>DKc~@3*EZ2ycF_ttds_+9eXJkIPmHo%#rlxBA56~{%VOjrK2fN!Y;3fP!{MRp^k`fjU-klQtGJ3GL^20}Gl`9sUt^M%P zvYZ@!Q>Q$0Lz;QUfo#L`7m4I+#W$xLbN=SM=X~NY>h3%_hn2N>->y?%eeomhpVIP$ z7n|GJ*RskTWE^Zu`K82X>(6JJjZ-(Lyl&b3*=zCfIbO?a3uW)fw#!c(oK}``uXNlU zBaU6<{b_G!4lbOK)e&DGKvHHXJN&V?;Kf8Ai&a&xn-wdX$158=TDfiYvFGx4C#)PN z7)M@a7TXv*BhEhd^Fr>z3v+L}{G(+cAvzj>9+#kJOe|M*#v1D8P zuK2aV`mK*$%lD_PuHh9|EK?EIUr_abe#f$NYt8hF(~B21p7(D&U0yxR@w{W~34^6x zZ~WgFcI>=6w=i>WW^8K4B9Dx^piAdg^P69*CoqejyuY-nVMOQs(gf7#$)%q>A}~$e75YFy*kf2`n~>zA*M}f8CaBUV@iQNf_C&zoRI1DGGc zgZ-`K&pSu&+}YV*c283qk4h?spxI^a94CJ#TN?wO&`Te~gfQ%?h-z;rT&N~Tgs2-Sc_F`ywDJ%3tkCGgA87v~$;S-N)Zu=&d2ri*bc3 z{Ef7lv4q&zFY0{d(8|isV4dhYage$iEP>wUsR9<@HlZKYz=WpeH>e`)PxI zoK-#q*^clNuJGj%mMaNw|A{~Agir5D;^*qVRR3}mIPZ(3&kA49F2FdCOn4GrpiMs@ z2mf>o{_gy*#`$gtqMBbeM+Cb6LQGWCE!O1<-4-$g{%2tBOJM#&Uye}d$?o>DujeOl zd=hz;hK{4VH!ckDn`%fF7x`-Mui6L;%%5N*6og8GVG@PLfmsGLmdiK7-FJw|+5(@) zF@LOAnnt1kX*vgZv*;hKN5OZuiK`Ie?)+8%rr_&M-;3MY8d!V#`D5NZ!rFojMyl`b zjvEjZD#3s;28qR@AS4!@29q!bPLNPOokC&q5GohJx`y_>_z$WrguE3Zs{_^D(;OG_ zfch^^WWb;jFoVlSNf-}-0Xc#ov1k~LL?BccMPMe3^Z30DeWUD$hUWUZgD8Y~eshm# zEI4Qk<Tg$^Ce6Lz%%~K{Oi{Gy_mRq zL$W9$d%FKWFn}Mn^8XG$L1$tx17VQ}K1?HV`7|1dMFCNQ#pR(W!sk(#EV$Ra|4Z?I z^;(`A<}Dy_Ho131y%+vhS?oW>zu%ZJKZ)=E|K?1e8LfNreINdML+X#=((r5eHy3&e zeQkv}!KNCLe|Gt+(|jWZQk?U;Gn{NcyP0Mh)|TcB7-cX>h(4G{U)6kb-%s`QE*7R> z@e{>#zwd)bS4=m<1m9m3LF)-M@C=rj8A_*G(x@oQ%p5jF%uE?{2AyJRiZYNHtbdD1 zzgQC~JRU|M2-xj1Scqs%#7SHV_~0=J3XD=|EDFl|P1P`k;4cq<;YfMwl3b4+GUa z7OzJ&4E79s8l8r)s4y30Fn?1uLU1W8J{J)IVfHN$DwE2j@KKaRFnIi)Uh@ET9t|Z} zVCTU=5bkgGnuZ}bg^z*#7!4tMRP(6_2{6KNghC@Il;1TY9T<(pKqw@F36`lY=VSFz zubDU%xCV>?)w~|(;}U=mkI7Q>#wx(`(&2u{#2x@gMu zux9nqltFPGK~NY7@N1%H%Jh|opaf3kbAeXi7rim0kIaanIFpV8yD_=6uAmAg4@~8e zP=ZbnEGmP-;DIIRx55(-rqSsv1`lK>sJ%fIVbDlmlHvrFfl>)7@w=+|EG~_UQbj=( zoLxjqL0<(`oXW$vRGdd*Vf>z;iqUu&IP6go1c7-JV1nQ5H3)4e1`~YXA$ZRM)>j^a zV<2*(OcWT8=mEmzf+AQG!I>1HGf?L5t}-~6$Hj4Q-0k}Xi~#3a76a>I-P7y7Vok7U z2$jZXk|+e2?Og}xz6wtS%EM?l2-PT!PU+iKhQO#S1O^LO-!HoaMsRT+n2o^sdVAeR z3mAdZa0FxVMN_7)%}7uYm`ej5!l(C484P10B#aKCI16X-Vfc5qlLVjD9r+l*SGvvE zS9?B!PcY~x4I@#RSkD#*EQ=Hp%EC}O*#58x4CF0-E2#1j7@@Mjl%X+zExRHg$l3t( zdb5h#gE=Yx1f0q2naaMTc23btDq z3j@b7DxJXxN+#To!{#LQt@6r12Rb)*&<|34~H`;K0En2Ke7kTH;Fi6c`+&z(EMb zz*MH;Aa}}zsW^#ArNJP8fHwcbY2^o{C`tguI5_j*VE7o!BVkMiPJ(edfr-@eng71W z=*@_7xfCuB2PsgD4{VLoX?(Do<$`I;;8J+NI0Or(|Le5vRmP{oI7$OHLAWf8M8`zQ zEd+!|2EyRs6mVc;qUe8DhJk!D!h=Z+AO^Z83W!VqkWZzE@?;3`s$cBVx|{g^wEk@_ zK+;*?5a${2g}z>xKil046A)w{Z-F8C>&0)92ckz21|UleGM89ab{6b5ez+!nzmq82 z>$#%qew0B0e`Hwn*(3UGwYaFWWYKS{#YMkLI(WPLv%%4-tD|CFEQxK$k>BN zdjuN{P5hGh-SgZ72~Q^rcaY=v6XmL51guhBLgF<)m300piGm#bSHW*8dIY=e`^^)$ zuB=S=Rq%WdJX$1wdA9gN!sbhgyf1%z9Z_Fu71JecL=1@Jq7;{8K4P^}Tw*{Z7p1r) z^AW3+;t~TQxhTaYnU7el6qgtf$wetH$$Z3WrMSd^NG?ioN#-L~E5#)SL~>DzOEMp^ zS}86uAd-txT$1^S)k<-R0g+sk;*!iqtX7Ik42a~S6qjT^Vzp9SVn8GprMM*X5v!Hr z5(6T+D8(h2k65h~mlzPqMJX=He8g&{xWs@+E=qAp<|9@s#U%zra#4y)G9R&8DK0S} zl8aJYlKF_$N^yw+kzADGlFUb}R*Fjuh~%Oamt;O-wNhMSKqMEXxFquttCivs10uO7 z#U+`KSgjP77!b)tiMW)$zO9S!2CwJ}0Po^@IHkx7yvIv}XJuy#K|zzj>t;7VP-`dn zehon@C=m3<6@m=*K+s6xpG)&+K#&~Y+QO6*_~@Vb`EK`CjxEfdIskQy8hrVqu8oTh ziO97o3_IX40l#AAO)-t!{QgL$U)DCX@ZIH8?BV&lOquB`*%{9le4?aHUoc-TbwIeM z@`cTT3Ucxv=B$07In5|9{2$XlpPsYU@AT+6Qnn^r)vnIBwQc7ba`WuE;0oPC?zxfU zZ$!o%%-4c6?%&(CJKC6YtfsEB)j8jQB`?)BN19v}9d)dwtdhdwZ3AZw*dAJT~;K%y7#FBB#Aj-wIWj zrrc5>hI{Nl2xYxwYNIk$HM%V;+_4r*l|JfM)Q zwc4l7wkWLqJf|O&`nD|TtpUej(;;{ME%g)bv8$H7(M_p(JklX4Hd$8Fre z^J`j98!7wiJ=;~w6kQU`eLt{4-9io<71rLI?-xGpC8QczIBmD0OBfb7W*)U%1b{HZ8gQ)A3t_A>~oWWEO8VNiT_tVvc3vz>R1P$9Z=gG*I)5mDU&xt!|r&wECyD~qfs2YMcnO*jKcKrBpXkLTC6^iQC zeDIQ;=N{TSCXCO%?PXd0u2Jp6;`QgRxnw=cxwdpd@P@L10zMydEnURfzhR28VU}PB zi^Ynd3W_;5CNvkAO$)plUD8a;xp8CA_OU3pWc7sX5Zk7Mw^l-}jjgG2SF3$TjU9V7 zUIA)~>o9FJ8G23jnnRIxiFTA>qW|LP!;4z=_ugtz_x!y0M89Lp5FIt80sD0KwE47b zca&*eGyb66$>dn>saLC=8?RI{L$;h9L!3XKk>PyZ^_ogTg-*W`{+X=Zr8LsJc$2KL zS?>a5&gmXr{k%&42GjO#+28K5D4XrQES8^2#JFfTR=;!ZKVuOMI?=Cf>iEd=CVvC3 z1q-LRMUlfRbPRSRBqXd@q1Sr3Q7!uqO=wYkx?Qkv)s`)7&sxpolAQY6(I89Nc|9Kv z^+U6UaLDZqRkP2lXxvHE_o%$4vb(+<8nLKsMcL|`py&4y)B66P$+heHJHdM9?U@S> zy6PnhJk5_CQM__t@7+XfR77EAYP!MQ*Jr0rPjo%duvXnQ5FY`iRPGkH){kz9Yv1TZ zx>^6RWY_72YScvKWuc9>Z1CR4X}ZP{N+%U;{#cS<)!?|iAv|#`b^S6$og|qu$J}hi zv!Cu7w>ON}Pnf=q8J<<3Ele+coT%?o8?=d2YrN7_H~VqO5={rBWr?-h62)buEjQ#N zSc$FBkQ(X)jTdWP%3AC#SrZb`6r-ZrP%B`Yu@dSs%7#p5M~mx*{*YAnb;GQlOeisZ;;c#y~UlAaTOxHBj=p(els{ zj_96TaL@KampsUO+P(y%RywrRWJIV(z=2`bo{v#et1mX5c9 z^Wg~^8`nVTvnoD~Y%KkB*V0zw(f;B!A#c`XH_ME%eA>F8K4W3@=F-H$IfFjg%zHXv z=^u$!lWbzzTR-H;t9r7blaCX@>mXmBZ{+CaceEK)o>8cBfbx$*iKW4(oZhz)%h-tl zYcILkKI7DGdFPnLj;N?A9ad4_p+cXKb9|*w%H*p8HUvm$EMEhWm2g_w)5%-}U~bs$J(g0H>(#ECva zkucat7@+TLZ?7K^B&2-jkq{JmFJ+Rq`=lBz%Z7&^?8dH$+B8<^rm3XwX16*@BW|dv zfwKCT6$U%YHC^-ij2hKl=W^-_`E~1})@Zt#^;)HJSFzGy*SeV9D^^|o`efnmxwlU@ zJTGcFcE_rEe|^f)62)AlUR#_PuB@nD`|Jkyc^p%4;nI^zbDL-t;{Zrq=_p|k+-xKV zHAYxij4;eqJPXN%-sq_W<+>#2!h@E#s=c&JoGur&R4!K(#~rH_r2*N5ud~|&*^HKp zO4&Me5|r8dd| zATJowpvGRnpu02(cJ`#4phL%@++y{fM zenggfwJ9K#c*G*d7#kHmO^Ft$=;>)b*reE5dxQoX?}jJYnCFKj4nU)sYLDx$K~QR( zCg^Q_b7-+@R&gLr!^lRb}PfF&FHn;a5Euw|M8z%JpoX_c_9% zso~?}vrmnq(HYT>-5Ve0U;8jFZBWTZ<)!@l&(}LP9q-xNqy3AZxpJnj@s^<9~CsZv1 z)V|TX}tBv)qtk7^Z92>`SLflrl z>w7rq)>#I1!%Qfts)z>q9)b6dfvM+#hU-VaGT$l%&UpjAhm}{mSFDN{0xW8BCrGbYg@0UNd z@}r>Sa7g#Q(W7#e+1*3z^zp&APF~}@#@}_?t3Sw?+2@`zM_GQUYyL39_`PHQ9(uCR z=L`M$D6-tk$;{|>-}U|I>I+xcU*H(`U1^UF%h}M)`S4%vWqr#=m-)LH)tK!|W;zWt ziobG?n0rJK+hnFc;&Ndmq;Nsdfi;X1g79UB0&;bAA$56r<%lHtoQ!%{K=6X!|ty9(*A>+2_IL z!Q&IIdzKZ}IKD`DA^#zySMOz-F$F8UO$H?QSM2XSAf*4nt>g9#xUqUbfji7WUTv*T zR7(_kc$sFKF4Bywl?dYT5XxJZzpEY7{l;9>Q=vrvQ~VyHL!7;XuNW@NqRzk z#HxoHZ-+k}uCs?ZE(al}&&}A9u*ECWDbqF6@zoi2)|>Q{J!eLpn({ST)wW>Fu<64b zz1J7_NU5GwKIuWaO1hSdCGTUFdB)r{ot>u~LeBZ8*KXZ@c4pM}al-V6VP~qp3|dTY zc5n9klK#=LmzToPUd9R)y^8x=Tx10bEp+Jx74Kc`XPmdOPs2Ck2~U>B<&;|NzBPL7 zXtg!Im!>~6e&%<{@6zs}3PTNsj&*tIQk&%FlCx*{o{{55jw>j-RDyQz5Qk#9+KXxiMCC$rY>WrhK52PFza{JVQQ|W!u zbH>My&)k07`~0Ez*;lgn9UpM0>aIdXR<>XEV%(dr?S1@W*7@4_Gx3X0E?(Pgsn~mY zxoW2FRNaW+zk@V*lX(x5inrBTFTVI;OAX!It3K<_T8j$vT%FTs~7dM)Wao#*^@}k15GVlk?x~tvFcAuJx^5et*X`=8oap zr!a!ApTBJX*tM$Ey629~@Z3lHBPQ5Si1t2KZA2H)<2(=CIdnWNB%=X;t8MkkDrms8v#xP+k6%7sIN`i-`>fbU_K`-dL~D3!DU=>HM9y1&WwdSdv~FJ;!xtHx zTW8IyAU_=`e`C8QHOE%dcKwnAORDk?82DU%z2SgCL-p3;xME+`*ohG@ZeLf#pW~~~ zNAwyNyFAu&nf1DW63#d)M-E>cwm3XY_C_XP2WewirdAo|b1d$0PBKqg zUoxkrT)X9!;^jPV>>$kCG>h#&@9d+dH}%V(rabNWY@zm6`sEn`VLOZSKg6bM?KAId z#@k{uZpC=+rgygLrhB#445{lEGGv`fSiWw)w;{chUAp3~{dCj8&-Q-l{hV4*xSxzY z(sI#%^>O;(&5Bp%9^J6N#}t}Mw%wi=?o&wY1^l%Zplb^o}lXAyZqkYy&p~f`_0Es zqbleLMJ5%eVzTXXcAv92ahgoOQd~6B+Wjy05AI*w*|lX4j^TG2{Yz_g7M}jZe0{58 z+UbU7t1D+KJmfrFZc(?$ug+hOHdtq^%&2MH^3`v~f$@HUZwlng{`QDhj;aNEXIoO?*l z_fquIq9y*ugo0DsP9gNUGE&BcYM%0q_L9ymSW^sEmyZ*0r$A1uFRJ+0;b-M9B6=j4W@)|cLQY*2`e zDQSuOxL(b^$NI$eh0A&`d$pZwg<(&vgPLoa((Ox#lA+tRTXwY+W@&5DBN}hLx>H=b zwRC4fT|)dhzeQ=yFLPfFI9PEh|I*;IS3()c%ny^lzR3%@AENtq_an6lm5cNvOrytcn~=$e7w6Le69c^46UtHEJAs} zfFCKs^+WyU`3LhtEe+f3^1yHLWxAn$+byEGmWHUaDZTB(3v7C{8Xb8{HoQ5`5*8v2Mt0X#ZA zBqYQ^AcF-#z5ya%p})S^F3uOu z7g-t_iYxl|*U>M(fNvG~2Y0Xo6zQRO039)h>Az8Oagna(=l4s^V9}@rpd}qW`(=f} z?qLBW-Hi+u&JPlhqZW|qr)!JO4eS|E4|MBdDNL(Zgau*8cS+#rF_wy4t zK8d|b-^A0`pAd!w54WI8s(c^s@772MTtr%-Fv_4I2n}YsBU~PnJM{PkGL-cs0`yX z5hlWgX*kT_(hv@l4SrDw4P%igMew-@o6qj7;umKAQI(T#Fz}tQAAAaUR$H8zLlg;a`tu;ZPMQ>2MZ}t2p&Y*dIQh+FY~Y6>d$JD<}K*rh&<2t ze_#ND@df{H_(>KAN7yKrMp6iq#;2G}8W#ppg3A|R7)l9X4j1Vh-v6cezk98~2lw|T z2`hSMk2){>ZyK@x7XSWu!u%B9|NqUIE*rG=$@g>k>kO&?43`$)!@s?7o-oKoNRU=w zIr-J)?@sfB7D#bUY|n671-m)g={t|IXCoM!O+(GWJo;|thx>kMr*pBe1&g0JrU(BV zJlbNq9q#?}RWY=VP=k!-+Sy?&#waEO9nJl>nDm=95f%t= z5=Fsom(6Wk6A2n0CJ9g^VFY6^xiBX9L(>RM@;NLDr?E*EOT63?G+e;q&@i0A5@1XL zO5)5vHI3jDu*|0s1cTphn#)IkeFA6jVFp`(vcTX-57NH@f}k9nO(DRvfGg-QjZhek zVzQVhmx1sxHs=pbqa+{ZQhZblgwwS^7#s!%rZ9{~vISH}s|A3%fQgY@u=8M}DE|*z z&BRdxrf`ymF;TL^G{rz^fDsOMO-vGo|8y8xV9>a16sD0JuuQdi2)Bz`%^?`TH4q$_ z7IZitp9Fja94-e(Q3_`u=pO>%GQs@kaKS_&`JF&Wu)^{=1gH>YU=-_5S#t@LL!x|~ z1`|}mI)WXv1)Xq=1JI9Sc}jc?f}n$cb?<8itS^ zK=^!61ZyILkD@F##`)7#hTseM1OcP}0}B`l&b3@N-p0D4)m_D!J_~ z9!8RZB77$B5Q^0?WpJE>(r^}t;#`7DA;_O@CrOIi9{Je7SK5cMtM+^(MY35K6Q?ma zc*hn8EQ>J672y~QY=5{U4)PX%6jUh`K^a^yWteO*mhC%L7%aeC3MN?$h5+U8|JXDO z1uHjLz(4~#;&qp`nnkg>T%0LhW!jt%Y|*-Cm7#C}ieg|x4fY}89HTf>_J6$(@%9DT z&-NT#+fM{+&2d=VRElELn0zpHd;y8k_$&&1F|cMi~N%5N~z}?!Wtkq*07O za6XsKp`jSqHZmzTh;=BFLj$1{95@K@hynTcla{1W3P!*|3LJzm986^2s2&nTvoL2r}6vIehm;h%U0(2io1T>t(CTIx3B5|=;m(-_4<2#g8F1m$ya8VeUEw@?rs*(h5;z~I2f z!La{s4ClfqDnMv#paz;J4u~88kYd2%JQ)hS>NmTz_9}ipt^b${kapI$AOt*0803eG ztbF}&Z;~G1?`=W>KdwpM?JR(u*=&()mb8Ww<1ONH5B8N#`RW zmEn>ABE2ZXC7q9iREA3ei1eZimvlZ7QW-7@AkvF6T+;bSNM*PrfJiUOa7pJQA(i2h z03y98!zG=Mgj9x00*LgY43~615>gp12_VvoGF;O6NJwS4B!EaS%5X{NBO#UHk^myT zD8nV4kAzf)O9F`Wq70XGJ`z$HE(svgi!xl&`AA4*xFmo`FUoL9=OZDN;gSF%y(krz z%J;W*k^bNnT_NCIT%q=^&%t}V^aW0CE)Wzx1iWrG27*4fg6|p#nh!(J%h?db+X_M2 z!i}>oj)ouwCuav+_t1N%Gd(zG7^D^;@%=E&`F+qZ7* zgYxpjy9U7?Er-sky{hix!H<0RHWKNHH^<~ZblrV^@wIXHV~5m2p{w)LqtSZCLS-f4lk@7NQ<|Hd4n zP4jOGDzdp;Ztm*)M&qm&4Ly_kwfe2eYh44-uDQ394iC^z8P8FEmu}rMC$qlr1|45H za&JqsR_qxgjn$(HiE2(!&_c%(^IuKgeZT(no+Azjo~RLJ-MD#74=CwGjNd!&g39qn z4zw;zl7nV1SfEun?I3a{qSq{Vw9fJ(lmc@&iY4`rPnwtAdYLZtKBjVK zz8oYF2)G!wva(@)w|QErdTJl*`dO5@2==6>yP9Y`=BiQ@^{%CPp&6b2>`MGFu7$-K z<{S^r*&1?>Qvt`{njRbIENP$6zJ+ieEsAH`S1=-&csC`jcL=SjY-*1San%X zuJ!rzJ!wt-)Q#0wyt8IViWO z$%4&hC#}=dTl2{;d1F&)eTYVGZLPVMwzf`zqMmg@QHb~AS5Tc}30*Vl)yb_pb_h-S zKo1{SI6MzjNGy0$k(!t=fS5`Bb*C(L)2#d(oR+x@TFX45^jwni-@gy^(HN*u*RbAN zq&e~6oxlauf{fB~UE|2sMqyO{IcpqtK7IfGz0<(45%o<*yvj5;=Y3gz6_-XvHwTXspMQfcyc6Jk?l2WmUgz^>X|P^UmaU~8V7V&#Y~{AZa3A}7w8l$ zvZ9-32nJTJUpDLO+SG*&wKFpKSA<(0xw-U`)AyJ;!u`0#d|Ob{)NcCyyZ6PB(XC zE5%$8-q+99YYNISD?<0(dF3=T9@0OVsO;`PGj`S;<0rg2`_gUpucp`>m~3yR6;mCy zv!-O`y?$q-^OC$`GHjQsMp_I`@Sp#@KFl@qmSJ+lL8Eh9pz#wXq_NE&4Agj$Uw?Y2 z&X(J#p6Z|^_e2dFcZD7rkE`q|^dM-vb>!eLpRZmWKsvijF(~`3Dw=ui)tD;GWuFcx;0c^U!#`WwCIa`R15S$5r&>u z-_WzkG5=hnX7fS$gJS=nh%fTJut?96ZYSmH>*)!zKAG8^?5DZQ^m(zDlo@yE0W~*P;KNLcKR4F!{uF#1) z@M26ZP!QQfLPwiEC|-XJT5?@)_K9Y>r|(ZN3up<2h;?Kx7}y|9n*hz!{%>|{+a_AX zI5zX(*pfSImGgJa&~3S0?{Yex zHkQQ5tx;7d)|+kf_T0f1i02B6JKAFPE_m36k(Sj&kSB}c_Cl5`$5-XY6w_LBbtcUL^U literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/fax_machine.rsi/meta.json b/Resources/Textures/Structures/Machines/fax_machine.rsi/meta.json index 1a8856301d..00681ca6da 100644 --- a/Resources/Textures/Structures/Machines/fax_machine.rsi/meta.json +++ b/Resources/Textures/Structures/Machines/fax_machine.rsi/meta.json @@ -40,6 +40,63 @@ ] ] }, + { + "name": "inserting_hamster", + "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 + ] + ] + }, + { + "name": "inserting_mothroach", + "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 + ] + ] + }, + { + "name": "inserting_mouse", + "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 + ] + ] + }, { "name": "printing", "delays": [ From c56f98f99fe19d8413b533ad6ecd5c0bdf781200 Mon Sep 17 00:00:00 2001 From: PJBot Date: Sat, 27 Apr 2024 13:52:03 +0000 Subject: [PATCH 019/110] Automatic changelog update --- Resources/Changelog/Changelog.yml | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 484241fd5c..c5c4b3dbea 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: Killerqu00 - changes: - - message: EVA and paramedic suits now play sound when putting helmet on. - type: Fix - id: 5962 - time: '2024-02-17T22:34:39.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/25349 - author: musicmanvr changes: - message: Toned down the newton cradle and added it to the bureaucracy crate for @@ -3855,3 +3848,11 @@ id: 6461 time: '2024-04-27T13:27:18.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/25913 +- author: brainfood1183 + changes: + - message: Centcom advises all crewmembers to please stop putting rodents in the + fax machines (rodents can now be inserted into fax machine). + type: Add + id: 6462 + time: '2024-04-27T13:50:57.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/21461 From 974129689c029fd39a055b63a65df12de4923f65 Mon Sep 17 00:00:00 2001 From: MilenVolf <63782763+MilenVolf@users.noreply.github.com> Date: Sat, 27 Apr 2024 16:53:16 +0300 Subject: [PATCH 020/110] Glass box fixes + Construction & Stealthy deconstruction (#25365) * Showcase update * Fix craft prototype. Add glass box deconstruction for stealth gameplay * Remove duplicated tag * Forgor * Some cleanup --------- Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> --- Resources/Audio/Machines/warning_buzzer.ogg | Bin 29891 -> 57798 bytes .../Objects/Devices/Electronics/triggers.yml | 17 +- .../Entities/Structures/Storage/glass_box.yml | 254 ++++++++++++------ .../Graphs/structures/glassbox.yml | 160 +++++++++++ .../Recipes/Construction/storage.yml | 18 ++ Resources/Prototypes/tags.yml | 3 + .../Storage/glassbox.rsi/DamageOverlay_12.png | Bin 1294 -> 512 bytes .../Storage/glassbox.rsi/DamageOverlay_4.png | Bin 733 -> 311 bytes .../Storage/glassbox.rsi/DamageOverlay_8.png | Bin 1116 -> 423 bytes .../{glassbox-empty-open.png => base.png} | Bin .../{glass-4.png => glass-broken.png} | Bin .../glassbox.rsi/glassbox-filled-closed.png | Bin 901 -> 0 bytes .../glassbox.rsi/glassbox-filled-open.png | Bin 796 -> 0 bytes .../Storage/glassbox.rsi/glassbox.png | Bin 313 -> 0 bytes .../Structures/Storage/glassbox.rsi/icon.png | Bin 0 -> 459 bytes .../Structures/Storage/glassbox.rsi/meta.json | 50 ++-- Resources/migration.yml | 3 + 17 files changed, 390 insertions(+), 115 deletions(-) create mode 100644 Resources/Prototypes/Recipes/Construction/Graphs/structures/glassbox.yml rename Resources/Textures/Structures/Storage/glassbox.rsi/{glassbox-empty-open.png => base.png} (100%) rename Resources/Textures/Structures/Storage/glassbox.rsi/{glass-4.png => glass-broken.png} (100%) delete mode 100644 Resources/Textures/Structures/Storage/glassbox.rsi/glassbox-filled-closed.png delete mode 100644 Resources/Textures/Structures/Storage/glassbox.rsi/glassbox-filled-open.png delete mode 100644 Resources/Textures/Structures/Storage/glassbox.rsi/glassbox.png create mode 100644 Resources/Textures/Structures/Storage/glassbox.rsi/icon.png diff --git a/Resources/Audio/Machines/warning_buzzer.ogg b/Resources/Audio/Machines/warning_buzzer.ogg index 55bb179f57d479b1ef3b2bd06d33b6bd76a87666..bef16f46fb9f4b8ee64a11236b2fe4af7241d1a7 100644 GIT binary patch literal 57798 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 delta 28660 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 diff --git a/Resources/Prototypes/Entities/Objects/Devices/Electronics/triggers.yml b/Resources/Prototypes/Entities/Objects/Devices/Electronics/triggers.yml index 43ed20c694..2cb9b5233d 100644 --- a/Resources/Prototypes/Entities/Objects/Devices/Electronics/triggers.yml +++ b/Resources/Prototypes/Entities/Objects/Devices/Electronics/triggers.yml @@ -18,6 +18,8 @@ state: timer - type: Item size: Small + - type: StaticPrice + price: 40 - type: PayloadTrigger components: - type: OnUseTimerTrigger @@ -28,8 +30,6 @@ path: /Audio/Machines/Nuke/general_beep.ogg params: volume: -2 - - type: StaticPrice - price: 40 - type: entity parent: TimerTrigger @@ -40,6 +40,11 @@ - type: Sprite sprite: Objects/Devices/signaltrigger.rsi state: signaltrigger + - type: StaticPrice + price: 40 + - type: Tag + tags: + - SignalTrigger - type: PayloadTrigger components: - type: TriggerOnSignal @@ -49,8 +54,6 @@ - type: WirelessNetworkConnection range: 200 - type: DeviceLinkSink - - type: StaticPrice - price: 40 - type: entity parent: BaseItem @@ -61,11 +64,11 @@ - type: Sprite sprite: Objects/Devices/voice.rsi state: voice - - type: PayloadTrigger - components: - - type: TriggerOnVoice - type: StaticPrice price: 40 - type: Tag tags: - VoiceTrigger + - type: PayloadTrigger + components: + - type: TriggerOnVoice diff --git a/Resources/Prototypes/Entities/Structures/Storage/glass_box.yml b/Resources/Prototypes/Entities/Structures/Storage/glass_box.yml index bdb02d2bc3..8177b6b6f0 100644 --- a/Resources/Prototypes/Entities/Structures/Storage/glass_box.yml +++ b/Resources/Prototypes/Entities/Structures/Storage/glass_box.yml @@ -1,15 +1,81 @@ - type: entity - id: GlassBoxLaser - name: glass box - description: A sturdy showcase for an expensive exhibit. + id: BaseGlassBox parent: BaseStructureDynamic + abstract: true placement: mode: SnapgridCenter components: - - type: Anchorable - delay: 4 - type: Transform anchored: true + - type: Physics + bodyType: Static + - type: Clickable + - type: InteractionOutline + - type: Fixtures + fixtures: + fix1: + shape: + !type:PhysShapeAabb + bounds: "-0.45,-0.45,0.45,0.45" + density: 1000 + mask: + - MachineMask + layer: + - MidImpassable + - LowImpassable + - type: ItemSlots + - type: ContainerContainer + containers: + ItemCabinet: !type:ContainerSlot + - type: Anchorable + delay: 4 + - type: Appearance + +- type: entity + id: GlassBox + name: glass box + description: A sturdy showcase for an expensive exhibit. + parent: BaseGlassBox + abstract: true # TODO: Temporarily abstract. Remove it after item scaling in cabinets is implemented. + components: + - type: Sprite + noRot: true + sprite: Structures/Storage/glassbox.rsi + layers: + - state: base + - state: caplaser # TODO: Remove it after item scaling in cabinets is implemented. + map: ["enum.ItemCabinetVisualLayers.ContainsItem"] + visible: true + - state: glass + map: ["enum.ItemCabinetVisualLayers.Door"] + - state: locked + shader: unshaded + map: ["enum.LockVisualLayers.Lock"] + - type: Fixtures + fixtures: + fix1: + shape: + !type:PhysShapeAabb + bounds: "-0.45,-0.45,0.45,0.45" + density: 1000 + mask: + - MachineMask + layer: + - LowImpassable + - MidImpassable + - BulletImpassable + - type: AccessReader + - type: Repairable + fuelCost: 15 + doAfterDelay: 5 + - type: Lock + - type: LockVisuals + - type: DamageVisuals + thresholds: [4, 8, 12] # TODO: Fix damage visuals on open state. + damageDivisor: 7.555 + trackAllDamage: true + damageOverlay: + sprite: Structures/Storage/glassbox.rsi - type: Damageable damageContainer: Inorganic damageModifierSet: Glass @@ -17,19 +83,41 @@ soundGroups: Brute: collection: GlassSmash - - type: Physics - bodyType: Static - - type: Clickable - - type: InteractionOutline - - type: Sprite - sprite: Structures/Storage/glassbox.rsi - layers: - - state: glassbox - - state: caplaser - map: ["enum.ItemCabinetVisualLayers.ContainsItem"] - visible: true - - state: glass - map: ["enum.ItemCabinetVisualLayers.Door"] + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 150 + behaviors: + - !type:EmptyAllContainersBehaviour + - !type:PlaySoundBehavior + sound: + collection: WindowShatter + - !type:PlaySoundBehavior + sound: + path: /Audio/Machines/warning_buzzer.ogg + params: + volume: 10 + - !type:SpawnEntitiesBehavior + spawn: + ShardGlassReinforced: + min: 1 + max: 2 + - !type:ChangeConstructionNodeBehavior + node: brokenGlassBox + - !type:DoActsBehavior + acts: [ "Destruction" ] + +- type: entity + id: GlassBoxLaser + parent: GlassBox + suffix: AntiqueLaser + components: + - type: AccessReader + access: [["Captain"]] + - type: Construction + graph: GlassBox + node: glassBox - type: ItemCabinet cabinetSlot: ejectOnInteract: true @@ -40,58 +128,21 @@ path: /Audio/Machines/machine_switch.ogg openState: glass-up closedState: glass - - type: Lock - - type: AccessReader - access: [["Captain"]] - - type: ItemSlots - - type: ContainerContainer - containers: - ItemCabinet: !type:ContainerSlot - - type: Repairable - - type: Appearance - - type: DamageVisuals - thresholds: [4, 8, 12] - damageDivisor: 7.555 - trackAllDamage: true - damageOverlay: - sprite: Structures/Storage/glassbox.rsi - - type: Destructible - thresholds: - - trigger: - !type:DamageTrigger - damage: 150 - behaviors: - - !type:EmptyAllContainersBehaviour - - !type:PlaySoundBehavior - sound: - collection: WindowShatter - - !type:SpawnEntitiesBehavior - spawn: - ShardGlassReinforced: - min: 1 - max: 1 - GlassBoxLaserBroken: - min: 1 - max: 1 - - !type:DoActsBehavior - acts: [ "Destruction" ] - type: entity id: GlassBoxLaserOpen parent: GlassBoxLaser - suffix: Open + suffix: AntiqueLaser, Open components: + - type: Lock + locked: false - type: ItemCabinet opened: true - doorSound: - path: /Audio/Machines/machine_switch.ogg - openState: glass-up - closedState: glass - type: entity id: GlassBoxLaserFilled parent: GlassBoxLaser - suffix: Filled + suffix: AntiqueLaser, Filled components: - type: ItemCabinet cabinetSlot: @@ -100,40 +151,83 @@ whitelist: tags: - WeaponAntiqueLaser - doorSound: - path: /Audio/Machines/machine_switch.ogg - openState: glass-up - closedState: glass - type: entity id: GlassBoxLaserFilledOpen parent: GlassBoxLaserFilled - suffix: Filled, Open + suffix: AntiqueLaser, Filled, Open components: + - type: Lock + locked: false - type: ItemCabinet opened: true - doorSound: - path: /Audio/Machines/machine_switch.ogg - openState: glass-up - closedState: glass - type: entity - id: GlassBoxLaserBroken + id: GlassBoxFrame + name: glass box frame + description: A glassless sturdy showcase for an expensive exhibit. + parent: BaseGlassBox + suffix: Frame + components: + - type: Sprite + noRot: true + sprite: Structures/Storage/glassbox.rsi + layers: + - state: base + - type: Construction + graph: GlassBox + node: boxMissingWires + - type: Climbable + - type: Damageable + damageModifierSet: Wood + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 100 + behaviors: + - !type:PlaySoundBehavior + sound: + collection: WoodDestroy + - !type:SpawnEntitiesBehavior + spawn: + MaterialWoodPlank1: + min: 2 + max: 5 + - !type:DoActsBehavior + acts: ["Destruction"] + +- type: entity + id: GlassBoxBroken name: broken glass box description: A broken showcase for a stolen expensive exhibit. - parent: BaseStructureDynamic + parent: GlassBoxFrame suffix: Broken - placement: - mode: SnapgridCenter components: - - type: Transform - anchored: true - - type: Physics - bodyType: Static - type: Sprite sprite: Structures/Storage/glassbox.rsi layers: - - state: glassbox - - state: glass-4 - - type: Clickable - - type: InteractionOutline + - state: base + - state: glass-broken + - type: Construction + graph: GlassBox + node: brokenGlassBox + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 100 + behaviors: + - !type:PlaySoundBehavior + sound: + collection: WoodDestroy + - !type:SpawnEntitiesBehavior + spawn: + ShardGlassReinforced: + min: 1 + max: 1 + MaterialWoodPlank1: + min: 2 + max: 5 + - !type:DoActsBehavior + acts: ["Destruction"] diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/structures/glassbox.yml b/Resources/Prototypes/Recipes/Construction/Graphs/structures/glassbox.yml new file mode 100644 index 0000000000..081f22ea8d --- /dev/null +++ b/Resources/Prototypes/Recipes/Construction/Graphs/structures/glassbox.yml @@ -0,0 +1,160 @@ +- type: constructionGraph + id: GlassBox + start: start + graph: + - node: start + actions: + - !type:DeleteEntity + edges: + - to: boxMissingWires + completed: + - !type:SetAnchor + value: false + steps: + - material: WoodPlank + amount: 10 + doAfter: 5 + + - node: boxMissingWires + entity: GlassBoxFrame + edges: + - to: boxMissingTrigger + conditions: + - !type:EntityAnchored + steps: + - material: Cable + amount: 2 + doAfter: 0.5 + + - to: start + steps: + - tool: Prying + doAfter: 5 + completed: + - !type:SpawnPrototype + prototype: MaterialWoodPlank1 + amount: 10 + + - node: boxMissingTrigger + edges: + - to: boxTriggerUnsecured + conditions: + - !type:EntityAnchored + steps: + - tag: SignalTrigger + name: a Signal Trigger + icon: + sprite: Objects/Devices/signaltrigger.rsi + state: signaltrigger + doAfter: 0.5 + + - to: boxMissingWires + conditions: + - !type:EntityAnchored + steps: + - tool: Cutting + doAfter: 0.25 + completed: + - !type:SpawnPrototype + prototype: CableApcStack1 + amount: 2 + + - node: boxTriggerUnsecured + edges: + - to: boxMissingRGlass + conditions: + - !type:EntityAnchored + steps: + - tool: Screwing + doAfter: 0.5 + + - to: boxMissingTrigger + conditions: + - !type:EntityAnchored + steps: + - tool: Prying + doAfter: 0.5 + completed: + - !type:SpawnPrototype + prototype: SignalTrigger + amount: 1 + + - node: boxMissingRGlass + edges: + - to: boxRGlassUnsecured + conditions: + - !type:EntityAnchored + steps: + - material: ReinforcedGlass + amount: 5 + doAfter: 2.5 + + - to: boxTriggerUnsecured + conditions: + - !type:EntityAnchored + steps: + - tool: Screwing + doAfter: 0.5 + + - node: boxRGlassUnsecured + edges: + - to: glassBox + conditions: + - !type:EntityAnchored + steps: + - tool: Screwing + doAfter: 0.5 + + - to: boxMissingRGlass + conditions: + - !type:EntityAnchored + steps: + - tool: Prying + doAfter: 2 + completed: + - !type:SpawnPrototype + prototype: SheetRGlass1 + amount: 5 + + - node: brokenGlassBox + entity: GlassBoxBroken + edges: + - to: boxMissingWires + steps: + - tool: Prying + doAfter: 2 + completed: + - !type:SpawnPrototype + prototype: ShardGlassReinforced + amount: 1 + + - node: glassBox + entity: GlassBoxLaser + edges: + - to: boxMissingWires + steps: + - tool: Screwing + doAfter: 4 + - tool: Pulsing + doAfter: 2 + - tool: Cutting + doAfter: 2 + - tool: Screwing + doAfter: 2 + - tool: Welding + doAfter: 10 + - tool: Anchoring + doAfter: 2 + - tool: Prying + doAfter: 2 + completed: + - !type:EmptyAllContainers + - !type:SpawnPrototype + prototype: CableApcStack1 + amount: 2 + - !type:SpawnPrototype + prototype: SignalTrigger + amount: 1 + - !type:SpawnPrototype + prototype: SheetRGlass1 + amount: 5 diff --git a/Resources/Prototypes/Recipes/Construction/storage.yml b/Resources/Prototypes/Recipes/Construction/storage.yml index 41abf881b6..c8edebc509 100644 --- a/Resources/Prototypes/Recipes/Construction/storage.yml +++ b/Resources/Prototypes/Recipes/Construction/storage.yml @@ -49,3 +49,21 @@ canBuildInImpassable: false conditions: - !type:TileNotBlocked + +# ItemCabinets +- type: construction + id: ShowCase + name: showcase + description: A sturdy showcase for an expensive exhibit. + graph: GlassBox + startNode: start + targetNode: glassBox + category: construction-category-storage + icon: + sprite: Structures/Storage/glassbox.rsi + state: icon + objectType: Structure + placementMode: SnapgridCenter + canBuildInImpassable: false + conditions: + - !type:TileNotBlocked diff --git a/Resources/Prototypes/tags.yml b/Resources/Prototypes/tags.yml index 5545e21ee7..f544cd95ef 100644 --- a/Resources/Prototypes/tags.yml +++ b/Resources/Prototypes/tags.yml @@ -1110,6 +1110,9 @@ - type: Tag id: Sidearm +- type: Tag + id: SignalTrigger + - type: Tag id: SkeletonMotorcycleKeys diff --git a/Resources/Textures/Structures/Storage/glassbox.rsi/DamageOverlay_12.png b/Resources/Textures/Structures/Storage/glassbox.rsi/DamageOverlay_12.png index cce6fe0ba3c8c14ff0b5f6f6661a18be74d56f8e..a82bb8b2338f154497c6ffa65c3def8ab4e5a8e3 100644 GIT binary patch delta 487 zcmV|u$ux4WLXA(GNcHa@z`2@-djn#W8f(rqF))xVCny?0;ncm6_m4#@q{1CS3!k zVK5uI6B)-_c{lLjd{GW4zXsl`a?-IJK%{MMIuZC&+3vGM>ihu!W3S%;u-#>eu_A7F z)s1c1I}u22o-~pPVBVV4<_X0B=hn#$wF(b5U*{mwOXmx|0|KRYjbKHJuSuyYvZ;Yf zCs{%csF9F^YJZfSr#7#(BB)qI0I-S|YjSe%czd0{M`1AINx2@evs^k~MB;4owbJ?G z^E>|_jMlQq!J;Z?N00-_7IE9HR_H{;U=bN(o9p+;^ahup^wxm8kQq&&HdL$vl$><3 zah?1+pMMRgt*??O|89%X)@wf`H2rc?Q=2Etc)m_;o?x7g9>E0gN8n`=U>VOZzI^J9 z%@S?miNwWbY_^ftWaCQR*H1^o#!ia{rs;GMg{ye60Z>-YWiz!*9woe3)ZeU delta 1275 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 delta 1096 zcmV-O1h@OA1KbFZBYyw^b5ch_0Itp)=>Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi z!vFvd!vV){sAK>D1Mx{jK~z{r?Nv)p6HyeNnc|bA8tvdCipGd-LE;m`0v`**LTwS+ zu8FvJB}*k57bLjRg$on$2b8JOstZkw3K|l85u}x3j8Wo)R(}#*)Wk=}^WC|3W++1~ ziNVD1B{%n;d+vFkGb6Wl#?MIq5X^zdA-`wgGIce-n-hHhlKB|DmC7;)P8@3pfB5wI z9_P&o)~s52;NsQ(9);8Y4F8z}`Y&shh|(R<^VTW`#U=AoNtjgz>T0(H`Eh3Cf9d@6 zXHYDqIl!VWL4U98vQ~*GIRkaI-r(TyXq=O?Ly__ocfb@Xh<*lTj^Of+uif1qbZn{fKO#-4(-;+L^xPeq0`$~FTJBY;*CrN)vg(|kc%Y@J)vephsNJ~ zDpyF4d;9lJ?*U@UqA;W+((G5GJ*iBn$)_@5N_4oXrlKb{G$H2~$+*WI;}IeuKQk27 zQW-c`Xn)vT9JZqcjl2#aYLpTn1NGah0@xt|W#>)oByFpU8e(W z%xTi4A)5}y0oTTwgRN_Qm2Y!jzZo|$LWWZ>v$;^vr}n^eqVL>KKkMoUw7K2NICz3? zKa=Pd*#X^nz`NtZ+2=x3TPWGrh3nknbs1ktV;& zQvbt9r9|V+qC;a5U>r0IV&P6WVb)j}BBO8!&a(2%0LuaDXc*OEh7kyAajG8_Qz8&O zo_~RcK`bW6f%m%0_9uj9S_4CrH6DNytTB8uDapFd6zD%?RxzYrM2!;Q4iI(cq&Weh zqx6o_j`P5<;V{7X1tsvTGsbX=1IPjc_dZ151CZ!)F#$*|I{aiu>`J(~wgSo#efv3H zf8wKgkv+UeFX1}cOC=Q!&@LPhS4Qm?^MAFF7I82>N*P&37lV&QKsjV(fh;0t<-zX& z#%b<}Wd;#Vq%ts${)z+)XY80hh5~$SlF4iiQ6xubKk8TgK2JHE!oIaeEl-YSbE$MT zhpf1lE8~bfNn^@nFoHb9B)!361nCxI$V#wrS9Kp_IN`hXDQ2HlD8yLtz2%723qi3P zyw-Mb2b}QcNz&*6PCEi!xoM~W0nV?VruOl~FxYtj_}J}l<}r`rkfh&|-a{1MrQ4$b O0000Px&KS@MER9J=Wl}m3MRTze!86RI}V$;}hF14FpNL&>VAR(a?K|>dSgu((AWswbg zulNO(y5tY=3s^wgRgqd%iquj<)0Ctnuz)61r8KUo?f4QWGxl7LyKpw5`s zaIo(*a8cb$)4z*-fPH{{fE@wc|M^aOX?`}nmFBk}XVMGP*SFNPhUipyZ(+_Ws(<~J zH?HUr01TrFfHIoGwk+nZO{Fz0#49J?`SKqF{BrX~+LaO-4SYTy^DmA7Af=0{`jFB^ zh~`aRuh&r&l}1Binze0f3-|8Tv#SpiEX~|_89)mP%(~+Vma`S!c=HslwD73`Z$1+4 zp;R^yqCq6wLuz!GO0kGfG}lzFRG6EeXX(3dy|2|;JMh*x?%k_rMK~l_{rwIfe|iQ0 z%a#QEn_DASsSyYq#j^h3=#j%%mW>bsDJ8aT1F&J#h=g_GeFyLh0g8g-I2=Bbz;#_> zJ^trv&tAJiI3!R$`sDM5cBq%s3w0J(B*Q&5Vo}`#xP1EolarGGxQ@*?=P!^jHQF{u2)Um# diff --git a/Resources/Textures/Structures/Storage/glassbox.rsi/glassbox-filled-open.png b/Resources/Textures/Structures/Storage/glassbox.rsi/glassbox-filled-open.png deleted file mode 100644 index 48db8e88e598cda3e7e3d2d168f4efbe85d3e362..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 796 zcmV+%1LOROP)Px%)=5M`R9J=WmS0FyQ5?rVZr9Dbg}Q8-|3VWVM6n2lR}2CRB`@Gz9&i$R= z_sj3xbIye{Y0{)gvkltX+LV@-79~-P)oN858ygeGL?R>`c)9hGvL09iU>H<^>4H)K zzAnuJFrd}q@pzCVNimzv^!N8?B+8rce8+%TdS6ON)5_ zVG+@=L3wEr=g%F-J~f5jkOhFl?%-xe2a)+>a{~zZCXveWJaxc6cy3E0QDuAj>jlvze8Z6`nkLKu^zoM#smguCAi9^EQGI z|B1zFWn4R5qr_HVU}7O^(%`I1ZCflBLZJ|Tzn^U1BGbPF4jMyhTzh*vhihxO)zw9o zUQgi5q&m00rZ}$JN$rBVGLzbNd%di#uHyB2sV&G-#Ve0C^KIiby}iBU<>le``_Zg? z`fu)}w_&mrYCPcbpi44-TL!{Q;i9Ul3Q-gpoc#>IiRM;DM&4mG8o}q;mf>v~s4Fw! z7WV_t-QC6Hqz!<#!*kedwy34r6$1d-zC{4;UcVA&E)_H>&DufI1~d>pog$yRNvu}J zy{pHR+T8OzSW4CYkJaA@_8BM4ICn*GD~5*Vqx$MLj69a{d*ol5Y}K(Nx7FbuwcAh#U*wQ%agF6~%j_ a`hNfqy%slc>Gk{o00007!?>LYJb}?A6|5JdPdUD zrF|xCvCQ*1+-1R*@Nlv7WO#C{V)yagd0^5`J070p{`E^%G8fhUcu-bbarn>yrd0wG z4m127e0h0XqozX2VV&T_n_E~u+!6?K7Z&H*@Jl9advit+qldkhp2f#W@-qxREN4vN zKDkxqrkvP}euphWx69iehu<^2Af(~V-T1chtK1=WhIdPn{HDIU#R>E_gQu&X%Q~lo FCIE({b}#?{ diff --git a/Resources/Textures/Structures/Storage/glassbox.rsi/icon.png b/Resources/Textures/Structures/Storage/glassbox.rsi/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..9d1c8c8685e9af057949444f072543ed07261cfa GIT binary patch literal 459 zcmV;+0W|)JP)zd&&Gx9H>|f}prqMTAb`3x}p? zt8IK>qei1cRZ@B^yt9SxtfVw(uCRELRiyRrmtFfG^++{JDU5Ib561r#m>>-WmYV0s`yt*%O$% zcg^r9FNbUMqD~d$PxhIdP5|&^JJcxN494AiXJeH*RUl1F&An>zCVCqlNf{2EwGT9h zf}RKz%p&P~6+JFgqioL4~2dfad~3eF4;WrWRBXR?%j6&vvCq+}wL3 zB0WnO=eK2hqQ_nbptmdR3G}--KFgOrqnv30`Ck>4av>7Z$e9+AkXErk&a}#3K{DI; zV^JieeL^dRyE)R#NcXGz@HA7XsOfK`JJwvbegho}dh=%pOmhGL002ovPDHLkV1ils B#`ORI literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Storage/glassbox.rsi/meta.json b/Resources/Textures/Structures/Storage/glassbox.rsi/meta.json index 5ce653f37b..33decc4009 100644 --- a/Resources/Textures/Structures/Storage/glassbox.rsi/meta.json +++ b/Resources/Textures/Structures/Storage/glassbox.rsi/meta.json @@ -1,15 +1,36 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation https://github.com/tgstation/tgstation/commit/0129a094635aac51e00fdc7aa3b4248affc1f49d Sprite modified and updated by Nimfar11 (Github), Shatter resprite by KREKS", + "copyright": "Taken from tgstation https://github.com/tgstation/tgstation/commit/0129a094635aac51e00fdc7aa3b4248affc1f49d Sprite modified and updated by Nimfar11 (Github), Shatter resprite by KREKS and modified by MilenVolf (GitHub)", "size": { "x": 32, "y": 32 }, "states": [ + { + "name": "base" + }, { "name": "glass" }, + { + "name": "glass-up" + }, + { + "name": "glass-broken" + }, + { + "name": "caplaser" + }, + { + "name": "locked" + }, + { + "name": "unlocked" + }, + { + "name": "icon" + }, { "name": "DamageOverlay_4" }, @@ -18,33 +39,6 @@ }, { "name": "DamageOverlay_12" - }, - { - "name": "glass-4" - }, - { - "name": "glass-up" - }, - { - "name": "locked" - }, - { - "name": "caplaser" - }, - { - "name": "unlocked" - }, - { - "name": "glassbox" - }, - { - "name": "glassbox-empty-open" - }, - { - "name": "glassbox-filled-closed" - }, - { - "name": "glassbox-filled-open" } ] } \ No newline at end of file diff --git a/Resources/migration.yml b/Resources/migration.yml index bf18cfe555..84203370e9 100644 --- a/Resources/migration.yml +++ b/Resources/migration.yml @@ -327,5 +327,8 @@ WeaponPistolN1984Nonlethal: WeaponPistolN1984 WeaponSubMachineGunVectorRubber: WeaponSubMachineGunVector WeaponSubMachineGunDrozdRubber: WeaponSubMachineGunDrozd WeaponRifleLecterRubber: WeaponRifleLecter + +# 2024-04-26 +GlassBoxLaserBroken: GlassBoxBroken ReinforcementRadioSyndicateMonkey: ReinforcementRadioSyndicateAncestor ReinforcementRadioSyndicateMonkeyNukeops: ReinforcementRadioSyndicateAncestorNukeops From 2621e31343cc6ea7d09a8f96361c607544c83954 Mon Sep 17 00:00:00 2001 From: PJBot Date: Sat, 27 Apr 2024 13:54:22 +0000 Subject: [PATCH 021/110] Automatic changelog update --- Resources/Changelog/Changelog.yml | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index c5c4b3dbea..5aa7c5e60f 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,12 +1,4 @@ Entries: -- author: musicmanvr - changes: - - message: Toned down the newton cradle and added it to the bureaucracy crate for - bored accountants. - type: Fix - id: 5963 - time: '2024-02-17T23:55:58.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/25357 - author: genderGeometries changes: - message: Allicin, nutriment, and vitamin can now be centrifuged. Protein and fat @@ -3856,3 +3848,14 @@ id: 6462 time: '2024-04-27T13:50:57.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/21461 +- author: MilenVolf + changes: + - message: Glass Box now can be constructed and deconstructed! + type: Add + - message: Glass Box now makes an alarm sound on destruction. + type: Tweak + - message: Now Antique Laser can be put back in the Glass Box. + type: Fix + id: 6463 + time: '2024-04-27T13:53:16.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/25365 From 2cefd0ee10c535c8ed0a1f93f2eef412d5f4d53c Mon Sep 17 00:00:00 2001 From: Ed <96445749+TheShuEd@users.noreply.github.com> Date: Sat, 27 Apr 2024 17:55:28 +0300 Subject: [PATCH 022/110] Displacement Map Visualizer QoL (#27392) * Update Displacement Map Visualizer.lua * Add files via upload * Fix background layer being offset This was caused by not taking the cel's own bounds into account. Aseprite doesn't make an image layer "full size" if it only covers a small part of the sprite. --------- Co-authored-by: Pieter-Jan Briers --- .../Displacement Map Visualizer.lua | 38 +++++++++++++++++- .../Displacement Map.png | Bin 0 -> 1212 bytes 2 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 Tools/SS14 Aseprite Plugins/Displacement Map.png diff --git a/Tools/SS14 Aseprite Plugins/Displacement Map Visualizer.lua b/Tools/SS14 Aseprite Plugins/Displacement Map Visualizer.lua index b16ab797e7..468636c07d 100644 --- a/Tools/SS14 Aseprite Plugins/Displacement Map Visualizer.lua +++ b/Tools/SS14 Aseprite Plugins/Displacement Map Visualizer.lua @@ -88,17 +88,45 @@ dialog:canvas{ local layerDisplacement = findLayer(sprite, dialog.data["displacement-select"]) local layerTarget = findLayer(sprite, dialog.data["reference-select"]) + local layerBackground = findLayer(sprite, dialog.data["background-select"]) -- print(layerDisplacement.name) -- print(layerTarget.name) + local celDisplacement = layerDisplacement:cel(1) local celTarget = layerTarget:cel(1) + local celBackground = layerBackground:cel(1) + + -- Draw background + context:drawImage( + -- srcImage + celBackground.image, + -- srcPos + 0, 0, + -- srcSize + celBackground.image.width, celBackground.image.height, + -- dstPos + celBackground.position.x * scale, celBackground.position.y * scale, + -- dstSize + celBackground.image.width * scale, celBackground.image.height * scale) + + -- Apply displacement map and draw local image = applyDisplacementMap( sprite.width, sprite.height, dialog.data["size"], celDisplacement.image, celDisplacement.bounds, celTarget.image, celTarget.bounds) - context:drawImage(image, 0, 0, image.width, image.height, 0, 0, image.width * scale, context.width, context.height) + context:drawImage( + -- srcImage + image, + -- srcPos + 0, 0, + -- srcSize + image.width, image.height, + -- dstPos + 0, 0, + -- dstSize + image.width * scale, image.height * scale) end } @@ -120,6 +148,14 @@ dialog:combobox{ end } +dialog:combobox{ + id = "background-select", + label = "background layer", + options = layers, + onchange = function(ev) + dialog:repaint() + end +} dialog:slider{ id = "size", diff --git a/Tools/SS14 Aseprite Plugins/Displacement Map.png b/Tools/SS14 Aseprite Plugins/Displacement Map.png new file mode 100644 index 0000000000000000000000000000000000000000..50744cef601c4226b24eba32f33de2c185de3471 GIT binary patch literal 1212 zcmV;t1Vj6YP)Px(c1c7*RCt{2*tw1zRT#zbW5k0X5@(LC{3N)m>h4Qb^^8MOVp3x8T7`F;CqXA7 z<7I%L57O93*2v2YlJALrYE5f;THjylo*UnOWB$e$ysxhFm&dzAyvyr+3D^4u{2z9s zCve3}=R`U`oqaqfq8!eNaDMeU^aOeWSFn6W5TJ{$Z|RoNsdP%%Hc=^*&hinyCdO_pD%}=Ku_QkuC7E~Pv=@zqR4qA zvYb{T$#Es399AO8ekHu@R>H}4CG7fXbLa{51U_NgiinoIfmwol_+wqM3z$}k{l}$=(5>}onG09^kMtP{jARj7m zsPE6AC(sjkXU9Su%js;^Lag#qh((?YG0UwGO|FHgaw$ZSb0M;v3X$Ykh$x3b1lbqD z%dQYkwuP|rRES9)3o*(=AqM$Sh=Y8m5O>OdbLa_NR|0?j@%DRv^VVP2@iOo=0G#F1 zY5cqy9OYj&gH^t_87%Vs&0v-vYz9q!xEWOW(PmKO$D2Wxx6L5sf6wqXe*Eco0KgC5 z-$u~mPc{QDKiv$R{A@F@^7GALl3#2Fqx^C+801%*!9jk#8QhWIYzE)Szip-`&=Yv~ zfn!nvyTK~o+YJ`^{%$bK4|anlKimzf{Af2Q^5fkg%iC^{Fo`Km^$b!pklYPPT!t@)U?k z9s@DTLm-CG|08ti^#nfTNwX(ruLL~N^$LQ z>j^7Qo|xp(6QjTU*vLyM3SQ;q8uC%WbX(sJ4ZO# zI>O46BPRD@XMb@$fu6u8T(v~CO286D&X&k>vP6=jC88WG5oB)(FFQ*(*;>Ndk3aj1 z>k0G(KGVuXlt~FpM3&P;Bsoq*l*2>>*-wO*-9)(Q)1Ljs^#pnXSFk)1c~k-;k>ofM zQ4S*!WIqyq{CsDBaXo>az!fhIL>iR9KtwqVL>R8->@Th-&=a`E#RCx!SAX^w*Aw{C a6Zi)qOv$-@EJcU_0000 Date: Sat, 27 Apr 2024 10:58:14 -0400 Subject: [PATCH 023/110] repositioned spooky long hair to its proper place in the alphabet (tweak) (#27370) * repositioned spooky long hair to its proper place in the alphabet * forgot the meta.json for hairstyles oopsie --- Resources/Locale/en-US/accessories/human-hair.ftl | 2 +- .../Mobs/Customization/Markings/human_hair.yml | 14 +++++++------- .../Mobs/Customization/human_hair.rsi/meta.json | 8 ++++---- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/Resources/Locale/en-US/accessories/human-hair.ftl b/Resources/Locale/en-US/accessories/human-hair.ftl index f052f232de..7d3467a610 100644 --- a/Resources/Locale/en-US/accessories/human-hair.ftl +++ b/Resources/Locale/en-US/accessories/human-hair.ftl @@ -55,7 +55,6 @@ marking-HumanHairCornrows2 = Cornrows 2 marking-HumanHairCornrowbun = Cornrow Bun marking-HumanHairCornrowbraid = Cornrow Braid marking-HumanHairCornrowtail = Cornrow Tail -marking-HumanHairSpookyLong = Spooky Long marking-HumanHairCrewcut = Crewcut marking-HumanHairCrewcut2 = Crewcut 2 marking-HumanHairCurls = Curls @@ -166,6 +165,7 @@ marking-HumanHairProtagonist = Slightly Long Hair marking-HumanHairSpikey = Spiky marking-HumanHairSpiky = Spiky 2 marking-HumanHairSpiky2 = Spiky 3 +marking-HumanHairSpookyLong = Spooky Long marking-HumanHairSwept = Swept Back Hair marking-HumanHairSwept2 = Swept Back Hair 2 marking-HumanHairTailed = Tailed diff --git a/Resources/Prototypes/Entities/Mobs/Customization/Markings/human_hair.yml b/Resources/Prototypes/Entities/Mobs/Customization/Markings/human_hair.yml index c2a7ac4ebf..aa983583c5 100644 --- a/Resources/Prototypes/Entities/Mobs/Customization/Markings/human_hair.yml +++ b/Resources/Prototypes/Entities/Mobs/Customization/Markings/human_hair.yml @@ -397,13 +397,6 @@ sprites: - sprite: Mobs/Customization/human_hair.rsi state: cornrowtail -- type: marking - id: HumanHairSpookyLong - bodyPart: Hair - markingCategory: Hair - sprites: - - sprite: Mobs/Customization/human_hair.rsi - state: spookylong - type: marking id: HumanHairCrewcut bodyPart: Hair @@ -1167,6 +1160,13 @@ sprites: - sprite: Mobs/Customization/human_hair.rsi state: spiky2 +- type: marking + id: HumanHairSpookyLong + bodyPart: Hair + markingCategory: Hair + sprites: + - sprite: Mobs/Customization/human_hair.rsi + state: spookylong - type: marking id: HumanHairSwept bodyPart: Hair diff --git a/Resources/Textures/Mobs/Customization/human_hair.rsi/meta.json b/Resources/Textures/Mobs/Customization/human_hair.rsi/meta.json index a6dc03eda8..8fd4f5e1b9 100644 --- a/Resources/Textures/Mobs/Customization/human_hair.rsi/meta.json +++ b/Resources/Textures/Mobs/Customization/human_hair.rsi/meta.json @@ -231,10 +231,6 @@ "name": "country", "directions": 4 }, - { - "name": "spookylong", - "directions": 4 - }, { "name": "crewcut", "directions": 4 @@ -671,6 +667,10 @@ "name": "spikyponytail", "directions": 4 }, + { + "name": "spookylong", + "directions": 4 + }, { "name": "stail", "directions": 4 From 74041cf66fc73326ce75b5e9ffd498567f68fbcc Mon Sep 17 00:00:00 2001 From: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> Date: Sun, 28 Apr 2024 02:32:57 +1000 Subject: [PATCH 024/110] Fix literally every single activatable UI bug (#27401) * Fix all activatable bugs Apparently this was a load-bearing nullable enum. * build --- Content.Shared/UserInterface/ActivatableUIComponent.cs | 2 +- Content.Shared/UserInterface/ActivatableUISystem.Power.cs | 5 +++-- Content.Shared/UserInterface/ActivatableUISystem.cs | 4 ++-- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/Content.Shared/UserInterface/ActivatableUIComponent.cs b/Content.Shared/UserInterface/ActivatableUIComponent.cs index 74e6134932..136a1f82cf 100644 --- a/Content.Shared/UserInterface/ActivatableUIComponent.cs +++ b/Content.Shared/UserInterface/ActivatableUIComponent.cs @@ -8,7 +8,7 @@ namespace Content.Shared.UserInterface public sealed partial class ActivatableUIComponent : Component { [DataField(required: true, customTypeSerializer: typeof(EnumSerializer))] - public Enum Key { get; set; } = default!; + public Enum? Key { get; set; } = default!; [ViewVariables(VVAccess.ReadWrite)] [DataField] diff --git a/Content.Shared/UserInterface/ActivatableUISystem.Power.cs b/Content.Shared/UserInterface/ActivatableUISystem.Power.cs index c904224328..64099c9573 100644 --- a/Content.Shared/UserInterface/ActivatableUISystem.Power.cs +++ b/Content.Shared/UserInterface/ActivatableUISystem.Power.cs @@ -21,7 +21,8 @@ public sealed partial class ActivatableUISystem _cell.SetPowerCellDrawEnabled(uid, false); if (HasComp(uid) && - TryComp(uid, out var activatable)) + TryComp(uid, out var activatable) && + activatable.Key != null) { _uiSystem.CloseUi(uid, activatable.Key); } @@ -54,7 +55,7 @@ public sealed partial class ActivatableUISystem /// public void CheckUsage(EntityUid uid, ActivatableUIComponent? active = null, ActivatableUIRequiresPowerCellComponent? component = null, PowerCellDrawComponent? draw = null) { - if (!Resolve(uid, ref component, ref draw, ref active, false)) + if (!Resolve(uid, ref component, ref draw, ref active, false) || active.Key == null) return; if (_cell.HasActivatableCharge(uid)) diff --git a/Content.Shared/UserInterface/ActivatableUISystem.cs b/Content.Shared/UserInterface/ActivatableUISystem.cs index 452f08c094..94271cc681 100644 --- a/Content.Shared/UserInterface/ActivatableUISystem.cs +++ b/Content.Shared/UserInterface/ActivatableUISystem.cs @@ -136,7 +136,7 @@ public sealed partial class ActivatableUISystem : EntitySystem private bool InteractUI(EntityUid user, EntityUid uiEntity, ActivatableUIComponent aui) { - if (!_uiSystem.HasUi(uiEntity, aui.Key)) + if (aui.Key == null || !_uiSystem.HasUi(uiEntity, aui.Key)) return false; if (_uiSystem.IsUiOpen(uiEntity, aui.Key, user)) @@ -205,7 +205,7 @@ public sealed partial class ActivatableUISystem : EntitySystem public void CloseAll(EntityUid uid, ActivatableUIComponent? aui = null) { - if (!Resolve(uid, ref aui, false)) + if (!Resolve(uid, ref aui, false) || aui.Key == null) return; _uiSystem.CloseUi(uid, aui.Key); From 7c2ea180889f0a87fca1a5bc329b6a56f4a807a9 Mon Sep 17 00:00:00 2001 From: PJBot Date: Sat, 27 Apr 2024 16:34:03 +0000 Subject: [PATCH 025/110] Automatic changelog update --- Resources/Changelog/Changelog.yml | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 5aa7c5e60f..c42ada1057 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,12 +1,4 @@ Entries: -- author: genderGeometries - changes: - - message: Allicin, nutriment, and vitamin can now be centrifuged. Protein and fat - can now be electrolyzed. - type: Add - id: 5964 - time: '2024-02-19T06:05:43.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/25366 - author: azurerosegarden changes: - message: Drinks in the Solar's Best Hot Drinks menu now show their contents @@ -3859,3 +3851,10 @@ id: 6463 time: '2024-04-27T13:53:16.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/25365 +- author: metalgearsloth + changes: + - message: Fix a lot of UI bugs. + type: Fix + id: 6464 + time: '2024-04-27T16:32:57.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/27401 From 34ab1e760d5999212fc4590ea729fd2748cb6020 Mon Sep 17 00:00:00 2001 From: Terraspark4941 Date: Sat, 27 Apr 2024 21:36:04 +0500 Subject: [PATCH 026/110] The Honored Quran (Sprite addition) (#27400) The Honored Quran --- .../Specific/Chapel/quran.rsi/icon.png | Bin 0 -> 707 bytes .../Specific/Chapel/quran.rsi/inhand-left.png | Bin 0 -> 886 bytes .../Chapel/quran.rsi/inhand-right.png | Bin 0 -> 1071 bytes .../Specific/Chapel/quran.rsi/meta.json | 22 ++++++++++++++++++ 4 files changed, 22 insertions(+) create mode 100644 Resources/Textures/Objects/Specific/Chapel/quran.rsi/icon.png create mode 100644 Resources/Textures/Objects/Specific/Chapel/quran.rsi/inhand-left.png create mode 100644 Resources/Textures/Objects/Specific/Chapel/quran.rsi/inhand-right.png create mode 100644 Resources/Textures/Objects/Specific/Chapel/quran.rsi/meta.json diff --git a/Resources/Textures/Objects/Specific/Chapel/quran.rsi/icon.png b/Resources/Textures/Objects/Specific/Chapel/quran.rsi/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..0c710e8850ce992ddf9242e78f3b3848932ae70c GIT binary patch literal 707 zcmV;!0zCbRP)4Tx04UFukv&MmP!xqvTeYGU5sQd8WT;LSL`57m3Pq?8YK2xEOkVm2O&XFE z7e~Rh;NZ_<)xpJCR|i)?5c~mgbaGO3krMAq3N1nfFFfAIdG8$VyASYJi%hfH#sN*Y z%|uKTQt4G8_zE97Fn~UE%gi$7Bq@%T^>t6TsqUgY3;(MgHDfWrClJpv!?cMvh^IGg zgY!OdnB`@a_?&pmqy~u}xvqHp#yRJ*pJ#^6WMZB;Of2M@SZQLGH#OoZ;)ts0lOVpzlyBnVJYMgc|Gh|;c;Vj)52VhjI}>zBx-kgEVj zjs=vUL3aJ%fAD*@R(5j2OA3iV`-|gzi~zx1pjL65?_)T<*(~sWM&FbM`fq`*HE(Y9bDTZ^Nt#vs1~@nb zMst+C-s0Vz&2#(njypeyKmD0R-S z-N43e`819(CS)=}=#&S%OPGF`ZM7Gc%BpO8Gdf}JY3uea!qIR9Kzlp^iI|xP-2!ov z#N-z^fk0xvz$hZfK|yqj5)}jh#3`(!f(r2-u0r$|r4XJ&DTF6^71YqzFMMz7udt1- pd$&=k+=YDFI9Bc>=kdId^9Ll1EA$Ts0=obJ002ovPDHLkV1nyZJZ%5~ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Specific/Chapel/quran.rsi/inhand-left.png b/Resources/Textures/Objects/Specific/Chapel/quran.rsi/inhand-left.png new file mode 100644 index 0000000000000000000000000000000000000000..f5c0eca315987e5b39f48ee8f4455b72f24733bb GIT binary patch literal 886 zcmV-+1Bv{JP)4Tx04UFukv&MmP!xqvTeYGU5sQd8WT;LSL`57m3Pq?8YK2xEOkVm2O&XFE z7e~Rh;NZ_<)xpJCR|i)?5c~mgbaGO3krMAq3N1nfFFfAIdG8$VyASYJi%hfH#sN*Y z%|uKTQt4G8_zE97Fn~UE%gi$7Bq@%T^>t6TsqUgY3;(MgHDfWrClJpv!?cMvh^IGg zgY!OdnB`@a_?&pmqy~u}xvqHp#yRJ*pJ#^6WMZB;Of2M@SZQLGH#OoZ;)ts0lOVpzlyBnVJYMgc|Gh|;c;Vj)52VhjI}>zBx-kgEVj zjs=vUL3aJ%fAD*@R(5j2OA3iV`-|gzi~zx1pjL65?_)T<*(~sWM&FbM`fq`*HE(Y9bDTZ^Nt#vs1~@nb zMst+C-s0Vz&2#(njypeyKmD0v0zni9@He`O_5%#+P>1jjsPGU7fv3*h`v;=V9<5{eH+AVCM6s6$>11F; zSzttk>BzS0)~qwo(ROxR7Qdg%pby@{n`JNWOSWxOT*R~Eem(#I00000007JyCQog9 zl}e{nF0ZAmEV<5*^0^$H)a%;)P4!h$^3?V|dT*@MYtQBE|C)uc>!IK?FOgq=-|*F z3?72qfLNTi-}uMHSz}3-CzjYZK;#6(wpir`M2;Yg#125@1pej*M2;YgAFmi{HN-+-4Tx04UFukv&MmP!xqvTeYGU5sQd8WT;LSL`57m3Pq?8YK2xEOkVm2O&XFE z7e~Rh;NZ_<)xpJCR|i)?5c~mgbaGO3krMAq3N1nfFFfAIdG8$VyASYJi%hfH#sN*Y z%|uKTQt4G8_zE97Fn~UE%gi$7Bq@%T^>t6TsqUgY3;(MgHDfWrClJpv!?cMvh^IGg zgY!OdnB`@a_?&pmqy~u}xvqHp#yRJ*pJ#^6WMZB;Of2M@SZQLGH#OoZ;)ts0lOVpzlyBnVJYMgc|Gh|;c;Vj)52VhjI}>zBx-kgEVj zjs=vUL3aJ%fAD*@R(5j2OA3iV`-|gzi~zx1pjL65?_)T<*(~sWM&FbM`fq`*HE(Y9bDTZ^Nt#vs1~@nb zMst+C-s0Vz&2#(njypeyKmD037JRrdYujnpMBWp z0{{R300000z^D;wO>}*Bwmm&FbIP(yFD=YszC-X?=Q7lhI&FSu|TW6f5 z)Six3^U!O6F1XLyMa4)@kkSMq*x8y8G(Z8JF4syL2S@_T8ec zTP9w6qM#yCGLMcqKHa&oL6c69n3t9AzPfeBr8Xe&1)Z$+=<4P5{_1u;6^Y`!YGsFN zXFGJF(oM|EN_St~I^$9sP%H-hjy`)i-Cy^-Un&yCd7E1mdh`A`eQH+|^Rm+2SGUf% z)CS1+q|F^YT6Xt4>$>XuI6;;W^!!DQ3I*#wd0FZ1t6OJO>Ra;s)YQib$8kboQy6&M zvG%J*J{!cK=U3{MSOr94QmQe$)%+GZe@6Cs|Z`};D+{NdK&*XW5r;pFj z{e^2>lZs?x)Bw}F_&o8MJTJg=13W*#HJLDKfazU)p7>0j7vQ-8o*&?vOc*sl1ZH>f zdEzs9UV!HYcz!_Eq$1fEJyn~leVz=*C;r^U@13@PG@iUZr@{x~;@wMB{Nj@+lt_d= p{S-UYT5YK)008J2?fHN@{RX}YX002ovPDHLkV1fof^*;ar literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Specific/Chapel/quran.rsi/meta.json b/Resources/Textures/Objects/Specific/Chapel/quran.rsi/meta.json new file mode 100644 index 0000000000..64d37670f1 --- /dev/null +++ b/Resources/Textures/Objects/Specific/Chapel/quran.rsi/meta.json @@ -0,0 +1,22 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from tgstation at https://github.com/tgstation/tgstation/commit/40d89d11ea4a5cb81d61dc1018b46f4e7d32c62a, modified by Terraspark4941", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + } + ] +} From 8869fc3bb24f904b507b9c116b727fceceb7c141 Mon Sep 17 00:00:00 2001 From: RiceMar1244 <138547931+RiceMar1244@users.noreply.github.com> Date: Sat, 27 Apr 2024 15:08:38 -0400 Subject: [PATCH 027/110] Resprite antique laser pistol (#27037) * Resprites the captain's antique laser pistol * Adds artist credit * Improves icon outline and shading * Replaces new sprites with something more resembling the in-game version --- .../Guns/Battery/antiquelasergun.rsi/base.png | Bin 1407 -> 1035 bytes .../Guns/Battery/antiquelasergun.rsi/icon.png | Bin 1415 -> 1040 bytes .../antiquelasergun.rsi/mag-unshaded-0.png | Bin 133 -> 166 bytes .../antiquelasergun.rsi/mag-unshaded-1.png | Bin 208 -> 168 bytes .../antiquelasergun.rsi/mag-unshaded-2.png | Bin 211 -> 179 bytes .../antiquelasergun.rsi/mag-unshaded-3.png | Bin 214 -> 177 bytes .../antiquelasergun.rsi/mag-unshaded-4.png | Bin 227 -> 196 bytes .../Battery/antiquelasergun.rsi/meta.json | 2 +- 8 files changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/Textures/Objects/Weapons/Guns/Battery/antiquelasergun.rsi/base.png b/Resources/Textures/Objects/Weapons/Guns/Battery/antiquelasergun.rsi/base.png index d6da03ed28dd4ee71176440f5257fe7999c647d4..003858cf9d9011a7a0c5c407ff724bc8135b9424 100644 GIT binary patch delta 1014 zcmVSMTn0nX+K`LTO42i5uW}DVvVrnvJ z{CP-!vy<&4TilCazcA$Yd-=WhzVm(W{RYl)j{iFp`z98P0e_%r8m4IqX}|Q^t4ew$ zeWrl9Pjh^@aaGuDnx-kHXuNQm005&!@9+-rtX^wVRr_&LEK!DnXi~lNc zVf+0vol7Q@c)eZ#+U@pT0sx6bf^R=~{>(|ANoTBeWZ?yF)s>mv!sfTQeok^uR9-crEl^M46Ibi3WVQ?R?Mq3hqDtakw@ zl}bZNeDv;Hy!`swsdLe2)FNXivA@4>Nq=;71c2M^?h_~!3IODC069vf5`{v6_4RcC z;_*1uY88M^r$fD72fzb#E<8#;p9dfi2%J(xlIWM>6BZU0I6gjBd_Eu0p8};;tBG2z zcIqu7k$;F%E|&)`AvqzMrYY0Y)57I-DZkvh!xN7^Os!TEQXM-9X_HF%{eCN^tJCSg zJ-3s@sQW;U)p7eze*WPmk3SOR;NU<3L?V%JEZ^E%zhtrmLlaAcLLmSlOCaSR8yi!6 zJ|7bk6958Gip3(ju2U|TMJN=a^-z%)zXA7~Z-3BeG}zhM0l+W}+-|orK0ZF0z~tm4 zQ&Urzrr8hJYSC;qr7B9Z*|bIpV0n3&?d@%<)v7olZgssKl}g3(2iq7rpgsy{WHK2?1uB(_EGq!rZdY;q8r~0yM1o{8$;`|QPhUh_ z{`eZI$7lU7o6O#9jYi{?&Fyv%FF_;{8E~{CnM?{m93CEuR4Rq)@!^>Y6AT7fU0t>O z?2oFdip%9vy4|iqzxR}Zo6rfFOomh{HE&XlU@(Yhs{g%z_R`z*P6(^2s`Pq2>s+tb zLpGirLwi7uR5Ti;)oQW1xjB-^Q_sBwfcAG=QJMyTW5P2NkWDD}vayEY*6&BkXVMF0Q*07*qoM6N<$f+gqZjsO4v delta 1389 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 delta 1397 zcmV-*1&aER2!{)hBYyw^b5ch_0Itp)=>Px)K}keGR9J=Wm0PS-)g8uv>$3OEo|!Xn zh7QIi979tSP(&)ha=?*9K_z01m!yrD7(q=MqrTRpQ6DHtvEikGSRcG3CSC%X)CUtS z7OSN;wqOv-MN&MsIk%ZJXYaY~>*~XSlOBfSQD54J^S!L>|9{%wTHpHie|;O~F^_rt zk0EB8*!lPllbD1?qrsc6zcuT7v*Er6?lrYq4T0gq4?dceuP-e;`ovCS0)sII60mHG zr-U%yRltyv2%y#S*;v|OGLAzgJTbL*zjzS(XQ~L`ch=2g_ zf#zk#=7srTDSr`45kx+%W}7Gs(3aI9R9;%}JdawfMx)uFQkkGO;Smdg5CZ>OZterF z>(Z##Ng{)#E&O&wv)N?xmfL2ydC?BD^{(472!hbZ)+t(k8@D#W;>B0cmCqB$F&IE3 zBnc#Og4BXIOpsENPFsM)7zm?~dfg-NLt1_dg(6BKlz&txDf#r1Bh#Nj17_Q{ZS-8b zg;dI>Rvjk_V+xBGk#h<({1#F`O53DzIkHX$&ucI;*hhDFk<5ZTPwyyEtyanB^PE0) z3Z*n@CymsKB#v?2Ny@{+2m`x!@1Ehf1}K$EY}oh{@(c24t?=q~Y}>-pHa$H(7-JAp z5Jn*jbAR1@-G83nzuaPCa)hCwuX+A=6@GSG4_c*Ie^W2NG_X(5F&=#90CAFZ3IOO` zpMuA(gFj5U^ViQlWqhoUx88UgfK9jF!k_gqVgGwn#s_GJE>3zS ze&91O)X#5N($Q?kjvpmx2N2J!3&8BzvxgPeUVp<~TYm_wWuV-T>$;pdeHP2MSp0(` z%2qU*4QkaI=g<9{t_2H_O7OhjcqFy<`;5);5?Xwb`Vfl zRG@F54=3xOlt5W(ZU>%x>PgO=IfIg#IF9jLmuxmm@rok8@ALklqu4sliEeW>Hg8%< zS3XBJmxBbF^%hPhg*)ky$!7V>;ZH8xZ{O5}rgy`7Jg*K0c0BqBmGKH%Yb@KM*=Qk^ zu2Y>!Yh00000NkvXXu0mjf DG3Kzt diff --git a/Resources/Textures/Objects/Weapons/Guns/Battery/antiquelasergun.rsi/mag-unshaded-0.png b/Resources/Textures/Objects/Weapons/Guns/Battery/antiquelasergun.rsi/mag-unshaded-0.png index 32fba189df859074b55aa223dd5b35c565d7c98c..042d52f5d74ff97ccfc902861ce0aa21dffc89b8 100644 GIT binary patch delta 138 zcmV;50CoR`0j2?vB!6v5L_t(oh3(R@34kyVh2j6i1uWwl?v$b2$u*MF5n>_Q2p%FP z7VoPbxPozlN`1bki(^PcYjT1F>*53v9)koGw?I4P$Mq7kXE!!(eEYw?=9DLs&JhhE z_oV*|W?dCH;IfL1Ps_Stg+PLW(JHrt8WOBe7-prc&k$v6Q;6fR{$W$MRYlz8NK@&2 s$$#u04FlGnkpr3B(-dgHmBGqT%*(CTHfQ%b1|aZs^<#Be=akR{0G<#tI{*Lx delta 180 zcmZ3%c!6<(N*53v9)koGw?I4P$Mrdn?(p#RHB4-5Z2V}=%&e?F<*Y->m)@p811=86St+X3wrp)I!5r3w zdUabxL|uLyXu8bvU-*oKhW2vzgBoCadYGyh7_3=%H3fQ%IRqGhz|+;wWt~$(69D%T BH5&i` delta 183 zcmdnYc$sm6Np7*a9k?WK*J4F&?N7pw~m4oc2B zcqvjxN9MSwj9bUqnIcUrN}Lb%IQ}30*ez1Yc|GtkP#?p8hBId-Sw*`<$Qt}8tUDLp zzH^0LWW$xG=eP{Q>WWPrjI|hUdQ>R&-R21p5;ynhC9mK%7MBG>EA&dPgg&ebxsLQ0M=zf00000 diff --git a/Resources/Textures/Objects/Weapons/Guns/Battery/antiquelasergun.rsi/mag-unshaded-3.png b/Resources/Textures/Objects/Weapons/Guns/Battery/antiquelasergun.rsi/mag-unshaded-3.png index 1678a31534f0f692712fc987989ad8723ae88464..fcbbc48af1ac28a75265f6eeae6a54825f4ee72a 100644 GIT binary patch delta 149 zcmV;G0BZl%0kHv)B!75GL_t(oh3(X_34kyV1<-$Dp}0|+OdvRe*o#ZJrj;{jcNS@c zM3M;6=D+F}Kiok`03!OCq?Be6jdeOeR*lv?bxNtf<^3U_*`uB6bP0l+XkKS0O^H diff --git a/Resources/Textures/Objects/Weapons/Guns/Battery/antiquelasergun.rsi/mag-unshaded-4.png b/Resources/Textures/Objects/Weapons/Guns/Battery/antiquelasergun.rsi/mag-unshaded-4.png index 5300c65d31ab2ba9dc92f8e19b323792d2cf6fd3..40e557d736c68e1fcc99329d8b848db07422b4bd 100644 GIT binary patch delta 168 zcmV;Z09XIx0mK22B!7!ZL_t(oh3(X_4Z<)Gh2j4pgg|V-1lfXBk_oZ}b7T_cU;#RM zpgM|x;tHJ$E6w|=ll6Q)$+E%BR;Em7l%l5T5p;>%mTe|96wMx5X1*7hvVNtGo^2|! zY5N8P2+$j}ix8kE=xw?Bt zgLwMKM>6Xk81)4N=xkgR=b|EdJLreJ6JP7ItxFahVFYUY#IWVeqv}HSL;D%CET0)0 zuU)6VE-n1o!r7l=q(u+xI(XFbh*sPAdSvK7($G#Gq=1_QwjhIbqFu0PZMF9YIvy85}Sb4q9e07^7Z(f|Me diff --git a/Resources/Textures/Objects/Weapons/Guns/Battery/antiquelasergun.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Battery/antiquelasergun.rsi/meta.json index f126a57676..86ecf2bff1 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Battery/antiquelasergun.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Battery/antiquelasergun.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "taken from tg station at commit https://github.com/tgstation/tgstation/commit/8b7f8ba6a3327c7381967c550f185dffafd11a57", + "copyright": "icon by RiceMar1244 based on icon taken from tg station at commit https://github.com/tgstation/tgstation/commit/8b7f8ba6a3327c7381967c550f185dffafd11a57", "size": { "x": 32, "y": 32 From 1d2335699d94f838c4321be314be3e62e1075ebe Mon Sep 17 00:00:00 2001 From: PJBot Date: Sat, 27 Apr 2024 19:09:44 +0000 Subject: [PATCH 028/110] Automatic changelog update --- Resources/Changelog/Changelog.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index c42ada1057..fe8543e80a 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: azurerosegarden - changes: - - message: Drinks in the Solar's Best Hot Drinks menu now show their contents - type: Fix - id: 5965 - time: '2024-02-19T15:40:43.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/25301 - author: Lank changes: - message: Nymphs can now open doors and chirp. @@ -3858,3 +3851,10 @@ id: 6464 time: '2024-04-27T16:32:57.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/27401 +- author: RiceMar1244 + changes: + - message: Resprited the captain's antique laser pistol. + type: Tweak + id: 6465 + time: '2024-04-27T19:08:38.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/27037 From 2cb421bc430cfeff2e1669880f15c834533fd282 Mon Sep 17 00:00:00 2001 From: SlamBamActionman <83650252+SlamBamActionman@users.noreply.github.com> Date: Sat, 27 Apr 2024 21:10:47 +0200 Subject: [PATCH 029/110] Fix suit baldness (#27404) Initial commit --- .../Clothing/EntitySystems/ClothingSystem.cs | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/Content.Shared/Clothing/EntitySystems/ClothingSystem.cs b/Content.Shared/Clothing/EntitySystems/ClothingSystem.cs index d85506df4b..e8bfb78961 100644 --- a/Content.Shared/Clothing/EntitySystems/ClothingSystem.cs +++ b/Content.Shared/Clothing/EntitySystems/ClothingSystem.cs @@ -96,20 +96,23 @@ public abstract class ClothingSystem : EntitySystem { if (TryComp(item, out HideLayerClothingComponent? comp)) { - //Checks for mask toggling. TODO: Make a generic system for this - if (comp.HideOnToggle && TryComp(item, out MaskComponent? mask) && TryComp(item, out ClothingComponent? clothing)) + if (comp.Slots.Contains(layer)) { - if (clothing.EquippedPrefix != mask.EquippedPrefix) + //Checks for mask toggling. TODO: Make a generic system for this + if (comp.HideOnToggle && TryComp(item, out MaskComponent? mask) && TryComp(item, out ClothingComponent? clothing)) + { + if (clothing.EquippedPrefix != mask.EquippedPrefix) + { + shouldLayerShow = false; + break; + } + } + else { shouldLayerShow = false; break; } } - else - { - shouldLayerShow = false; - break; - } } } _humanoidSystem.SetLayerVisibility(equipee, layer, shouldLayerShow); From 9ccf95e333c5099961166a8aa14732b7279b97e7 Mon Sep 17 00:00:00 2001 From: PJBot Date: Sat, 27 Apr 2024 19:11:52 +0000 Subject: [PATCH 030/110] Automatic changelog update --- Resources/Changelog/Changelog.yml | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index fe8543e80a..4c24cd63d4 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: Lank - changes: - - message: Nymphs can now open doors and chirp. - type: Tweak - id: 5966 - time: '2024-02-19T17:11:20.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/25363 - author: PotentiallyTom changes: - message: Gave guidebooks to the 4 learner roles @@ -3858,3 +3851,11 @@ id: 6465 time: '2024-04-27T19:08:38.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/27037 +- author: SlamBamActionman + changes: + - message: Hardsuits and other helmets/hoods should no longer make you bald after + toggling. + type: Fix + id: 6466 + time: '2024-04-27T19:10:47.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/27404 From 02d2611d94780ef980f4bba35f8e7d2629c23431 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 27 Apr 2024 18:21:52 -0700 Subject: [PATCH 031/110] Update Credits (#27413) Co-authored-by: PJBot --- Resources/Credits/GitHub.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/Credits/GitHub.txt b/Resources/Credits/GitHub.txt index cffbe61d2b..e212aa149e 100644 --- a/Resources/Credits/GitHub.txt +++ b/Resources/Credits/GitHub.txt @@ -1 +1 @@ -0x6273, 2013HORSEMEATSCANDAL, 20kdc, 21Melkuu, 4dplanner, 612git, 778b, Ablankmann, Acruid, actioninja, adamsong, Admiral-Obvious-001, Adrian16199, Aerocrux, Aexxie, Agoichi, Ahion, AJCM-git, AjexRose, Alekshhh, AlexMorgan3817, AlexUmAndXGabriel08X, AlmondFlour, AlphaQwerty, Altoids1, amylizzle, ancientpower, ArchPigeon, Arendian, arimah, Arteben, AruMoon, as334, AsikKEsel, asperger-sind, avghdev, AzzyIsNotHere, BananaFlambe, Baptr0b0t, BasedUser, beck-thompson, BellwetherLogic, BGare, BingoJohnson-zz, BismarckShuffle, Bixkitts, Blackern5000, Blazeror, Boaz1111, BobdaBiscuit, brainfood1183, Brandon-Huu, Bright0, brndd, BubblegumBlue, BYONDFuckery, c4llv07e, CakeQ, Callmore, CaptainSqrBeard, Carbonhell, casperr04, CatTheSystem, Centronias, chairbender, Charlese2, Cheackraze, cheesePizza2, Chief-Engineer, chromiumboy, Chronophylos, clement-or, Clyybber, Cojoke-dot, ColdAutumnRain, collinlunn, ComicIronic, coolmankid12345, corentt, crazybrain23, creadth, CrigCrag, Crotalus, CrudeWax, CrzyPotato, Cyberboss, d34d10cc, Daemon, daerSeebaer, dahnte, dakamakat, dakimasu, DamianX, DangerRevolution, daniel-cr, Darkenson, DawBla, dch-GH, Deahaka, DEATHB4DEFEAT, DeathCamel58, deathride58, DebugOk, Decappi, deepdarkdepths, deepy, Delete69, deltanedas, DerbyX, DmitriyMX, Doctor-Cpu, DoctorBeard, DogZeroX, dontbetank, Doru991, DoubleRiceEddiedd, DoutorWhite, DrMelon, DrSmugleaf, drteaspoon420, DTanxxx, DubiousDoggo, Duddino, Dutch-VanDerLinde, Easypoller, eclips_e, EdenTheLiznerd, EEASAS, Efruit, ElectroSR, elthundercloud, Emisse, EmoGarbage404, Endecc, enumerate0, eoineoineoin, ERORR404V1, Errant-4, estacaoespacialpirata, exincore, exp111, Fahasor, FairlySadPanda, ficcialfaint, Fildrance, FillerVK, Fishfish458, Flareguy, FluffiestFloof, FluidRock, FoLoKe, fooberticus, Fortune117, freeman2651, Froffy025, Fromoriss, FungiFellow, GalacticChimp, gbasood, Geekyhobo, Genkail, Ghagliiarghii, Git-Nivrak, github-actions[bot], gituhabu, GNF54, Golinth, GoodWheatley, Gotimanga, graevy, GreyMario, gusxyz, Gyrandola, h3half, Hanzdegloker, Hardly3D, harikattar, Hebiman, Henry12116, HerCoyote23, Hmeister-real, HoofedEar, hord-brayden, hubismal, Hugal31, Huxellberger, Hyenh, iacore, IamVelcroboy, icekot8, igorsaux, ike709, Illiux, Ilya246, IlyaElDunaev, Injazz, Insineer, IntegerTempest, Interrobang01, IProduceWidgets, ItsMeThom, j-giebel, Jackal298, Jackrost, jamessimo, janekvap, Jark255, JerryImMouse, Jessetriesagain, jessicamaybe, Jezithyr, jicksaw, JiimBob, JoeHammad1844, joelhed, JohnGinnane, johnku1, joshepvodka, jproads, Jrpl, juliangiebel, JustArt1m, JustCone14, JustinTether, JustinTrotter, Kadeo64, KaiShibaa, kalane15, kalanosh, KEEYNy, Keikiru, Kelrak, kerisargit, keronshb, KIBORG04, Killerqu00, KingFroozy, kira-er, Kit0vras, KittenColony, Kmc2000, Ko4ergaPunk, komunre, koteq, Krunklehorn, Kukutis96513, kxvvv, Lamrr, LankLTE, lapatison, Leander-0, LetterN, Level10Cybermancer, lever1209, LightVillet, liltenhead, LittleBuilderJane, Lomcastar, LordCarve, LordEclipse, luckyshotpictures, LudwigVonChesterfield, Lukasz825700516, lunarcomets, luringens, lvvova1, lzimann, lzk228, M3739, MACMAN2003, Macoron, MagnusCrowe, ManelNavola, Mangohydra, matthst, Matz05, MehimoNemo, MeltedPixel, MemeProof, Menshin, Mephisto72, Mervill, metalgearsloth, mhamsterr, MilenVolf, Minty642, Mirino97, mirrorcult, MishaUnity, MisterMecky, Mith-randalf, MjrLandWhale, Moneyl, Moomoobeef, moony, Morb0, Mr0maks, musicmanvr, Myakot, Myctai, N3X15, Nairodian, Naive817, NakataRin, namespace-Memory, NickPowers43, nikthechampiongr, Nimfar11, Nirnael, nmajask, nok-ko, Nopey, notafet, notquitehadouken, noudoit, noverd, nuke-haus, NULL882, OctoRocket, OldDanceJacket, onoira, osjarw, Owai-Seek, pali6, Pangogie, patrikturi, PaulRitter, Peptide90, peptron1, Phantom-Lily, pigeonpeas, pissdemon, PixelTheKermit, PJB3005, Plykiya, pofitlo, pointer-to-null, PolterTzi, PoorMansDreams, potato1234x, ProfanedBane, PrPleGoo, ps3moira, Psychpsyo, psykzz, PuroSlavKing, PursuitInAshes, quatre, QuietlyWhisper, qwerltaz, Radosvik, Radrark, Rainbeon, Rainfey, Rane, ravage123321, rbertoche, Redict, RedlineTriad, RednoWCirabrab, RemberBM, RemieRichards, RemTim, rene-descartes2021, RiceMar1244, RieBi, Rinkashikachi, Rockdtben, rolfero, rosieposieeee, Saakra, Samsterious, SaphireLattice, ScalyChimp, scrato, Scribbles0, Serkket, SethLafuente, ShadowCommander, Shadowtheprotogen546, shampunj, SignalWalker, Simyon264, SirDragooon, Sirionaut, siyengar04, Skarletto, Skrauz, Skyedra, SlamBamActionman, slarticodefast, Slava0135, snebl, Snowni, snowsignal, SonicHDC, SoulFN, SoulSloth, SpaceManiac, SpeltIncorrectyl, SphiraI, spoogemonster, ssdaniel24, Stealthbomber16, StrawberryMoses, Subversionary, superjj18, SweptWasTaken, Szunti, takemysoult, TaralGit, Tayrtahn, tday93, TekuNut, TemporalOroboros, tentekal, Terraspark4941, tgrkzus, thatrandomcanadianguy, TheArturZh, theashtronaut, thedraccx, themias, Theomund, theOperand, TheShuEd, TimrodDX, Titian3, tkdrg, tmtmtl30, TokenStyle, tom-leys, tomasalves8, Tomeno, tosatur, TsjipTsjip, Tunguso4ka, TurboTrackerss14, Tyler-IN, Tyzemol, UbaserB, UBlueberry, UKNOWH, Uriende, UristMcDorf, Vaaankas, Varen, VasilisThePikachu, veliebm, Veritius, Vermidia, Verslebas, VigersRay, Visne, volundr-, Vordenburg, vulppine, wafehling, waylon531, weaversam8, Willhelm53, wixoaGit, WlarusFromDaSpace, wrexbe, xRiriq, yathxyz, Ygg01, YotaXP, YuriyKiss, zach-hill, Zandario, Zap527, Zealith-Gamer, ZelteHonor, zerorulez, zionnBE, zlodo, ZNixian, ZoldorfTheWizard, Zumorica, Zymem +0x6273, 2013HORSEMEATSCANDAL, 20kdc, 21Melkuu, 4dplanner, 612git, 778b, Ablankmann, Acruid, actioninja, adamsong, Admiral-Obvious-001, Adrian16199, Aerocrux, Aexxie, Agoichi, Ahion, AJCM-git, AjexRose, Alekshhh, AlexMorgan3817, AlexUmAndXGabriel08X, AlmondFlour, AlphaQwerty, Altoids1, amylizzle, ancientpower, ArchPigeon, Arendian, arimah, Arteben, AruMoon, as334, AsikKEsel, asperger-sind, avghdev, AzzyIsNotHere, BananaFlambe, Baptr0b0t, BasedUser, beck-thompson, BellwetherLogic, BGare, BingoJohnson-zz, BismarckShuffle, Bixkitts, Blackern5000, Blazeror, Boaz1111, BobdaBiscuit, brainfood1183, Brandon-Huu, Bright0, brndd, BubblegumBlue, BYONDFuckery, c4llv07e, CakeQ, Callmore, CaptainSqrBeard, Carbonhell, casperr04, CatTheSystem, Centronias, chairbender, Charlese2, Cheackraze, cheesePizza2, Chief-Engineer, chromiumboy, Chronophylos, clement-or, Clyybber, Cojoke-dot, ColdAutumnRain, collinlunn, ComicIronic, coolmankid12345, corentt, crazybrain23, creadth, CrigCrag, Crotalus, CrudeWax, CrzyPotato, Cyberboss, d34d10cc, Daemon, daerSeebaer, dahnte, dakamakat, dakimasu, DamianX, DangerRevolution, daniel-cr, Darkenson, DawBla, dch-GH, Deahaka, DEATHB4DEFEAT, DeathCamel58, deathride58, DebugOk, Decappi, deepdarkdepths, deepy, Delete69, deltanedas, DerbyX, DmitriyMX, Doctor-Cpu, DoctorBeard, DogZeroX, dontbetank, Doru991, DoubleRiceEddiedd, DoutorWhite, DrMelon, DrSmugleaf, drteaspoon420, DTanxxx, DubiousDoggo, Duddino, Dutch-VanDerLinde, Easypoller, eclips_e, EdenTheLiznerd, EEASAS, Efruit, ElectroSR, elthundercloud, Emisse, EmoGarbage404, Endecc, enumerate0, eoineoineoin, ERORR404V1, Errant-4, estacaoespacialpirata, exincore, exp111, Fahasor, FairlySadPanda, ficcialfaint, Fildrance, FillerVK, Fishfish458, Flareguy, FluffiestFloof, FluidRock, FoLoKe, fooberticus, Fortune117, freeman2651, Froffy025, Fromoriss, FungiFellow, GalacticChimp, gbasood, Geekyhobo, Genkail, Ghagliiarghii, Git-Nivrak, github-actions[bot], gituhabu, GNF54, Golinth, GoodWheatley, Gotimanga, graevy, GreyMario, gusxyz, Gyrandola, h3half, Hanzdegloker, Hardly3D, harikattar, Hebiman, Henry12116, HerCoyote23, hitomishirichan, Hmeister-real, HoofedEar, hord-brayden, hubismal, Hugal31, Huxellberger, Hyenh, iacore, IamVelcroboy, icekot8, igorsaux, ike709, Illiux, Ilya246, IlyaElDunaev, Injazz, Insineer, IntegerTempest, Interrobang01, IProduceWidgets, ItsMeThom, j-giebel, Jackal298, Jackrost, jamessimo, janekvap, Jark255, JerryImMouse, Jessetriesagain, jessicamaybe, Jezithyr, jicksaw, JiimBob, JoeHammad1844, joelhed, JohnGinnane, johnku1, joshepvodka, jproads, Jrpl, juliangiebel, JustArt1m, JustCone14, JustinTether, JustinTrotter, K-Dynamic, Kadeo64, KaiShibaa, kalane15, kalanosh, KEEYNy, Keikiru, Kelrak, kerisargit, keronshb, KIBORG04, Killerqu00, KingFroozy, kira-er, Kit0vras, KittenColony, Kmc2000, Ko4ergaPunk, komunre, koteq, Krunklehorn, Kukutis96513, kxvvv, Lamrr, LankLTE, lapatison, Leander-0, LetterN, Level10Cybermancer, lever1209, LightVillet, liltenhead, LittleBuilderJane, Lomcastar, LordCarve, LordEclipse, luckyshotpictures, LudwigVonChesterfield, Lukasz825700516, lunarcomets, luringens, lvvova1, lzimann, lzk228, M3739, MACMAN2003, Macoron, MagnusCrowe, ManelNavola, Mangohydra, matthst, Matz05, MehimoNemo, MeltedPixel, MemeProof, Menshin, Mervill, metalgearsloth, mhamsterr, MilenVolf, Minty642, Mirino97, mirrorcult, MishaUnity, MisterMecky, Mith-randalf, Moneyl, Moomoobeef, moony, Morb0, Mr0maks, musicmanvr, Myakot, Myctai, N3X15, Nairodian, Naive817, namespace-Memory, NickPowers43, nikthechampiongr, Nimfar11, Nirnael, nmajask, nok-ko, Nopey, notafet, notquitehadouken, noudoit, noverd, nuke-haus, NULL882, OctoRocket, OldDanceJacket, onoira, osjarw, Owai-Seek, pali6, Pangogie, patrikturi, PaulRitter, Peptide90, peptron1, Phantom-Lily, pigeonpeas, pissdemon, PixelTheKermit, PJB3005, Plykiya, pofitlo, pointer-to-null, PolterTzi, PoorMansDreams, potato1234x, ProfanedBane, PrPleGoo, ps3moira, Psychpsyo, psykzz, PuroSlavKing, PursuitInAshes, quatre, QuietlyWhisper, qwerltaz, Radosvik, Radrark, Rainbeon, Rainfey, Rane, ravage123321, rbertoche, Redict, RedlineTriad, RednoWCirabrab, RemberBM, RemieRichards, RemTim, rene-descartes2021, RiceMar1244, RieBi, Rinkashikachi, Rockdtben, rolfero, rosieposieeee, Saakra, Samsterious, SaphireLattice, ScalyChimp, scrato, Scribbles0, Serkket, SethLafuente, ShadowCommander, Shadowtheprotogen546, shampunj, SignalWalker, Simyon264, SirDragooon, Sirionaut, siyengar04, Skarletto, Skrauz, Skyedra, SlamBamActionman, slarticodefast, Slava0135, snebl, Snowni, snowsignal, SonicHDC, SoulFN, SoulSloth, SpaceManiac, SpeltIncorrectyl, SphiraI, spoogemonster, ssdaniel24, Stealthbomber16, StrawberryMoses, Subversionary, superjj18, SweptWasTaken, Szunti, takemysoult, TaralGit, Tayrtahn, tday93, TekuNut, TemporalOroboros, tentekal, Terraspark4941, tgrkzus, thatrandomcanadianguy, TheArturZh, theashtronaut, thedraccx, themias, Theomund, theOperand, TheShuEd, TimrodDX, Titian3, tkdrg, tmtmtl30, TokenStyle, tom-leys, tomasalves8, Tomeno, tosatur, TsjipTsjip, Tunguso4ka, TurboTrackerss14, Tyler-IN, Tyzemol, UbaserB, UBlueberry, UKNOWH, Uriende, UristMcDorf, Vaaankas, Varen, VasilisThePikachu, veliebm, Veritius, Vermidia, Verslebas, VigersRay, Visne, volundr-, Vordenburg, vulppine, wafehling, waylon531, weaversam8, Willhelm53, wixoaGit, WlarusFromDaSpace, wrexbe, xRiriq, yathxyz, Ygg01, YotaXP, YuriyKiss, zach-hill, Zandario, Zap527, Zealith-Gamer, ZelteHonor, zerorulez, zionnBE, zlodo, ZNixian, ZoldorfTheWizard, Zumorica, Zymem From be09520aa578478c153c0de33a39d80830660676 Mon Sep 17 00:00:00 2001 From: Plykiya <58439124+Plykiya@users.noreply.github.com> Date: Sat, 27 Apr 2024 19:25:19 -0700 Subject: [PATCH 032/110] Reduce selection of traitor max from 12 to 8 (#27415) TOO MANY DAMN SYNDIES Co-authored-by: Plykiya --- Resources/Prototypes/GameRules/roundstart.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/Prototypes/GameRules/roundstart.yml b/Resources/Prototypes/GameRules/roundstart.yml index 8218e1bdd1..d87e7ccbe7 100644 --- a/Resources/Prototypes/GameRules/roundstart.yml +++ b/Resources/Prototypes/GameRules/roundstart.yml @@ -147,7 +147,7 @@ - type: AntagSelection definitions: - prefRoles: [ Traitor ] - max: 12 + max: 8 playerRatio: 10 lateJoinAdditional: true mindComponents: From 599a66230b1a4e90210558fbb1da9f733d20d5f7 Mon Sep 17 00:00:00 2001 From: PJBot Date: Sun, 28 Apr 2024 02:26:25 +0000 Subject: [PATCH 033/110] Automatic changelog update --- Resources/Changelog/Changelog.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 4c24cd63d4..71e4704e9e 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: PotentiallyTom - changes: - - message: Gave guidebooks to the 4 learner roles - type: Tweak - id: 5967 - time: '2024-02-19T18:54:02.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/25388 - author: jamessimo changes: - message: vending machine UI improved @@ -3859,3 +3852,10 @@ id: 6466 time: '2024-04-27T19:10:47.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/27404 +- author: Plykiya + changes: + - message: Max amount of traitors dropped from 12 to 8. + type: Tweak + id: 6467 + time: '2024-04-28T02:25:19.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/27415 From f079e77554c326b89fb5f24d64b5947dbfc93126 Mon Sep 17 00:00:00 2001 From: Ed <96445749+TheShuEd@users.noreply.github.com> Date: Sun, 28 Apr 2024 05:35:40 +0300 Subject: [PATCH 034/110] Displacement maps now works on any layers (#27405) * try * pipupi * Update ClientClothingSystem.cs * Update vox.yml * Update ClientClothingSystem.cs --- Content.Client/Clothing/ClientClothingSystem.cs | 5 ++++- Content.Shared/Inventory/InventoryComponent.cs | 4 +++- Resources/Prototypes/Entities/Mobs/Player/vox.yml | 4 ++-- Resources/Prototypes/Entities/Mobs/Species/vox.yml | 1 - 4 files changed, 9 insertions(+), 5 deletions(-) diff --git a/Content.Client/Clothing/ClientClothingSystem.cs b/Content.Client/Clothing/ClientClothingSystem.cs index 6d13bf4eda..dd69521f48 100644 --- a/Content.Client/Clothing/ClientClothingSystem.cs +++ b/Content.Client/Clothing/ClientClothingSystem.cs @@ -307,13 +307,16 @@ public sealed class ClientClothingSystem : ClothingSystem // Sprite layer redactor when // Sprite "redactor" just a week away. if (slot == Jumpsuit) - layerData.Shader ??= inventory.JumpsuitShader; + layerData.Shader ??= "StencilDraw"; sprite.LayerSetData(index, layerData); layer.Offset += slotDef.Offset; if (displacementData != null) { + if (displacementData.ShaderOverride != null) + sprite.LayerSetShader(index, displacementData.ShaderOverride); + var displacementKey = $"{key}-displacement"; if (!revealedLayers.Add(displacementKey)) { diff --git a/Content.Shared/Inventory/InventoryComponent.cs b/Content.Shared/Inventory/InventoryComponent.cs index dde48a62aa..02b3a5b258 100644 --- a/Content.Shared/Inventory/InventoryComponent.cs +++ b/Content.Shared/Inventory/InventoryComponent.cs @@ -13,7 +13,6 @@ public sealed partial class InventoryComponent : Component [DataField("speciesId")] public string? SpeciesId { get; set; } - [DataField] public string JumpsuitShader = "StencilDraw"; [DataField] public Dictionary Displacements = []; public SlotDefinition[] Slots = Array.Empty(); @@ -24,5 +23,8 @@ public sealed partial class InventoryComponent : Component { [DataField(required: true)] public PrototypeLayerData Layer = default!; + + [DataField] + public string? ShaderOverride = "DisplacedStencilDraw"; } } diff --git a/Resources/Prototypes/Entities/Mobs/Player/vox.yml b/Resources/Prototypes/Entities/Mobs/Player/vox.yml index de1e3da2be..e7ad39d731 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/vox.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/vox.yml @@ -1,5 +1,5 @@ - type: entity save: false - name: Vox + name: Urist McVox parent: BaseMobVox - id: MobVox + id: MobVox \ No newline at end of file diff --git a/Resources/Prototypes/Entities/Mobs/Species/vox.yml b/Resources/Prototypes/Entities/Mobs/Species/vox.yml index c79947f15c..ec8035563b 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/vox.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/vox.yml @@ -16,7 +16,6 @@ #- type: VoxAccent # Not yet coded - type: Inventory speciesId: vox - jumpsuitShader: DisplacedStencilDraw displacements: jumpsuit: layer: From a478446e5a11fa73935aaf0d4d6863e8b4bdd77a Mon Sep 17 00:00:00 2001 From: Plykiya <58439124+Plykiya@users.noreply.github.com> Date: Sat, 27 Apr 2024 20:02:56 -0700 Subject: [PATCH 035/110] Printable Special and Empty Mags for Autolathes (#27396) * Change emag recipes to print mags instead of single ammo * Get rid of useless single ammo printing recipes * Add in submachine gun mags * missing magazine shotgun beanbag in nonlethal research * Sort lathes that use ammo crafting recipes alphabetically --------- Co-authored-by: Plykiya --- .../Entities/Structures/Machines/lathe.yml | 216 ++++++++++-------- .../Prototypes/Recipes/Lathes/security.yml | 158 ------------- Resources/Prototypes/Research/arsenal.yml | 1 + 3 files changed, 118 insertions(+), 257 deletions(-) diff --git a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml index 318f880ab9..b237fc88ed 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml @@ -163,44 +163,55 @@ - ClothingHeadHatWelding - type: EmagLatheRecipes emagStaticRecipes: - - CartridgePistol - - CartridgeMagnum - - ShellShotgun - - ShellShotgunFlare - - ShellTranquilizer - - CartridgeLightRifle - - CartridgeRifle - - MagazineBoxPistol - - MagazineBoxMagnum - - MagazineBoxRifle - - MagazineBoxLightRifle - - GrenadeBlast + - BoxLethalshot + - BoxShotgunFlare + - GrenadeBlast + - MagazineBoxLightRifle + - MagazineBoxMagnum + - MagazineBoxPistol + - MagazineBoxRifle + - MagazineLightRifle + - MagazineLightRifleEmpty + - MagazinePistol + - MagazinePistolEmpty + - MagazinePistolSubMachineGun + - MagazinePistolSubMachineGunEmpty + - MagazineRifle + - MagazineRifleEmpty + - MagazineShotgun + - MagazineShotgunEmpty + - ShellTranquilizer + - SpeedLoaderMagnum + - SpeedLoaderMagnumEmpty emagDynamicRecipes: - - ShellShotgunBeanbag - - ShellShotgunIncendiary - - CartridgePistolIncendiary - - CartridgeMagnumIncendiary - - CartridgeLightRifleIncendiary - - CartridgeRifleIncendiary - - MagazineBoxPistolIncendiary - - MagazineBoxMagnumIncendiary - - MagazineBoxLightRifleIncendiary - - MagazineBoxRifleIncendiary - - ShellShotgunUranium - - CartridgePistolUranium - - CartridgeMagnumUranium - - CartridgeLightRifleUranium - - CartridgeRifleUranium - - MagazineBoxPistolUranium - - MagazineBoxMagnumUranium - - MagazineBoxLightRifleUranium - - MagazineBoxRifleUranium - - PowerCageSmall - - PowerCageMedium - - PowerCageHigh - - MagazineGrenadeEmpty + - BoxBeanbag + - BoxShotgunIncendiary + - BoxShotgunUranium - GrenadeEMP - GrenadeFlash + - MagazineBoxLightRifleIncendiary + - MagazineBoxLightRifleUranium + - MagazineBoxMagnumIncendiary + - MagazineBoxMagnumUranium + - MagazineBoxPistolIncendiary + - MagazineBoxPistolUranium + - MagazineBoxRifleIncendiary + - MagazineBoxRifleUranium + - MagazineGrenadeEmpty + - MagazineLightRifleIncendiary + - MagazineLightRifleUranium + - MagazinePistolIncendiary + - MagazinePistolUranium + - MagazineRifleIncendiary + - MagazineRifleUranium + - MagazineShotgunBeanbag + - MagazineShotgunIncendiary + - MagazineShotgunIncendiary + - PowerCageHigh + - PowerCageMedium + - PowerCageSmall + - SpeedLoaderMagnumIncendiary + - SpeedLoaderMagnumUranium - type: entity id: AutolatheHyperConvection @@ -639,16 +650,24 @@ idleState: icon runningState: icon staticRecipes: - - ClothingEyesHudSecurity - - Flash - - Handcuffs - - Zipties - - Stunbaton - - ForensicPad - - RiotShield - - BoxShotgunSlug - BoxLethalshot - BoxShotgunFlare + - BoxShotgunPractice + - BoxShotgunSlug + - ClothingEyesHudSecurity + - Flash + - ForensicPad + - Handcuffs + - MagazineBoxLightRifle + - MagazineBoxLightRiflePractice + - MagazineBoxMagnum + - MagazineBoxMagnumPractice + - MagazineBoxPistol + - MagazineBoxPistolPractice + - MagazineBoxRifle + - MagazineBoxRiflePractice + - MagazineLightRifle + - MagazineLightRifleEmpty - MagazinePistol - MagazinePistolEmpty - MagazinePistolSubMachineGun @@ -657,58 +676,57 @@ - MagazinePistolSubMachineGunTopMountedEmpty - MagazineRifle - MagazineRifleEmpty - - MagazineLightRifle - - MagazineLightRifleEmpty - - MagazineShotgunEmpty - MagazineShotgun + - MagazineShotgunEmpty - MagazineShotgunSlug - - MagazineBoxPistol - - MagazineBoxMagnum - - MagazineBoxRifle - - MagazineBoxLightRifle + - RiotShield - SpeedLoaderMagnum - SpeedLoaderMagnumEmpty + - Stunbaton + - TargetClown - TargetHuman - TargetSyndicate - - TargetClown - - MagazineBoxLightRiflePractice - - MagazineBoxMagnumPractice - - MagazineBoxPistolPractice - - MagazineBoxRiflePractice - - WeaponLaserCarbinePractice - WeaponDisablerPractice - - BoxShotgunPractice + - WeaponLaserCarbinePractice + - Zipties dynamicRecipes: - - MagazineLightRifleIncendiary - - SpeedLoaderMagnumIncendiary - - MagazinePistolIncendiary - - MagazineRifleIncendiary - - MagazineShotgunIncendiary - - MagazineLightRifleUranium - - SpeedLoaderMagnumUranium - - MagazinePistolUranium - - MagazineRifleUranium - - MagazineShotgunBeanbag - - ShellTranquilizer + - BoxBeanbag + - BoxShotgunIncendiary + - BoxShotgunUranium - ExplosivePayload - FlashPayload - - HoloprojectorSecurity - - MagazineBoxLightRifleIncendiary - - MagazineBoxMagnumIncendiary - - MagazineBoxPistolIncendiary - - MagazineBoxRifleIncendiary - - BoxShotgunIncendiary - - MagazineBoxLightRifleUranium - - MagazineBoxMagnumUranium - - MagazineBoxPistolUranium - - MagazineBoxRifleUranium - - BoxShotgunUranium - - BoxBeanbag - - MagazineGrenadeEmpty - GrenadeEMP - GrenadeFlash + - HoloprojectorSecurity + - MagazineBoxLightRifleIncendiary + - MagazineBoxLightRifleUranium + - MagazineBoxMagnumIncendiary + - MagazineBoxMagnumUranium + - MagazineBoxPistolIncendiary + - MagazineBoxPistolUranium + - MagazineBoxRifleIncendiary + - MagazineBoxRifleUranium + - MagazineGrenadeEmpty + - MagazineLightRifleIncendiary + - MagazineLightRifleUranium + - MagazinePistolIncendiary + - MagazinePistolUranium + - MagazineRifleIncendiary + - MagazineRifleUranium + - MagazineShotgunBeanbag + - MagazineShotgunIncendiary + - PowerCageHigh + - PowerCageMedium + - PowerCageSmall + - ShellTranquilizer + - ShuttleGunDusterCircuitboard + - ShuttleGunFriendshipCircuitboard + - ShuttleGunPerforatorCircuitboard + - ShuttleGunSvalinnMachineGunCircuitboard - Signaller - SignalTrigger + - SpeedLoaderMagnumIncendiary + - SpeedLoaderMagnumUranium - TelescopicShield - TimerTrigger - Truncheon @@ -719,13 +737,6 @@ - WeaponLaserCannon - WeaponLaserCarbine - WeaponXrayCannon - - PowerCageSmall - - PowerCageMedium - - PowerCageHigh - - ShuttleGunSvalinnMachineGunCircuitboard - - ShuttleGunPerforatorCircuitboard - - ShuttleGunFriendshipCircuitboard - - ShuttleGunDusterCircuitboard - type: MaterialStorage whitelist: tags: @@ -758,18 +769,25 @@ idleState: icon runningState: icon staticRecipes: - - CartridgePistol - - CartridgeMagnum - - ShellShotgun - - ShellShotgunSlug - - ShellShotgunFlare - - ShellTranquilizer - - CartridgeLightRifle - - CartridgeRifle - - MagazineBoxPistol - - MagazineBoxMagnum - - MagazineBoxRifle + - BoxLethalshot + - BoxShotgunFlare + - BoxShotgunSlug - MagazineBoxLightRifle + - MagazineBoxMagnum + - MagazineBoxPistol + - MagazineBoxRifle + - MagazineLightRifle + - MagazineLightRifleEmpty + - MagazinePistol + - MagazinePistolEmpty + - MagazineRifle + - MagazineRifleEmpty + - MagazineShotgun + - MagazineShotgunEmpty + - MagazineShotgunSlug + - ShellTranquilizer + - SpeedLoaderMagnum + - SpeedLoaderMagnumEmpty - type: MaterialStorage whitelist: tags: diff --git a/Resources/Prototypes/Recipes/Lathes/security.yml b/Resources/Prototypes/Recipes/Lathes/security.yml index f5d538618b..bad38fc99f 100644 --- a/Resources/Prototypes/Recipes/Lathes/security.yml +++ b/Resources/Prototypes/Recipes/Lathes/security.yml @@ -138,71 +138,6 @@ Plastic: 200 Steel: 100 -- type: latheRecipe - id: ShellShotgunBeanbag - result: ShellShotgunBeanbag - category: Ammo - completetime: 2 - materials: - Plastic: 15 - Steel: 10 - -- type: latheRecipe - id: CartridgeRifle - result: CartridgeRifle - category: Ammo - completetime: 2 - materials: - Steel: 15 - -- type: latheRecipe - id: CartridgePistol - result: CartridgePistol - category: Ammo - completetime: 2 - materials: - Steel: 10 - -- type: latheRecipe - id: ShellShotgun - result: ShellShotgun - category: Ammo - completetime: 2 - materials: - Steel: 20 - -- type: latheRecipe - id: ShellShotgunSlug - result: ShellShotgunSlug - completetime: 2 - materials: - Steel: 25 - -- type: latheRecipe - id: CartridgeMagnum - result: CartridgeMagnum - category: Ammo - completetime: 2 - materials: - Steel: 20 - -- type: latheRecipe - id: CartridgeLightRifle - result: CartridgeLightRifle - category: Ammo - completetime: 2 - materials: - Steel: 30 - -- type: latheRecipe - id: ShellShotgunFlare - result: ShellShotgunFlare - category: Ammo - completetime: 2 - materials: - Plastic: 20 - Steel: 5 - - type: latheRecipe id: ShellTranquilizer result: ShellTranquilizer @@ -546,46 +481,6 @@ Steel: 100 Plastic: 190 -- type: latheRecipe - id: ShellShotgunIncendiary - result: ShellShotgunIncendiary - category: Ammo - completetime: 2 - materials: - Plastic: 20 - -- type: latheRecipe - id: CartridgePistolIncendiary - result: CartridgePistolIncendiary - category: Ammo - completetime: 2 - materials: - Plastic: 10 - -- type: latheRecipe - id: CartridgeMagnumIncendiary - result: CartridgeMagnumIncendiary - category: Ammo - completetime: 2 - materials: - Plastic: 20 - -- type: latheRecipe - id: CartridgeLightRifleIncendiary - result: CartridgeLightRifleIncendiary - category: Ammo - completetime: 2 - materials: - Plastic: 15 - -- type: latheRecipe - id: CartridgeRifleIncendiary - result: CartridgeRifleIncendiary - category: Ammo - completetime: 2 - materials: - Plastic: 15 - - type: latheRecipe id: MagazineBoxPistolIncendiary result: MagazineBoxPistolIncendiary @@ -636,14 +531,6 @@ Steel: 80 Plastic: 320 -- type: latheRecipe - id: ShellShotgunPractice - result: ShellShotgunPractice - category: Ammo - completetime: 2 - materials: - Plastic: 20 - - type: latheRecipe id: MagazineBoxPistolPractice result: MagazineBoxPistolPractice @@ -704,51 +591,6 @@ materials: Steel: 80 -- type: latheRecipe - id: ShellShotgunUranium - result: ShellShotgunUranium - category: Ammo - completetime: 2 - materials: - Plastic: 20 - Uranium: 15 - -- type: latheRecipe - id: CartridgePistolUranium - result: CartridgePistolUranium - category: Ammo - completetime: 2 - materials: - Plastic: 5 - Uranium: 10 - -- type: latheRecipe - id: CartridgeMagnumUranium - result: CartridgeMagnumUranium - category: Ammo - completetime: 2 - materials: - Plastic: 20 - Uranium: 15 - -- type: latheRecipe - id: CartridgeLightRifleUranium - result: CartridgeLightRifleUranium - category: Ammo - completetime: 2 - materials: - Plastic: 10 - Uranium: 10 - -- type: latheRecipe - id: CartridgeRifleUranium - result: CartridgeRifleUranium - category: Ammo - completetime: 2 - materials: - Plastic: 10 - Uranium: 10 - - type: latheRecipe id: MagazineBoxPistolUranium result: MagazineBoxPistolUranium diff --git a/Resources/Prototypes/Research/arsenal.yml b/Resources/Prototypes/Research/arsenal.yml index 264a7df109..2daa3fdcc0 100644 --- a/Resources/Prototypes/Research/arsenal.yml +++ b/Resources/Prototypes/Research/arsenal.yml @@ -57,6 +57,7 @@ tier: 1 cost: 5000 recipeUnlocks: + - MagazineShotgunBeanbag - ShellTranquilizer - BoxBeanbag - WeaponDisabler From 49d8fe33a3503d89b78e56131f817816804d1c6c Mon Sep 17 00:00:00 2001 From: PJBot Date: Sun, 28 Apr 2024 03:04:02 +0000 Subject: [PATCH 036/110] Automatic changelog update --- Resources/Changelog/Changelog.yml | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 71e4704e9e..5ded0c6d51 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: jamessimo - changes: - - message: vending machine UI improved - type: Tweak - id: 5968 - time: '2024-02-19T22:18:27.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/25377 - author: marbow changes: - message: Moths can now eat plushies and with a distinctive sound! @@ -3859,3 +3852,13 @@ id: 6467 time: '2024-04-28T02:25:19.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/27415 +- author: Plykiya + changes: + - message: The emagged autolathe now has recipes for ammunition boxes and pre-filled + magazines of every type of ammo. + type: Add + - message: You can now print empty magazines at the emagged autolathe. + type: Add + id: 6468 + time: '2024-04-28T03:02:56.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/27396 From a7ad59f6babb3df03859a4550223b93ef6e65a34 Mon Sep 17 00:00:00 2001 From: icekot8 <93311212+icekot8@users.noreply.github.com> Date: Sun, 28 Apr 2024 06:19:33 +0300 Subject: [PATCH 037/110] Portable Recharger: Arsenal T3 (#26655) * sys * item * ahm. * Update Content.Server/Power/Components/ChargerComponent.cs --------- Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> Co-authored-by: metalgearsloth --- .../Power/Components/ChargerComponent.cs | 12 +++ .../Power/EntitySystems/ChargerSystem.cs | 27 +++-- .../Objects/Power/portable_recharger.yml | 35 +++++++ .../Entities/Structures/Machines/lathe.yml | 8 ++ .../Prototypes/Recipes/Lathes/security.yml | 11 +++ Resources/Prototypes/Research/arsenal.yml | 1 + .../charging-equipped-BACKPACK.png | Bin 0 -> 1886 bytes .../portable_recharger.rsi/charging-unlit.png | Bin 0 -> 539 bytes .../Power/portable_recharger.rsi/charging.png | Bin 0 -> 964 bytes .../portable_recharger.rsi/inhand-left.png | Bin 0 -> 714 bytes .../portable_recharger.rsi/inhand-right.png | Bin 0 -> 735 bytes .../Power/portable_recharger.rsi/meta.json | 92 ++++++++++++++++++ 12 files changed, 179 insertions(+), 7 deletions(-) create mode 100644 Resources/Prototypes/Entities/Objects/Power/portable_recharger.yml create mode 100644 Resources/Textures/Objects/Power/portable_recharger.rsi/charging-equipped-BACKPACK.png create mode 100644 Resources/Textures/Objects/Power/portable_recharger.rsi/charging-unlit.png create mode 100644 Resources/Textures/Objects/Power/portable_recharger.rsi/charging.png create mode 100644 Resources/Textures/Objects/Power/portable_recharger.rsi/inhand-left.png create mode 100644 Resources/Textures/Objects/Power/portable_recharger.rsi/inhand-right.png create mode 100644 Resources/Textures/Objects/Power/portable_recharger.rsi/meta.json diff --git a/Content.Server/Power/Components/ChargerComponent.cs b/Content.Server/Power/Components/ChargerComponent.cs index af4498f01b..e45ded071c 100644 --- a/Content.Server/Power/Components/ChargerComponent.cs +++ b/Content.Server/Power/Components/ChargerComponent.cs @@ -1,5 +1,10 @@ using Content.Shared.Power; using Content.Shared.Whitelist; +using Content.Shared.Power; +using Content.Shared.Whitelist; +using Robust.Shared.GameObjects; +using Robust.Shared.Serialization.Manager.Attributes; +using Robust.Shared.ViewVariables; namespace Content.Server.Power.Components { @@ -26,5 +31,12 @@ namespace Content.Server.Power.Components /// [DataField("whitelist")] public EntityWhitelist? Whitelist; + + /// + /// Indicates whether the charger is portable and thus subject to EMP effects + /// and bypasses checks for transform, anchored, and ApcPowerReceiverComponent. + /// + [DataField] + public bool Portable = false; } } diff --git a/Content.Server/Power/EntitySystems/ChargerSystem.cs b/Content.Server/Power/EntitySystems/ChargerSystem.cs index db16dfa008..1ff13a24f2 100644 --- a/Content.Server/Power/EntitySystems/ChargerSystem.cs +++ b/Content.Server/Power/EntitySystems/ChargerSystem.cs @@ -1,8 +1,10 @@ using Content.Server.Power.Components; +using Content.Server.Emp; using Content.Server.PowerCell; using Content.Shared.Examine; using Content.Shared.Power; using Content.Shared.PowerCell.Components; +using Content.Shared.Emp; using JetBrains.Annotations; using Robust.Shared.Containers; using System.Diagnostics.CodeAnalysis; @@ -28,6 +30,8 @@ internal sealed class ChargerSystem : EntitySystem SubscribeLocalEvent(OnInsertAttempt); SubscribeLocalEvent(OnEntityStorageInsertAttempt); SubscribeLocalEvent(OnChargerExamine); + + SubscribeLocalEvent(OnEmpPulse); } private void OnStartup(EntityUid uid, ChargerComponent component, ComponentStartup args) @@ -158,18 +162,27 @@ internal sealed class ChargerSystem : EntitySystem } } + private void OnEmpPulse(EntityUid uid, ChargerComponent component, ref EmpPulseEvent args) + { + args.Affected = true; + args.Disabled = true; + } + private CellChargerStatus GetStatus(EntityUid uid, ChargerComponent component) { - if (!TryComp(uid, out TransformComponent? transformComponent)) - return CellChargerStatus.Off; - - if (!transformComponent.Anchored) - return CellChargerStatus.Off; + if (!component.Portable) + { + if (!TryComp(uid, out TransformComponent? transformComponent) || !transformComponent.Anchored) + return CellChargerStatus.Off; + } if (!TryComp(uid, out ApcPowerReceiverComponent? apcPowerReceiverComponent)) return CellChargerStatus.Off; - if (!apcPowerReceiverComponent.Powered) + if (!component.Portable && !apcPowerReceiverComponent.Powered) + return CellChargerStatus.Off; + + if (HasComp(uid)) return CellChargerStatus.Off; if (!_container.TryGetContainer(uid, component.SlotId, out var container)) @@ -186,7 +199,7 @@ internal sealed class ChargerSystem : EntitySystem return CellChargerStatus.Charging; } - + private void TransferPower(EntityUid uid, EntityUid targetEntity, ChargerComponent component, float frameTime) { if (!TryComp(uid, out ApcPowerReceiverComponent? receiverComponent)) diff --git a/Resources/Prototypes/Entities/Objects/Power/portable_recharger.yml b/Resources/Prototypes/Entities/Objects/Power/portable_recharger.yml new file mode 100644 index 0000000000..35dfa0881f --- /dev/null +++ b/Resources/Prototypes/Entities/Objects/Power/portable_recharger.yml @@ -0,0 +1,35 @@ +- type: entity + parent: Clothing + id: PortableRecharger + name: portable recharger + description: High-tech recharger adapted for portability + components: + - type: Item + size: Huge + - type: Sprite + sprite: Objects/Power/portable_recharger.rsi + state: charging + - type: Clothing + equippedPrefix: charging + quickEquip: false + slots: + - back + - type: Charger + slotId: charger_slot + portable: true + - type: PowerChargerVisuals + - type: ApcPowerReceiver + needsPower: false + powerLoad: 0 + - type: StaticPrice + price: 500 + - type: Tag + tags: [] # ignore "WhitelistChameleon" tag + - type: ItemSlots + slots: + charger_slot: + ejectOnInteract: true + whitelist: + components: + - HitscanBatteryAmmoProvider + - ProjectileBatteryAmmoProvider \ No newline at end of file diff --git a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml index b237fc88ed..2a080a85db 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml @@ -737,6 +737,14 @@ - WeaponLaserCannon - WeaponLaserCarbine - WeaponXrayCannon + - PowerCageSmall + - PowerCageMedium + - PowerCageHigh + - ShuttleGunSvalinnMachineGunCircuitboard + - ShuttleGunPerforatorCircuitboard + - ShuttleGunFriendshipCircuitboard + - ShuttleGunDusterCircuitboard + - PortableRecharger - type: MaterialStorage whitelist: tags: diff --git a/Resources/Prototypes/Recipes/Lathes/security.yml b/Resources/Prototypes/Recipes/Lathes/security.yml index bad38fc99f..2ab8e18372 100644 --- a/Resources/Prototypes/Recipes/Lathes/security.yml +++ b/Resources/Prototypes/Recipes/Lathes/security.yml @@ -690,3 +690,14 @@ Steel: 150 Plastic: 100 Glass: 20 + +- type: latheRecipe + id: PortableRecharger + result: PortableRecharger + completetime: 15 + materials: + Steel: 2000 + Uranium: 2000 + Plastic: 1000 + Plasma: 500 + Glass: 500 \ No newline at end of file diff --git a/Resources/Prototypes/Research/arsenal.yml b/Resources/Prototypes/Research/arsenal.yml index 2daa3fdcc0..6c0e94e9e5 100644 --- a/Resources/Prototypes/Research/arsenal.yml +++ b/Resources/Prototypes/Research/arsenal.yml @@ -175,6 +175,7 @@ cost: 15000 recipeUnlocks: - WeaponAdvancedLaser + - PortableRecharger - type: technology id: ExperimentalBatteryAmmo diff --git a/Resources/Textures/Objects/Power/portable_recharger.rsi/charging-equipped-BACKPACK.png b/Resources/Textures/Objects/Power/portable_recharger.rsi/charging-equipped-BACKPACK.png new file mode 100644 index 0000000000000000000000000000000000000000..500ad05704c3ded83aede5fecae9f7f1759de52c GIT binary patch literal 1886 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Power/portable_recharger.rsi/inhand-left.png b/Resources/Textures/Objects/Power/portable_recharger.rsi/inhand-left.png new file mode 100644 index 0000000000000000000000000000000000000000..e3bc6d829938325b918ac8fab750417871000c32 GIT binary patch literal 714 zcmV;*0yX`KP)R5B&!`wH>mhQyW4{Gdj)KQWNOX z!7&{og44C(WTPSSmi0O~XPlBBjr^2S`aYWwJe}UXI|=Rqj4{R-V~jDz7-NjFw2Gy& zab3>e3@If(ynjbB-bEx8;3)-12>8B_^R0bETH}0cAHMIy z5dwE5=Ppu8^ezL`8%-Sb`^cgao>ByHgupaOa1w@4&sH%3pjK9K@-f6TN#F>PD(+}w z7fv^iy`Ku6Qi!ys816MB6<}Yo-e^LXhX4Rw9-`i8&XcpO;qf4sW*OawqyiRaMh%Ly z3K$fD+z8VoNj-Coi*0;eU#A%2tw{HP!-F0s-8?*{FzM!Tc+kUIp^$11Xtg^Am{r$l z7|yS$ktATPPym2=soNQ!CJEv=p5K3{*E>4^ka`pS6J%@3&d`suv-!HWFP`@EWp{l? z2z>eciG2N&`~9b9*`FZlIE*pI7-Nhv#u#IaF~Gz!y|-`Re0z@3#x6zJ z8(r%~SXl*d)r%0O>qQ_*z<3E`eFa+W zjyb(5LwijXdl7Xn0_kVaKHQ$`XMwsGfppzggPO4e%W_Z1q8EY0W1iz@)r-LXH@^UK wfjx{vM}FA=000hUSV?A0O#mtY000O800000007cclK=n!07*qoM6N<$f|=1fBLDyZ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Power/portable_recharger.rsi/inhand-right.png b/Resources/Textures/Objects/Power/portable_recharger.rsi/inhand-right.png new file mode 100644 index 0000000000000000000000000000000000000000..8c65192231786eb7ba0ce60946dbaa616961c963 GIT binary patch literal 735 zcmV<50wDc~P)@fJhzCTqwd2sSokaqZREe?vPL+zxGrZ0Xd7kdTZ{Gd3g? zx^!?n#RR8o!^uWN$}C$d?Kwp;%a&?)x(m(oLD*omR#%RcSg%y@`psLlUa7#564hEgvqflk zx=LdV02Z2OE@(j44P^)sc%maECKD&{{4|(lOF2^F#miTCcJdglN5|OT+YOy#UNNWfHkk$~5W@}!YtkM|6lTr!I z>&?hx0}J3tIloCUFz+? literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Power/portable_recharger.rsi/meta.json b/Resources/Textures/Objects/Power/portable_recharger.rsi/meta.json new file mode 100644 index 0000000000..794f491bdb --- /dev/null +++ b/Resources/Textures/Objects/Power/portable_recharger.rsi/meta.json @@ -0,0 +1,92 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Sprited by Lomovar", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "charging", + "delays": [ + [ + 0.3, + 0.3, + 0.3, + 0.3, + 0.3, + 0.3 + ] + ] + }, + { + "name": "charging-equipped-BACKPACK", + "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, + 0.3, + 0.3, + 0.3, + 0.3 + ], + [ + 0.3, + 0.3, + 0.3, + 0.3, + 0.3, + 0.3, + 0.3, + 0.3 + ] + ] + }, + { + "name": "charging-unlit", + "delays": [ + [ + 0.3, + 0.3, + 0.3, + 0.3, + 0.3, + 0.3 + ] + ] + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + } + ] +} + From 1c78f60bc3ae209ffcac8b18f0e5e1b6b7f43489 Mon Sep 17 00:00:00 2001 From: PJBot Date: Sun, 28 Apr 2024 03:20:39 +0000 Subject: [PATCH 038/110] Automatic changelog update --- Resources/Changelog/Changelog.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 5ded0c6d51..ca090e7539 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: marbow - changes: - - message: Moths can now eat plushies and with a distinctive sound! - type: Add - id: 5969 - time: '2024-02-19T22:35:35.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/25382 - author: ArchPigeon changes: - message: Liquid Tritium can now be used as a chem in flamethrowers @@ -3862,3 +3855,10 @@ id: 6468 time: '2024-04-28T03:02:56.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/27396 +- author: icekot8 + changes: + - message: T3 Portable Microfusion Weaponry research now have a portable charger + type: Add + id: 6469 + time: '2024-04-28T03:19:33.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/26655 From a4504e2fefbead6b21a19f93a43148d6a9e6ebab Mon Sep 17 00:00:00 2001 From: osjarw <62134478+osjarw@users.noreply.github.com> Date: Sun, 28 Apr 2024 07:19:30 +0300 Subject: [PATCH 039/110] Fix handlabeler/utility belt misprediction (#26660) * Fix handlabeler/utility belt misprediction * Partly moved HandLabelerSystem to shared And cleaned up HandLabelerComponent * WIP format the files so later commits look clearer Doesn't change individual code lines, but may move functions to another file * WIP some more code movement * Hand Labeler is now mostly predicted Only the UI isn't * WIP: Formatting and moved stuff * Using componentstates for prediction correction * review * Update label on label change * Don't overwrite label while editing --------- Co-authored-by: metalgearsloth Co-authored-by: ElectroJr --- .../Labels/EntitySystems/HandLabelerSystem.cs | 18 +++ .../UI/HandLabelerBoundUserInterface.cs | 29 ++-- .../Labels/UI/HandLabelerWindow.xaml.cs | 29 +++- .../Label/Components/HandLabelerComponent.cs | 19 --- .../Labels/Label/HandLabelerSystem.cs | 116 +--------------- Content.Server/Labels/Label/LabelSystem.cs | 2 +- .../Labels/Components/HandLabelerComponent.cs | 30 ++++ .../EntitySystems/SharedHandLabelerSystem.cs | 129 ++++++++++++++++++ .../Labels/EntitySystems/SharedLabelSystem.cs | 2 + Content.Shared/Labels/LabelEvents.cs | 66 ++++----- 10 files changed, 250 insertions(+), 190 deletions(-) create mode 100644 Content.Client/Labels/EntitySystems/HandLabelerSystem.cs delete mode 100644 Content.Server/Labels/Label/Components/HandLabelerComponent.cs create mode 100644 Content.Shared/Labels/Components/HandLabelerComponent.cs create mode 100644 Content.Shared/Labels/EntitySystems/SharedHandLabelerSystem.cs diff --git a/Content.Client/Labels/EntitySystems/HandLabelerSystem.cs b/Content.Client/Labels/EntitySystems/HandLabelerSystem.cs new file mode 100644 index 0000000000..e956014b2e --- /dev/null +++ b/Content.Client/Labels/EntitySystems/HandLabelerSystem.cs @@ -0,0 +1,18 @@ +using Content.Client.Labels.UI; +using Content.Shared.Labels; +using Content.Shared.Labels.Components; +using Content.Shared.Labels.EntitySystems; + +namespace Content.Client.Labels.EntitySystems; + +public sealed class HandLabelerSystem : SharedHandLabelerSystem +{ + protected override void UpdateUI(Entity ent) + { + if (UserInterfaceSystem.TryGetOpenUi(ent.Owner, HandLabelerUiKey.Key, out var bui) + && bui is HandLabelerBoundUserInterface cBui) + { + cBui.Reload(); + } + } +} diff --git a/Content.Client/Labels/UI/HandLabelerBoundUserInterface.cs b/Content.Client/Labels/UI/HandLabelerBoundUserInterface.cs index d393c43f93..555f1ff09e 100644 --- a/Content.Client/Labels/UI/HandLabelerBoundUserInterface.cs +++ b/Content.Client/Labels/UI/HandLabelerBoundUserInterface.cs @@ -1,4 +1,5 @@ using Content.Shared.Labels; +using Content.Shared.Labels.Components; using Robust.Client.GameObjects; namespace Content.Client.Labels.UI @@ -8,11 +9,14 @@ namespace Content.Client.Labels.UI /// public sealed class HandLabelerBoundUserInterface : BoundUserInterface { + [Dependency] private readonly IEntityManager _entManager = default!; + [ViewVariables] private HandLabelerWindow? _window; public HandLabelerBoundUserInterface(EntityUid owner, Enum uiKey) : base(owner, uiKey) { + IoCManager.InjectDependencies(this); } protected override void Open() @@ -27,24 +31,25 @@ namespace Content.Client.Labels.UI _window.OnClose += Close; _window.OnLabelChanged += OnLabelChanged; + Reload(); } private void OnLabelChanged(string newLabel) { - SendMessage(new HandLabelerLabelChangedMessage(newLabel)); - } - - /// - /// Update the UI state based on server-sent info - /// - /// - protected override void UpdateState(BoundUserInterfaceState state) - { - base.UpdateState(state); - if (_window == null || state is not HandLabelerBoundUserInterfaceState cast) + // Focus moment + if (_entManager.TryGetComponent(Owner, out HandLabelerComponent? labeler) && + labeler.AssignedLabel.Equals(newLabel)) return; - _window.SetCurrentLabel(cast.CurrentLabel); + SendPredictedMessage(new HandLabelerLabelChangedMessage(newLabel)); + } + + public void Reload() + { + if (_window == null || !_entManager.TryGetComponent(Owner, out HandLabelerComponent? component)) + return; + + _window.SetCurrentLabel(component.AssignedLabel); } protected override void Dispose(bool disposing) diff --git a/Content.Client/Labels/UI/HandLabelerWindow.xaml.cs b/Content.Client/Labels/UI/HandLabelerWindow.xaml.cs index 7706c31f85..6482cdc1cc 100644 --- a/Content.Client/Labels/UI/HandLabelerWindow.xaml.cs +++ b/Content.Client/Labels/UI/HandLabelerWindow.xaml.cs @@ -9,17 +9,40 @@ namespace Content.Client.Labels.UI { public event Action? OnLabelChanged; + /// + /// Is the user currently entering text into the control? + /// + private bool _focused; + // TODO LineEdit Make this a bool on the LineEdit control + + private string _label = string.Empty; + public HandLabelerWindow() { RobustXamlLoader.Load(this); - LabelLineEdit.OnTextEntered += e => OnLabelChanged?.Invoke(e.Text); - LabelLineEdit.OnFocusExit += e => OnLabelChanged?.Invoke(e.Text); + LabelLineEdit.OnTextEntered += e => + { + _label = e.Text; + OnLabelChanged?.Invoke(_label); + }; + + LabelLineEdit.OnFocusEnter += _ => _focused = true; + LabelLineEdit.OnFocusExit += _ => + { + _focused = false; + LabelLineEdit.Text = _label; + }; } public void SetCurrentLabel(string label) { - LabelLineEdit.Text = label; + if (label == _label) + return; + + _label = label; + if (!_focused) + LabelLineEdit.Text = label; } } } diff --git a/Content.Server/Labels/Label/Components/HandLabelerComponent.cs b/Content.Server/Labels/Label/Components/HandLabelerComponent.cs deleted file mode 100644 index 6c96cada9e..0000000000 --- a/Content.Server/Labels/Label/Components/HandLabelerComponent.cs +++ /dev/null @@ -1,19 +0,0 @@ -using Content.Shared.Whitelist; - -namespace Content.Server.Labels.Components -{ - [RegisterComponent] - public sealed partial class HandLabelerComponent : Component - { - [ViewVariables(VVAccess.ReadWrite)] - [DataField("assignedLabel")] - public string AssignedLabel { get; set; } = string.Empty; - - [ViewVariables(VVAccess.ReadWrite)] - [DataField("maxLabelChars")] - public int MaxLabelChars { get; set; } = 50; - - [DataField("whitelist")] - public EntityWhitelist Whitelist = new(); - } -} diff --git a/Content.Server/Labels/Label/HandLabelerSystem.cs b/Content.Server/Labels/Label/HandLabelerSystem.cs index 84c41b0db5..d52bf26046 100644 --- a/Content.Server/Labels/Label/HandLabelerSystem.cs +++ b/Content.Server/Labels/Label/HandLabelerSystem.cs @@ -1,116 +1,8 @@ -using Content.Server.Labels.Components; -using Content.Server.UserInterface; -using Content.Server.Popups; -using Content.Shared.Administration.Logs; -using Content.Shared.Database; -using Content.Shared.Interaction; -using Content.Shared.Labels; -using Content.Shared.Verbs; -using JetBrains.Annotations; -using Robust.Server.GameObjects; -using Robust.Shared.Player; +using Content.Shared.Labels.EntitySystems; -namespace Content.Server.Labels +namespace Content.Server.Labels.Label; + +public sealed class HandLabelerSystem : SharedHandLabelerSystem { - /// - /// A hand labeler system that lets an object apply labels to objects with the . - /// - [UsedImplicitly] - public sealed class HandLabelerSystem : EntitySystem - { - [Dependency] private readonly UserInterfaceSystem _userInterfaceSystem = default!; - [Dependency] private readonly PopupSystem _popupSystem = default!; - [Dependency] private readonly LabelSystem _labelSystem = default!; - [Dependency] private readonly ISharedAdminLogManager _adminLogger = default!; - public override void Initialize() - { - base.Initialize(); - - SubscribeLocalEvent(AfterInteractOn); - SubscribeLocalEvent>(OnUtilityVerb); - // Bound UI subscriptions - SubscribeLocalEvent(OnHandLabelerLabelChanged); - } - - private void OnUtilityVerb(EntityUid uid, HandLabelerComponent handLabeler, GetVerbsEvent args) - { - if (args.Target is not { Valid: true } target || !handLabeler.Whitelist.IsValid(target) || !args.CanAccess) - return; - - string labelerText = handLabeler.AssignedLabel == string.Empty ? Loc.GetString("hand-labeler-remove-label-text") : Loc.GetString("hand-labeler-add-label-text"); - - var verb = new UtilityVerb() - { - Act = () => - { - AddLabelTo(uid, handLabeler, target, out var result); - if (result != null) - _popupSystem.PopupEntity(result, args.User, args.User); - }, - Text = labelerText - }; - - args.Verbs.Add(verb); - } - - private void AfterInteractOn(EntityUid uid, HandLabelerComponent handLabeler, AfterInteractEvent args) - { - if (args.Target is not {Valid: true} target || !handLabeler.Whitelist.IsValid(target) || !args.CanReach) - return; - - AddLabelTo(uid, handLabeler, target, out string? result); - if (result == null) - return; - _popupSystem.PopupEntity(result, args.User, args.User); - - // Log labeling - _adminLogger.Add(LogType.Action, LogImpact.Low, - $"{ToPrettyString(args.User):user} labeled {ToPrettyString(target):target} with {ToPrettyString(uid):labeler}"); - } - - private void AddLabelTo(EntityUid uid, HandLabelerComponent? handLabeler, EntityUid target, out string? result) - { - if (!Resolve(uid, ref handLabeler)) - { - result = null; - return; - } - - if (handLabeler.AssignedLabel == string.Empty) - { - _labelSystem.Label(target, null); - result = Loc.GetString("hand-labeler-successfully-removed"); - return; - } - - _labelSystem.Label(target, handLabeler.AssignedLabel); - result = Loc.GetString("hand-labeler-successfully-applied"); - } - - private void OnHandLabelerLabelChanged(EntityUid uid, HandLabelerComponent handLabeler, HandLabelerLabelChangedMessage args) - { - if (args.Actor is not {Valid: true} player) - return; - - var label = args.Label.Trim(); - handLabeler.AssignedLabel = label.Substring(0, Math.Min(handLabeler.MaxLabelChars, label.Length)); - DirtyUI(uid, handLabeler); - - // Log label change - _adminLogger.Add(LogType.Action, LogImpact.Low, - $"{ToPrettyString(player):user} set {ToPrettyString(uid):labeler} to apply label \"{handLabeler.AssignedLabel}\""); - - } - - private void DirtyUI(EntityUid uid, - HandLabelerComponent? handLabeler = null) - { - if (!Resolve(uid, ref handLabeler)) - return; - - _userInterfaceSystem.SetUiState(uid, HandLabelerUiKey.Key, - new HandLabelerBoundUserInterfaceState(handLabeler.AssignedLabel)); - } - } } diff --git a/Content.Server/Labels/Label/LabelSystem.cs b/Content.Server/Labels/Label/LabelSystem.cs index dd4ba1f718..aee2abe7ab 100644 --- a/Content.Server/Labels/Label/LabelSystem.cs +++ b/Content.Server/Labels/Label/LabelSystem.cs @@ -50,7 +50,7 @@ namespace Content.Server.Labels /// intended label text (null to remove) /// label component for resolve /// metadata component for resolve - public void Label(EntityUid uid, string? text, MetaDataComponent? metadata = null, LabelComponent? label = null) + public override void Label(EntityUid uid, string? text, MetaDataComponent? metadata = null, LabelComponent? label = null) { if (!Resolve(uid, ref metadata)) return; diff --git a/Content.Shared/Labels/Components/HandLabelerComponent.cs b/Content.Shared/Labels/Components/HandLabelerComponent.cs new file mode 100644 index 0000000000..8e2cb7b067 --- /dev/null +++ b/Content.Shared/Labels/Components/HandLabelerComponent.cs @@ -0,0 +1,30 @@ +using Content.Shared.Labels.EntitySystems; +using Content.Shared.Whitelist; +using Robust.Shared.GameStates; +using Robust.Shared.Serialization; + +namespace Content.Shared.Labels.Components; + +[RegisterComponent, NetworkedComponent] +[Access(typeof(SharedHandLabelerSystem))] +public sealed partial class HandLabelerComponent : Component +{ + [ViewVariables(VVAccess.ReadWrite), Access(Other = AccessPermissions.ReadWriteExecute)] + [DataField] + public string AssignedLabel = string.Empty; + + [ViewVariables(VVAccess.ReadWrite)] + [DataField] + public int MaxLabelChars = 50; + + [DataField] + public EntityWhitelist Whitelist = new(); +} + +[Serializable, NetSerializable] +public sealed class HandLabelerComponentState(string assignedLabel) : IComponentState +{ + public string AssignedLabel = assignedLabel; + + public int MaxLabelChars; +} diff --git a/Content.Shared/Labels/EntitySystems/SharedHandLabelerSystem.cs b/Content.Shared/Labels/EntitySystems/SharedHandLabelerSystem.cs new file mode 100644 index 0000000000..7dbeee3e77 --- /dev/null +++ b/Content.Shared/Labels/EntitySystems/SharedHandLabelerSystem.cs @@ -0,0 +1,129 @@ +using Content.Shared.Administration.Logs; +using Content.Shared.Database; +using Content.Shared.Interaction; +using Content.Shared.Labels.Components; +using Content.Shared.Popups; +using Content.Shared.Verbs; +using Robust.Shared.GameStates; +using Robust.Shared.Network; + +namespace Content.Shared.Labels.EntitySystems; + +public abstract class SharedHandLabelerSystem : EntitySystem +{ + [Dependency] protected readonly SharedUserInterfaceSystem UserInterfaceSystem = default!; + [Dependency] private readonly SharedPopupSystem _popupSystem = default!; + [Dependency] private readonly SharedLabelSystem _labelSystem = default!; + [Dependency] private readonly ISharedAdminLogManager _adminLogger = default!; + [Dependency] private readonly INetManager _netManager = default!; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(AfterInteractOn); + SubscribeLocalEvent>(OnUtilityVerb); + // Bound UI subscriptions + SubscribeLocalEvent(OnHandLabelerLabelChanged); + SubscribeLocalEvent(OnGetState); + SubscribeLocalEvent(OnHandleState); + } + + private void OnGetState(Entity ent, ref ComponentGetState args) + { + args.State = new HandLabelerComponentState(ent.Comp.AssignedLabel) + { + MaxLabelChars = ent.Comp.MaxLabelChars, + }; + } + + private void OnHandleState(Entity ent, ref ComponentHandleState args) + { + if (args.Current is not HandLabelerComponentState state) + return; + + ent.Comp.MaxLabelChars = state.MaxLabelChars; + + if (ent.Comp.AssignedLabel == state.AssignedLabel) + return; + + ent.Comp.AssignedLabel = state.AssignedLabel; + UpdateUI(ent); + } + + protected virtual void UpdateUI(Entity ent) + { + } + + private void AddLabelTo(EntityUid uid, HandLabelerComponent? handLabeler, EntityUid target, out string? result) + { + if (!Resolve(uid, ref handLabeler)) + { + result = null; + return; + } + + if (handLabeler.AssignedLabel == string.Empty) + { + if (_netManager.IsServer) + _labelSystem.Label(target, null); + result = Loc.GetString("hand-labeler-successfully-removed"); + return; + } + if (_netManager.IsServer) + _labelSystem.Label(target, handLabeler.AssignedLabel); + result = Loc.GetString("hand-labeler-successfully-applied"); + } + + private void OnUtilityVerb(EntityUid uid, HandLabelerComponent handLabeler, GetVerbsEvent args) + { + if (args.Target is not { Valid: true } target || !handLabeler.Whitelist.IsValid(target) || !args.CanAccess) + return; + + var labelerText = handLabeler.AssignedLabel == string.Empty ? Loc.GetString("hand-labeler-remove-label-text") : Loc.GetString("hand-labeler-add-label-text"); + + var verb = new UtilityVerb() + { + Act = () => + { + Labeling(uid, target, args.User, handLabeler); + }, + Text = labelerText + }; + + args.Verbs.Add(verb); + } + + private void AfterInteractOn(EntityUid uid, HandLabelerComponent handLabeler, AfterInteractEvent args) + { + if (args.Target is not { Valid: true } target || !handLabeler.Whitelist.IsValid(target) || !args.CanReach) + return; + + Labeling(uid, target, args.User, handLabeler); + } + + private void Labeling(EntityUid uid, EntityUid target, EntityUid User, HandLabelerComponent handLabeler) + { + AddLabelTo(uid, handLabeler, target, out var result); + if (result == null) + return; + + _popupSystem.PopupClient(result, User, User); + + // Log labeling + _adminLogger.Add(LogType.Action, LogImpact.Low, + $"{ToPrettyString(User):user} labeled {ToPrettyString(target):target} with {ToPrettyString(uid):labeler}"); + } + + private void OnHandLabelerLabelChanged(EntityUid uid, HandLabelerComponent handLabeler, HandLabelerLabelChangedMessage args) + { + var label = args.Label.Trim(); + handLabeler.AssignedLabel = label[..Math.Min(handLabeler.MaxLabelChars, label.Length)]; + UpdateUI((uid, handLabeler)); + Dirty(uid, handLabeler); + + // Log label change + _adminLogger.Add(LogType.Action, LogImpact.Low, + $"{ToPrettyString(args.Actor):user} set {ToPrettyString(uid):labeler} to apply label \"{handLabeler.AssignedLabel}\""); + } +} diff --git a/Content.Shared/Labels/EntitySystems/SharedLabelSystem.cs b/Content.Shared/Labels/EntitySystems/SharedLabelSystem.cs index a8239e7867..1189bb46d0 100644 --- a/Content.Shared/Labels/EntitySystems/SharedLabelSystem.cs +++ b/Content.Shared/Labels/EntitySystems/SharedLabelSystem.cs @@ -13,6 +13,8 @@ public abstract partial class SharedLabelSystem : EntitySystem SubscribeLocalEvent(OnExamine); } + public virtual void Label(EntityUid uid, string? text, MetaDataComponent? metadata = null, LabelComponent? label = null){} + private void OnExamine(EntityUid uid, LabelComponent? label, ExaminedEvent args) { if (!Resolve(uid, ref label)) diff --git a/Content.Shared/Labels/LabelEvents.cs b/Content.Shared/Labels/LabelEvents.cs index 9f00354af2..62e9c15c85 100644 --- a/Content.Shared/Labels/LabelEvents.cs +++ b/Content.Shared/Labels/LabelEvents.cs @@ -1,47 +1,27 @@ using Robust.Shared.Serialization; -namespace Content.Shared.Labels +namespace Content.Shared.Labels; + +/// +/// Key representing which is currently open. +/// Useful when there are multiple UI for an object. Here it's future-proofing only. +/// +[Serializable, NetSerializable] +public enum HandLabelerUiKey { - /// - /// Key representing which is currently open. - /// Useful when there are multiple UI for an object. Here it's future-proofing only. - /// - [Serializable, NetSerializable] - public enum HandLabelerUiKey - { - Key, - } - - [Serializable, NetSerializable] - public enum PaperLabelVisuals : byte - { - Layer, - HasLabel, - LabelType - } - - /// - /// Represents a state that can be sent to the client - /// - [Serializable, NetSerializable] - public sealed class HandLabelerBoundUserInterfaceState : BoundUserInterfaceState - { - public string CurrentLabel { get; } - - public HandLabelerBoundUserInterfaceState(string currentLabel) - { - CurrentLabel = currentLabel; - } - } - - [Serializable, NetSerializable] - public sealed class HandLabelerLabelChangedMessage : BoundUserInterfaceMessage - { - public string Label { get; } - - public HandLabelerLabelChangedMessage(string label) - { - Label = label; - } - } + Key, +} + +[Serializable, NetSerializable] +public enum PaperLabelVisuals : byte +{ + Layer, + HasLabel, + LabelType +} + +[Serializable, NetSerializable] +public sealed class HandLabelerLabelChangedMessage(string label) : BoundUserInterfaceMessage +{ + public string Label { get; } = label; } From 09379a5c772925fb6a92b4176b0b0597bcae5194 Mon Sep 17 00:00:00 2001 From: PJBot Date: Sun, 28 Apr 2024 04:20:36 +0000 Subject: [PATCH 040/110] Automatic changelog update --- Resources/Changelog/Changelog.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index ca090e7539..2f9c148b8e 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: ArchPigeon - changes: - - message: Liquid Tritium can now be used as a chem in flamethrowers - type: Add - id: 5970 - time: '2024-02-19T22:37:45.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/25281 - author: ElectroJr changes: - message: Fix actions sometimes disappearing. @@ -3862,3 +3855,10 @@ id: 6469 time: '2024-04-28T03:19:33.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/26655 +- author: osjarw + changes: + - message: Putting a hand labeler in a belt is now predicted correctly. + type: Fix + id: 6470 + time: '2024-04-28T04:19:30.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/26660 From d66ad739ee89ea6a73176d0c3b9f108b4eb94445 Mon Sep 17 00:00:00 2001 From: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> Date: Sun, 28 Apr 2024 14:30:39 +1000 Subject: [PATCH 041/110] Fix godmode serialization (#27427) IDK --- Resources/Maps/Salvage/small-3.yml | 692 ----------------------------- 1 file changed, 692 deletions(-) diff --git a/Resources/Maps/Salvage/small-3.yml b/Resources/Maps/Salvage/small-3.yml index 3982d2d33b..4158388e8e 100644 --- a/Resources/Maps/Salvage/small-3.yml +++ b/Resources/Maps/Salvage/small-3.yml @@ -926,176 +926,132 @@ entities: rot: 3.141592653589793 rad pos: 1.5,-10.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 4 components: - type: Transform rot: 3.141592653589793 rad pos: -6.5,5.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 6 components: - type: Transform rot: 3.141592653589793 rad pos: 0.5,6.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 7 components: - type: Transform rot: -1.5707963267948966 rad pos: -5.5,8.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 14 components: - type: Transform rot: -1.5707963267948966 rad pos: -0.5,6.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 17 components: - type: Transform rot: -1.5707963267948966 rad pos: 3.5,6.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 24 components: - type: Transform rot: -1.5707963267948966 rad pos: 3.5,5.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 25 components: - type: Transform rot: 3.141592653589793 rad pos: 3.5,7.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 26 components: - type: Transform rot: 3.141592653589793 rad pos: 1.5,7.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 29 components: - type: Transform rot: 3.141592653589793 rad pos: -4.5,5.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 30 components: - type: Transform rot: -1.5707963267948966 rad pos: -7.5,6.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 31 components: - type: Transform rot: 3.141592653589793 rad pos: 2.5,7.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 37 components: - type: Transform rot: -1.5707963267948966 rad pos: 4.5,8.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 38 components: - type: Transform rot: 3.141592653589793 rad pos: 0.5,7.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 44 components: - type: Transform rot: -1.5707963267948966 rad pos: -3.5,6.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 48 components: - type: Transform rot: -1.5707963267948966 rad pos: -3.5,7.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 49 components: - type: Transform rot: -1.5707963267948966 rad pos: -6.5,6.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 50 components: - type: Transform rot: 3.141592653589793 rad pos: -5.5,5.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 51 components: - type: Transform rot: -1.5707963267948966 rad pos: -7.5,4.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 52 components: - type: Transform rot: -1.5707963267948966 rad pos: -7.5,5.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 53 components: - type: Transform rot: 3.141592653589793 rad pos: -7.5,4.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 66 components: - type: Transform rot: -1.5707963267948966 rad pos: -2.5,7.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 75 components: - type: Transform @@ -1108,8 +1064,6 @@ entities: rot: -1.5707963267948966 rad pos: -2.5,5.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 78 components: - type: Transform @@ -1122,144 +1076,108 @@ entities: rot: -1.5707963267948966 rad pos: -3.5,5.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 80 components: - type: Transform rot: -1.5707963267948966 rad pos: 3.5,7.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 97 components: - type: Transform rot: 3.141592653589793 rad pos: -6.5,7.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 101 components: - type: Transform rot: 3.141592653589793 rad pos: -7.5,7.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 105 components: - type: Transform rot: 3.141592653589793 rad pos: -0.5,6.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 106 components: - type: Transform rot: -1.5707963267948966 rad pos: -2.5,6.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 107 components: - type: Transform rot: 3.141592653589793 rad pos: 1.5,6.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 108 components: - type: Transform rot: -1.5707963267948966 rad pos: -1.5,8.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 110 components: - type: Transform rot: 3.141592653589793 rad pos: -2.5,7.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 112 components: - type: Transform rot: -1.5707963267948966 rad pos: -5.5,7.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 115 components: - type: Transform rot: -1.5707963267948966 rad pos: -3.5,8.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 116 components: - type: Transform rot: -1.5707963267948966 rad pos: -4.5,7.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 117 components: - type: Transform rot: -1.5707963267948966 rad pos: -4.5,6.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 118 components: - type: Transform rot: -1.5707963267948966 rad pos: -0.5,7.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 119 components: - type: Transform rot: -1.5707963267948966 rad pos: -7.5,7.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 120 components: - type: Transform rot: -1.5707963267948966 rad pos: 1.5,6.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 121 components: - type: Transform rot: 3.141592653589793 rad pos: 0.5,5.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 122 components: - type: Transform rot: -1.5707963267948966 rad pos: 0.5,5.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 123 components: - type: Transform @@ -1278,48 +1196,36 @@ entities: rot: -1.5707963267948966 rad pos: -1.5,5.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 126 components: - type: Transform rot: -1.5707963267948966 rad pos: -1.5,6.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 127 components: - type: Transform rot: 3.141592653589793 rad pos: -6.5,3.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 128 components: - type: Transform rot: 3.141592653589793 rad pos: -5.5,3.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 129 components: - type: Transform rot: 3.141592653589793 rad pos: -4.5,3.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 130 components: - type: Transform rot: 3.141592653589793 rad pos: -3.5,3.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 131 components: - type: Transform @@ -1332,88 +1238,66 @@ entities: rot: 3.141592653589793 rad pos: -1.5,3.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 133 components: - type: Transform rot: 3.141592653589793 rad pos: -2.5,3.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 134 components: - type: Transform rot: -1.5707963267948966 rad pos: -0.5,3.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 135 components: - type: Transform rot: -1.5707963267948966 rad pos: -0.5,2.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 136 components: - type: Transform rot: 3.141592653589793 rad pos: -0.5,2.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 137 components: - type: Transform rot: 3.141592653589793 rad pos: -0.5,1.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 138 components: - type: Transform rot: 3.141592653589793 rad pos: 0.5,2.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 139 components: - type: Transform rot: 3.141592653589793 rad pos: 1.5,2.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 140 components: - type: Transform rot: 3.141592653589793 rad pos: 0.5,3.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 141 components: - type: Transform rot: 3.141592653589793 rad pos: 1.5,3.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 142 components: - type: Transform rot: 3.141592653589793 rad pos: 2.5,3.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 143 components: - type: Transform @@ -1444,40 +1328,30 @@ entities: rot: -1.5707963267948966 rad pos: 2.5,5.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 148 components: - type: Transform rot: 3.141592653589793 rad pos: 2.5,2.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 149 components: - type: Transform rot: 3.141592653589793 rad pos: 3.5,2.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 150 components: - type: Transform rot: -1.5707963267948966 rad pos: 4.5,3.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 151 components: - type: Transform rot: 3.141592653589793 rad pos: 4.5,3.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 152 components: - type: Transform @@ -1490,112 +1364,84 @@ entities: rot: -1.5707963267948966 rad pos: 5.5,5.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 154 components: - type: Transform rot: 3.141592653589793 rad pos: 4.5,5.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 155 components: - type: Transform rot: -1.5707963267948966 rad pos: 4.5,6.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 156 components: - type: Transform rot: 3.141592653589793 rad pos: 4.5,6.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 157 components: - type: Transform rot: -1.5707963267948966 rad pos: 5.5,7.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 158 components: - type: Transform rot: 3.141592653589793 rad pos: 5.5,7.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 159 components: - type: Transform rot: 3.141592653589793 rad pos: 6.5,7.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 160 components: - type: Transform rot: -1.5707963267948966 rad pos: 8.5,8.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 161 components: - type: Transform rot: -1.5707963267948966 rad pos: 8.5,7.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 162 components: - type: Transform rot: 3.141592653589793 rad pos: 7.5,6.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 163 components: - type: Transform rot: 3.141592653589793 rad pos: 6.5,6.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 164 components: - type: Transform rot: -1.5707963267948966 rad pos: 6.5,6.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 165 components: - type: Transform rot: 3.141592653589793 rad pos: 6.5,5.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 166 components: - type: Transform rot: -1.5707963267948966 rad pos: 6.5,5.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 167 components: - type: Transform @@ -1614,56 +1460,42 @@ entities: rot: -1.5707963267948966 rad pos: 8.5,5.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 170 components: - type: Transform rot: -1.5707963267948966 rad pos: 8.5,6.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 171 components: - type: Transform rot: 3.141592653589793 rad pos: 9.5,7.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 172 components: - type: Transform rot: -1.5707963267948966 rad pos: 10.5,6.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 173 components: - type: Transform rot: -1.5707963267948966 rad pos: 10.5,7.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 174 components: - type: Transform rot: -1.5707963267948966 rad pos: 9.5,6.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 175 components: - type: Transform rot: -1.5707963267948966 rad pos: 9.5,7.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 176 components: - type: Transform @@ -1676,8 +1508,6 @@ entities: rot: -1.5707963267948966 rad pos: 9.5,5.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 178 components: - type: Transform @@ -1690,1104 +1520,828 @@ entities: rot: 3.141592653589793 rad pos: 9.5,3.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 180 components: - type: Transform rot: -1.5707963267948966 rad pos: 10.5,3.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 181 components: - type: Transform rot: 3.141592653589793 rad pos: 8.5,3.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 182 components: - type: Transform rot: 3.141592653589793 rad pos: 7.5,3.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 183 components: - type: Transform rot: 3.141592653589793 rad pos: 6.5,3.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 184 components: - type: Transform rot: 3.141592653589793 rad pos: 10.5,1.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 185 components: - type: Transform rot: 3.141592653589793 rad pos: 9.5,1.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 186 components: - type: Transform rot: -1.5707963267948966 rad pos: 9.5,2.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 187 components: - type: Transform rot: 3.141592653589793 rad pos: 8.5,2.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 188 components: - type: Transform rot: -1.5707963267948966 rad pos: 7.5,3.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 189 components: - type: Transform rot: -1.5707963267948966 rad pos: 7.5,2.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 190 components: - type: Transform rot: 3.141592653589793 rad pos: 7.5,1.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 191 components: - type: Transform rot: -1.5707963267948966 rad pos: 7.5,1.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 192 components: - type: Transform rot: -1.5707963267948966 rad pos: 7.5,0.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 193 components: - type: Transform rot: -1.5707963267948966 rad pos: 10.5,0.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 194 components: - type: Transform rot: -1.5707963267948966 rad pos: 10.5,-0.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 195 components: - type: Transform rot: -1.5707963267948966 rad pos: 10.5,-1.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 196 components: - type: Transform rot: 3.141592653589793 rad pos: 10.5,-2.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 197 components: - type: Transform rot: -1.5707963267948966 rad pos: 9.5,-1.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 198 components: - type: Transform rot: -1.5707963267948966 rad pos: 9.5,-0.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 199 components: - type: Transform rot: -1.5707963267948966 rad pos: 9.5,0.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 200 components: - type: Transform rot: 3.141592653589793 rad pos: 8.5,-2.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 201 components: - type: Transform rot: 3.141592653589793 rad pos: 8.5,0.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 202 components: - type: Transform rot: -1.5707963267948966 rad pos: 8.5,-0.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 203 components: - type: Transform rot: 3.141592653589793 rad pos: 7.5,-1.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 204 components: - type: Transform rot: -1.5707963267948966 rad pos: 8.5,0.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 205 components: - type: Transform rot: 3.141592653589793 rad pos: 6.5,-1.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 206 components: - type: Transform rot: -1.5707963267948966 rad pos: 7.5,-1.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 207 components: - type: Transform rot: -1.5707963267948966 rad pos: 6.5,-0.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 208 components: - type: Transform rot: -1.5707963267948966 rad pos: 6.5,0.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 209 components: - type: Transform rot: -1.5707963267948966 rad pos: 6.5,1.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 210 components: - type: Transform rot: -1.5707963267948966 rad pos: 6.5,2.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 211 components: - type: Transform rot: -1.5707963267948966 rad pos: 6.5,3.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 212 components: - type: Transform rot: 3.141592653589793 rad pos: 5.5,2.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 213 components: - type: Transform rot: 3.141592653589793 rad pos: 5.5,0.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 214 components: - type: Transform rot: 3.141592653589793 rad pos: 4.5,1.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 215 components: - type: Transform rot: -1.5707963267948966 rad pos: 4.5,1.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 216 components: - type: Transform rot: -1.5707963267948966 rad pos: 4.5,0.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 217 components: - type: Transform rot: 3.141592653589793 rad pos: 4.5,-0.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 218 components: - type: Transform rot: -1.5707963267948966 rad pos: 5.5,-0.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 219 components: - type: Transform rot: -1.5707963267948966 rad pos: 5.5,-1.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 220 components: - type: Transform rot: 3.141592653589793 rad pos: 5.5,-2.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 221 components: - type: Transform rot: -1.5707963267948966 rad pos: 6.5,-2.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 222 components: - type: Transform rot: 3.141592653589793 rad pos: 6.5,-3.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 223 components: - type: Transform rot: 3.141592653589793 rad pos: 7.5,-3.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 224 components: - type: Transform rot: 3.141592653589793 rad pos: 8.5,-3.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 225 components: - type: Transform rot: 3.141592653589793 rad pos: 9.5,-3.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 226 components: - type: Transform rot: 3.141592653589793 rad pos: -8.5,2.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 227 components: - type: Transform rot: 3.141592653589793 rad pos: -7.5,2.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 228 components: - type: Transform rot: 3.141592653589793 rad pos: -6.5,2.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 229 components: - type: Transform rot: 3.141592653589793 rad pos: -5.5,2.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 230 components: - type: Transform rot: -1.5707963267948966 rad pos: -4.5,2.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 231 components: - type: Transform rot: -1.5707963267948966 rad pos: -4.5,1.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 232 components: - type: Transform rot: -1.5707963267948966 rad pos: -4.5,0.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 233 components: - type: Transform rot: 3.141592653589793 rad pos: -4.5,0.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 234 components: - type: Transform rot: 3.141592653589793 rad pos: -3.5,0.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 235 components: - type: Transform rot: -1.5707963267948966 rad pos: -2.5,1.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 236 components: - type: Transform rot: -1.5707963267948966 rad pos: -2.5,0.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 237 components: - type: Transform rot: -1.5707963267948966 rad pos: -3.5,2.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 238 components: - type: Transform rot: 3.141592653589793 rad pos: -3.5,2.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 239 components: - type: Transform rot: 3.141592653589793 rad pos: -2.5,2.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 240 components: - type: Transform rot: -1.5707963267948966 rad pos: -1.5,2.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 241 components: - type: Transform rot: -1.5707963267948966 rad pos: -1.5,1.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 242 components: - type: Transform rot: -1.5707963267948966 rad pos: -1.5,0.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 243 components: - type: Transform rot: -1.5707963267948966 rad pos: -1.5,-0.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 244 components: - type: Transform rot: 3.141592653589793 rad pos: -2.5,-1.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 245 components: - type: Transform rot: 3.141592653589793 rad pos: -3.5,-1.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 246 components: - type: Transform rot: -1.5707963267948966 rad pos: -3.5,-0.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 247 components: - type: Transform rot: 3.141592653589793 rad pos: -4.5,-0.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 248 components: - type: Transform rot: 3.141592653589793 rad pos: -0.5,0.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 249 components: - type: Transform rot: -1.5707963267948966 rad pos: -0.5,0.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 250 components: - type: Transform rot: -1.5707963267948966 rad pos: -0.5,-0.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 251 components: - type: Transform rot: -1.5707963267948966 rad pos: -0.5,-1.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 252 components: - type: Transform rot: 3.141592653589793 rad pos: -1.5,-2.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 253 components: - type: Transform rot: -1.5707963267948966 rad pos: -1.5,-1.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 254 components: - type: Transform rot: 3.141592653589793 rad pos: -7.5,1.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 255 components: - type: Transform rot: 3.141592653589793 rad pos: -6.5,1.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 256 components: - type: Transform rot: -1.5707963267948966 rad pos: -5.5,1.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 257 components: - type: Transform rot: 3.141592653589793 rad pos: -6.5,0.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 258 components: - type: Transform rot: -1.5707963267948966 rad pos: -6.5,0.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 259 components: - type: Transform rot: 3.141592653589793 rad pos: -7.5,-0.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 260 components: - type: Transform rot: -1.5707963267948966 rad pos: -7.5,-0.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 261 components: - type: Transform rot: 3.141592653589793 rad pos: -8.5,0.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 262 components: - type: Transform rot: -1.5707963267948966 rad pos: -7.5,-1.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 263 components: - type: Transform rot: -1.5707963267948966 rad pos: -7.5,-2.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 264 components: - type: Transform rot: -1.5707963267948966 rad pos: -7.5,-3.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 265 components: - type: Transform rot: 3.141592653589793 rad pos: -5.5,-0.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 266 components: - type: Transform rot: -1.5707963267948966 rad pos: -5.5,-0.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 267 components: - type: Transform rot: -1.5707963267948966 rad pos: -5.5,-1.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 268 components: - type: Transform rot: 3.141592653589793 rad pos: -6.5,-2.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 269 components: - type: Transform rot: 3.141592653589793 rad pos: -6.5,-1.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 270 components: - type: Transform rot: 3.141592653589793 rad pos: -7.5,-3.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 271 components: - type: Transform rot: 3.141592653589793 rad pos: -6.5,-3.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 272 components: - type: Transform rot: 3.141592653589793 rad pos: -5.5,-3.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 273 components: - type: Transform rot: -1.5707963267948966 rad pos: -4.5,-2.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 274 components: - type: Transform rot: -1.5707963267948966 rad pos: -4.5,-1.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 275 components: - type: Transform rot: 3.141592653589793 rad pos: -4.5,-2.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 276 components: - type: Transform rot: 3.141592653589793 rad pos: -3.5,-2.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 277 components: - type: Transform rot: -1.5707963267948966 rad pos: -2.5,-2.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 278 components: - type: Transform rot: 3.141592653589793 rad pos: -3.5,-3.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 279 components: - type: Transform rot: 3.141592653589793 rad pos: -2.5,-3.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 280 components: - type: Transform rot: 3.141592653589793 rad pos: -1.5,-3.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 281 components: - type: Transform rot: 3.141592653589793 rad pos: -0.5,-2.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 282 components: - type: Transform rot: 3.141592653589793 rad pos: 0.5,-2.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 283 components: - type: Transform rot: -1.5707963267948966 rad pos: 0.5,-2.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 284 components: - type: Transform rot: -1.5707963267948966 rad pos: 0.5,-3.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 285 components: - type: Transform rot: 3.141592653589793 rad pos: -0.5,-4.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 286 components: - type: Transform rot: -1.5707963267948966 rad pos: 0.5,-0.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 287 components: - type: Transform rot: 3.141592653589793 rad pos: 0.5,-1.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 288 components: - type: Transform rot: -1.5707963267948966 rad pos: 1.5,-0.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 289 components: - type: Transform rot: -1.5707963267948966 rad pos: 1.5,0.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 290 components: - type: Transform rot: -1.5707963267948966 rad pos: 1.5,1.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 291 components: - type: Transform rot: -1.5707963267948966 rad pos: 1.5,2.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 292 components: - type: Transform rot: -1.5707963267948966 rad pos: 2.5,0.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 293 components: - type: Transform rot: -1.5707963267948966 rad pos: 2.5,1.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 294 components: - type: Transform rot: 3.141592653589793 rad pos: 2.5,-0.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 295 components: - type: Transform rot: 3.141592653589793 rad pos: 3.5,-0.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 296 components: - type: Transform rot: -1.5707963267948966 rad pos: 3.5,1.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 297 components: - type: Transform rot: -1.5707963267948966 rad pos: 3.5,2.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 298 components: - type: Transform rot: 3.141592653589793 rad pos: 1.5,-1.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 299 components: - type: Transform rot: -1.5707963267948966 rad pos: 2.5,-1.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 300 components: - type: Transform rot: -1.5707963267948966 rad pos: 2.5,-2.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 301 components: - type: Transform rot: 3.141592653589793 rad pos: 1.5,-3.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 302 components: - type: Transform rot: -1.5707963267948966 rad pos: 1.5,-3.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 303 components: - type: Transform rot: -1.5707963267948966 rad pos: 1.5,-4.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 304 components: - type: Transform rot: 3.141592653589793 rad pos: 2.5,-4.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 305 components: - type: Transform rot: -1.5707963267948966 rad pos: 3.5,-4.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 306 components: - type: Transform rot: -1.5707963267948966 rad pos: 3.5,-3.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 307 components: - type: Transform rot: -1.5707963267948966 rad pos: 3.5,-2.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 308 components: - type: Transform rot: -1.5707963267948966 rad pos: 3.5,-1.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 309 components: - type: Transform rot: -1.5707963267948966 rad pos: 3.5,-0.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 310 components: - type: Transform rot: 3.141592653589793 rad pos: 3.5,-5.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 311 components: - type: Transform rot: 3.141592653589793 rad pos: 4.5,-5.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 312 components: - type: Transform rot: 3.141592653589793 rad pos: 5.5,-5.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 313 components: - type: Transform rot: -1.5707963267948966 rad pos: 5.5,-5.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 314 components: - type: Transform rot: 3.141592653589793 rad pos: 4.5,-4.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 315 components: - type: Transform rot: -1.5707963267948966 rad pos: 4.5,-3.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 316 components: - type: Transform rot: -1.5707963267948966 rad pos: 4.5,-2.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 317 components: - type: Transform @@ -2800,982 +2354,736 @@ entities: rot: 3.141592653589793 rad pos: 4.5,-3.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 319 components: - type: Transform rot: 3.141592653589793 rad pos: 5.5,-3.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 320 components: - type: Transform rot: -1.5707963267948966 rad pos: 6.5,-4.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 321 components: - type: Transform rot: 3.141592653589793 rad pos: 6.5,-4.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 322 components: - type: Transform rot: 3.141592653589793 rad pos: 7.5,-4.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 323 components: - type: Transform rot: 3.141592653589793 rad pos: 8.5,-4.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 324 components: - type: Transform rot: 3.141592653589793 rad pos: 9.5,-4.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 325 components: - type: Transform rot: 3.141592653589793 rad pos: 10.5,-5.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 326 components: - type: Transform rot: -1.5707963267948966 rad pos: 9.5,-4.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 327 components: - type: Transform rot: -1.5707963267948966 rad pos: 9.5,-5.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 328 components: - type: Transform rot: 3.141592653589793 rad pos: 9.5,-6.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 329 components: - type: Transform rot: 3.141592653589793 rad pos: 8.5,-6.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 330 components: - type: Transform rot: -1.5707963267948966 rad pos: 8.5,-6.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 331 components: - type: Transform rot: -1.5707963267948966 rad pos: 8.5,-7.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 332 components: - type: Transform rot: -1.5707963267948966 rad pos: 8.5,-8.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 333 components: - type: Transform rot: -1.5707963267948966 rad pos: 9.5,-7.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 334 components: - type: Transform rot: 3.141592653589793 rad pos: 9.5,-7.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 335 components: - type: Transform rot: 3.141592653589793 rad pos: 10.5,-7.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 336 components: - type: Transform rot: -1.5707963267948966 rad pos: 10.5,-8.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 337 components: - type: Transform rot: 3.141592653589793 rad pos: 9.5,-9.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 338 components: - type: Transform rot: 3.141592653589793 rad pos: 8.5,-9.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 339 components: - type: Transform rot: -1.5707963267948966 rad pos: 8.5,-9.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 340 components: - type: Transform rot: 3.141592653589793 rad pos: 10.5,-10.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 341 components: - type: Transform rot: -1.5707963267948966 rad pos: 9.5,-10.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 342 components: - type: Transform rot: -1.5707963267948966 rad pos: 7.5,-10.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 343 components: - type: Transform rot: 3.141592653589793 rad pos: 7.5,-9.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 344 components: - type: Transform rot: 3.141592653589793 rad pos: 6.5,-9.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 345 components: - type: Transform rot: -1.5707963267948966 rad pos: 6.5,-9.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 346 components: - type: Transform rot: 3.141592653589793 rad pos: 5.5,-10.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 347 components: - type: Transform rot: 3.141592653589793 rad pos: 4.5,-10.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 348 components: - type: Transform rot: 3.141592653589793 rad pos: 3.5,-10.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 349 components: - type: Transform rot: -1.5707963267948966 rad pos: 3.5,-10.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 350 components: - type: Transform rot: -1.5707963267948966 rad pos: 1.5,-10.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 351 components: - type: Transform rot: -1.5707963267948966 rad pos: 2.5,-9.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 352 components: - type: Transform rot: 3.141592653589793 rad pos: 2.5,-9.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 353 components: - type: Transform rot: 3.141592653589793 rad pos: 3.5,-9.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 354 components: - type: Transform rot: 3.141592653589793 rad pos: 4.5,-9.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 355 components: - type: Transform rot: -1.5707963267948966 rad pos: 5.5,-8.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 356 components: - type: Transform rot: 3.141592653589793 rad pos: 5.5,-8.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 357 components: - type: Transform rot: 3.141592653589793 rad pos: 6.5,-8.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 358 components: - type: Transform rot: -1.5707963267948966 rad pos: 7.5,-7.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 359 components: - type: Transform rot: -1.5707963267948966 rad pos: 7.5,-6.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 360 components: - type: Transform rot: -1.5707963267948966 rad pos: 7.5,-5.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 361 components: - type: Transform rot: 3.141592653589793 rad pos: 7.5,-5.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 362 components: - type: Transform rot: 3.141592653589793 rad pos: 6.5,-6.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 363 components: - type: Transform rot: -1.5707963267948966 rad pos: 6.5,-6.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 364 components: - type: Transform rot: -1.5707963267948966 rad pos: 5.5,-7.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 365 components: - type: Transform rot: 3.141592653589793 rad pos: 4.5,-7.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 366 components: - type: Transform rot: -1.5707963267948966 rad pos: 4.5,-7.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 367 components: - type: Transform rot: 3.141592653589793 rad pos: 3.5,-8.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 368 components: - type: Transform rot: -1.5707963267948966 rad pos: 2.5,-8.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 369 components: - type: Transform rot: -1.5707963267948966 rad pos: 2.5,-7.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 370 components: - type: Transform rot: 3.141592653589793 rad pos: 2.5,-7.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 371 components: - type: Transform rot: -1.5707963267948966 rad pos: 4.5,-6.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 372 components: - type: Transform rot: 3.141592653589793 rad pos: 3.5,-6.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 373 components: - type: Transform rot: 3.141592653589793 rad pos: 2.5,-6.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 374 components: - type: Transform rot: -1.5707963267948966 rad pos: 2.5,-5.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 375 components: - type: Transform rot: 3.141592653589793 rad pos: 1.5,-5.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 376 components: - type: Transform rot: 3.141592653589793 rad pos: 0.5,-5.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 377 components: - type: Transform rot: 3.141592653589793 rad pos: -0.5,-5.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 378 components: - type: Transform rot: -1.5707963267948966 rad pos: -0.5,-5.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 379 components: - type: Transform rot: 3.141592653589793 rad pos: 0.5,-6.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 380 components: - type: Transform rot: -1.5707963267948966 rad pos: 1.5,-6.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 381 components: - type: Transform rot: -1.5707963267948966 rad pos: 1.5,-7.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 382 components: - type: Transform rot: -1.5707963267948966 rad pos: 1.5,-8.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 383 components: - type: Transform rot: -1.5707963267948966 rad pos: 1.5,-9.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 384 components: - type: Transform rot: 3.141592653589793 rad pos: -8.5,-10.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 385 components: - type: Transform rot: 3.141592653589793 rad pos: -7.5,-10.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 386 components: - type: Transform rot: -1.5707963267948966 rad pos: -7.5,-8.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 387 components: - type: Transform rot: 3.141592653589793 rad pos: -7.5,-9.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 388 components: - type: Transform rot: 3.141592653589793 rad pos: -6.5,-9.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 389 components: - type: Transform rot: -1.5707963267948966 rad pos: -5.5,-10.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 390 components: - type: Transform rot: -1.5707963267948966 rad pos: -5.5,-9.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 391 components: - type: Transform rot: -1.5707963267948966 rad pos: -5.5,-8.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 392 components: - type: Transform rot: -1.5707963267948966 rad pos: -6.5,-7.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 393 components: - type: Transform rot: 3.141592653589793 rad pos: -7.5,-7.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 394 components: - type: Transform rot: 3.141592653589793 rad pos: -6.5,-7.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 395 components: - type: Transform rot: 3.141592653589793 rad pos: -5.5,-7.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 396 components: - type: Transform rot: -1.5707963267948966 rad pos: -4.5,-7.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 397 components: - type: Transform rot: -1.5707963267948966 rad pos: -4.5,-8.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 398 components: - type: Transform rot: 3.141592653589793 rad pos: -4.5,-10.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 399 components: - type: Transform rot: 3.141592653589793 rad pos: -3.5,-10.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 400 components: - type: Transform rot: -1.5707963267948966 rad pos: -2.5,-10.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 401 components: - type: Transform rot: -1.5707963267948966 rad pos: -3.5,-9.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 402 components: - type: Transform rot: -1.5707963267948966 rad pos: -5.5,-6.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 403 components: - type: Transform rot: 3.141592653589793 rad pos: -6.5,-6.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 404 components: - type: Transform rot: 3.141592653589793 rad pos: -7.5,-6.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 405 components: - type: Transform rot: 3.141592653589793 rad pos: -8.5,-6.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 406 components: - type: Transform rot: -1.5707963267948966 rad pos: -6.5,-5.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 407 components: - type: Transform rot: 3.141592653589793 rad pos: -7.5,-5.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 408 components: - type: Transform rot: 3.141592653589793 rad pos: -7.5,-4.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 409 components: - type: Transform rot: 3.141592653589793 rad pos: -6.5,-4.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 410 components: - type: Transform rot: -1.5707963267948966 rad pos: -5.5,-4.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 411 components: - type: Transform rot: 3.141592653589793 rad pos: -5.5,-5.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 412 components: - type: Transform rot: -1.5707963267948966 rad pos: -4.5,-5.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 413 components: - type: Transform rot: 3.141592653589793 rad pos: -4.5,-5.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 414 components: - type: Transform rot: 3.141592653589793 rad pos: -3.5,-5.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 415 components: - type: Transform rot: -1.5707963267948966 rad pos: -2.5,-5.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 416 components: - type: Transform rot: 3.141592653589793 rad pos: -2.5,-6.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 417 components: - type: Transform rot: -1.5707963267948966 rad pos: -1.5,-6.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 418 components: - type: Transform rot: 3.141592653589793 rad pos: -1.5,-7.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 419 components: - type: Transform rot: 3.141592653589793 rad pos: -0.5,-7.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 420 components: - type: Transform rot: 3.141592653589793 rad pos: -4.5,-6.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 421 components: - type: Transform rot: -1.5707963267948966 rad pos: -3.5,-6.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 422 components: - type: Transform rot: -1.5707963267948966 rad pos: -3.5,-7.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 423 components: - type: Transform rot: 3.141592653589793 rad pos: -3.5,-8.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 424 components: - type: Transform rot: -1.5707963267948966 rad pos: -2.5,-8.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 425 components: - type: Transform rot: -1.5707963267948966 rad pos: -2.5,-7.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 426 components: - type: Transform rot: -1.5707963267948966 rad pos: -4.5,-3.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 427 components: - type: Transform rot: 3.141592653589793 rad pos: -4.5,-4.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 428 components: - type: Transform rot: 3.141592653589793 rad pos: -3.5,-4.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 429 components: - type: Transform rot: 3.141592653589793 rad pos: -2.5,-4.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 430 components: - type: Transform rot: -1.5707963267948966 rad pos: -1.5,-4.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 431 components: - type: Transform rot: 3.141592653589793 rad pos: -1.5,-5.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 432 components: - type: Transform rot: -1.5707963267948966 rad pos: 0.5,-9.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 433 components: - type: Transform rot: -1.5707963267948966 rad pos: 0.5,-8.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 434 components: - type: Transform rot: 3.141592653589793 rad pos: -0.5,-8.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 435 components: - type: Transform rot: 3.141592653589793 rad pos: -1.5,-8.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 436 components: - type: Transform rot: 3.141592653589793 rad pos: -2.5,-8.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 437 components: - type: Transform rot: 3.141592653589793 rad pos: -0.5,-10.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 438 components: - type: Transform rot: -1.5707963267948966 rad pos: -0.5,-9.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 439 components: - type: Transform rot: -1.5707963267948966 rad pos: -1.5,-9.5 parent: 10 - - type: Godmode - oldDamage: {} - uid: 440 components: - type: Transform rot: 3.141592653589793 rad pos: -2.5,-9.5 parent: 10 - - type: Godmode - oldDamage: {} ... From 72f790844f7684dbcd0c3f6f38d4feeb05467d5f Mon Sep 17 00:00:00 2001 From: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> Date: Sun, 28 Apr 2024 14:39:42 +1000 Subject: [PATCH 042/110] Fix recharger (#27426) --- .../Entities/Objects/Power/portable_recharger.yml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/Resources/Prototypes/Entities/Objects/Power/portable_recharger.yml b/Resources/Prototypes/Entities/Objects/Power/portable_recharger.yml index 35dfa0881f..e3213ac8c9 100644 --- a/Resources/Prototypes/Entities/Objects/Power/portable_recharger.yml +++ b/Resources/Prototypes/Entities/Objects/Power/portable_recharger.yml @@ -1,7 +1,7 @@ - type: entity parent: Clothing id: PortableRecharger - name: portable recharger + name: portable recharger description: High-tech recharger adapted for portability components: - type: Item @@ -25,6 +25,9 @@ price: 500 - type: Tag tags: [] # ignore "WhitelistChameleon" tag + - type: ContainerContainer + containers: + charger_slot: !type:ContainerSlot - type: ItemSlots slots: charger_slot: @@ -32,4 +35,4 @@ whitelist: components: - HitscanBatteryAmmoProvider - - ProjectileBatteryAmmoProvider \ No newline at end of file + - ProjectileBatteryAmmoProvider From f5aa5f1f22cf255beae398e349e567d466567e40 Mon Sep 17 00:00:00 2001 From: NotSoDana <75203942+NotSoDana@users.noreply.github.com> Date: Sun, 28 Apr 2024 06:40:07 +0200 Subject: [PATCH 043/110] Several new bartender tools (#27406) * added bar specs * specs in boozeomat * added jigger in bartender guide * fixed ice bucket * cdn --------- Co-authored-by: metalgearsloth --- .../VendingMachines/Inventories/boozeomat.yml | 3 + .../Consumable/Drinks/drinks_special.yml | 60 ++++++++++++++++++ .../Entities/Objects/Misc/utensils.yml | 25 ++++++++ .../Guidebook/Service/Bartender.xml | 1 + .../Consumable/Drinks/icebucket.rsi/icon.png | Bin 0 -> 554 bytes .../Consumable/Drinks/icebucket.rsi/meta.json | 14 ++++ .../Consumable/Drinks/jigger.rsi/icon.png | Bin 0 -> 314 bytes .../Consumable/Drinks/jigger.rsi/meta.json | 14 ++++ .../utensils.rsi/bar_spoon-inhand-left.png | Bin 0 -> 260 bytes .../utensils.rsi/bar_spoon-inhand-right.png | Bin 0 -> 251 bytes .../Objects/Misc/utensils.rsi/bar_spoon.png | Bin 0 -> 312 bytes .../Objects/Misc/utensils.rsi/meta.json | 13 +++- 12 files changed, 129 insertions(+), 1 deletion(-) create mode 100644 Resources/Textures/Objects/Consumable/Drinks/icebucket.rsi/icon.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/icebucket.rsi/meta.json create mode 100644 Resources/Textures/Objects/Consumable/Drinks/jigger.rsi/icon.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/jigger.rsi/meta.json create mode 100644 Resources/Textures/Objects/Misc/utensils.rsi/bar_spoon-inhand-left.png create mode 100644 Resources/Textures/Objects/Misc/utensils.rsi/bar_spoon-inhand-right.png create mode 100644 Resources/Textures/Objects/Misc/utensils.rsi/bar_spoon.png diff --git a/Resources/Prototypes/Catalog/VendingMachines/Inventories/boozeomat.yml b/Resources/Prototypes/Catalog/VendingMachines/Inventories/boozeomat.yml index bd8b04f982..a309b1d61d 100644 --- a/Resources/Prototypes/Catalog/VendingMachines/Inventories/boozeomat.yml +++ b/Resources/Prototypes/Catalog/VendingMachines/Inventories/boozeomat.yml @@ -7,6 +7,9 @@ DrinkVacuumFlask: 5 DrinkFlaskBar: 5 DrinkShaker: 5 + DrinkJigger: 5 + DrinkIceBucket: 2 + BarSpoon: 3 CustomDrinkJug: 2 #to allow for custom drinks in the soda/booze dispensers DrinkAbsintheBottleFull: 2 DrinkAleBottleFull: 5 diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_special.yml b/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_special.yml index ad2e760141..d2c1249740 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_special.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_special.yml @@ -104,3 +104,63 @@ - type: Drink - type: Sprite sprite: Objects/Consumable/Drinks/jar_what.rsi + +- type: entity + id: BartenderMixer + abstract: true + components: + - type: DrainableSolution + solution: drink + - type: Drink + - type: DrawableSolution + solution: drink + - type: RefillableSolution + solution: drink + - type: SolutionTransfer + canChangeTransferAmount: true + - type: Spillable + solution: drink + - type: UserInterface + interfaces: + enum.TransferAmountUiKey.Key: + type: TransferAmountBoundUserInterface + +- type: entity + parent: [BaseItem, BartenderMixer] + id: DrinkJigger + name: jigger + description: Like a shaker, but smaller. Used to control the amount of ingredients. + components: + - type: SolutionContainerManager + solutions: + drink: + maxVol: 20 + - type: MixableSolution + solution: drink + - type: FitsInDispenser + solution: drink + - type: Sprite + sprite: Objects/Consumable/Drinks/jigger.rsi + state: icon + - type: PhysicalComposition + materialComposition: + Steel: 20 + +- type: entity + parent: [BaseItem, BartenderMixer] + id: DrinkIceBucket + name: ice bucket + description: A special bucket of refreshy ice. Prohibited use for challenge with the same name! + components: + - type: SolutionContainerManager + solutions: + drink: + reagents: + - ReagentId: Ice + Quantity: 200 + - type: Sprite + sprite: Objects/Consumable/Drinks/icebucket.rsi + state: icon + - type: PhysicalComposition + materialComposition: + Steel: 75 diff --git a/Resources/Prototypes/Entities/Objects/Misc/utensils.yml b/Resources/Prototypes/Entities/Objects/Misc/utensils.yml index 4250669581..86667f094f 100644 --- a/Resources/Prototypes/Entities/Objects/Misc/utensils.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/utensils.yml @@ -120,3 +120,28 @@ - Plastic - Trash - Knife + +- type: entity + parent: UtensilBase + id: BarSpoon + name: bar spoon + description: Your personal helper to mix drinks and changes lives. + components: + - type: Tag + tags: + - Metal + - type: Sprite + state: bar_spoon + - type: Item + heldPrefix: spoon + - type: Utensil + types: + - Spoon + - type: MeleeWeapon + wideAnimationRotation: 180 + attackRate: 2 + damage: + types: + Blunt: 2 + - type: Shovel + speedModifier: 0.05 # nah diff --git a/Resources/ServerInfo/Guidebook/Service/Bartender.xml b/Resources/ServerInfo/Guidebook/Service/Bartender.xml index 060c39fca3..b7599fc0d1 100644 --- a/Resources/ServerInfo/Guidebook/Service/Bartender.xml +++ b/Resources/ServerInfo/Guidebook/Service/Bartender.xml @@ -18,6 +18,7 @@ Don't forget containers to serve them in! + ## Drinks diff --git a/Resources/Textures/Objects/Consumable/Drinks/icebucket.rsi/icon.png b/Resources/Textures/Objects/Consumable/Drinks/icebucket.rsi/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..228d098060c98d18e2dd042dfe3da92ca330d8bd GIT binary patch literal 554 zcmV+_0@eMAP)Px$~zN-clmlwv$SwA}Ul>^=Tq;90T~=aLylej4`ZM zD*$*%#BrQYW3aRYG))5ln5GF`*P$p1JkJATOmu{E4$e6Y!vFwWuUGiK44f=w4k8jy8b8wnqtQruP?yUkG);qH7$72eo|pPaf>-9QHr4oGKM-T)cBABN6VK~1mf&0MSZZ|RQv)K$p1k18eE|-P& zzAZ9H-|uiZOf1WSuIrdirywGzs)}Z_iT!>rHX)867e*gdg07*qoM6N<$g4bQ}&j0`b literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/icebucket.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/icebucket.rsi/meta.json new file mode 100644 index 0000000000..f55a85dc26 --- /dev/null +++ b/Resources/Textures/Objects/Consumable/Drinks/icebucket.rsi/meta.json @@ -0,0 +1,14 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Made by Dezzzix; Discord: dezzzix", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + } + ] + } diff --git a/Resources/Textures/Objects/Consumable/Drinks/jigger.rsi/icon.png b/Resources/Textures/Objects/Consumable/Drinks/jigger.rsi/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..6c65ca02025aacb218b407e6fe5ecbddcfce6a5a GIT binary patch literal 314 zcmV-A0mc4_P)Px#^hrcPR9J=Wls$@sKoEt$Sr!`fB!(t)07DbQK0}|xBX|ZwQ!`@?J%bpv2qON_ zIMFWbPtrZZZqi>^@Ls*HDjGZ+}l;5<)+5NNG2#yAIX{s)v&7r-zK08ZnFCs&Xp z32B->W8oG+DRo6r#Bm(#`%WCkWLb9oS%6pKd;{NK?0N$pkH_PA02I_&->PH0L;wH) M07*qoM6N<$f>Q*7#{d8T literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/jigger.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/jigger.rsi/meta.json new file mode 100644 index 0000000000..f55a85dc26 --- /dev/null +++ b/Resources/Textures/Objects/Consumable/Drinks/jigger.rsi/meta.json @@ -0,0 +1,14 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Made by Dezzzix; Discord: dezzzix", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + } + ] + } diff --git a/Resources/Textures/Objects/Misc/utensils.rsi/bar_spoon-inhand-left.png b/Resources/Textures/Objects/Misc/utensils.rsi/bar_spoon-inhand-left.png new file mode 100644 index 0000000000000000000000000000000000000000..fba15fa255f879d0d87f31550a559a4c7abab68d GIT binary patch literal 260 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|_IbKEhE&XX zdutA z`>mkK#p}|pg?zqpeDls#*D9l)>^i?}S5Q}rz?@}L8pk3+zkc*TCefbL*!|dI7tj6G z{B9qAZ4A$G@;X_1BHX6Q{JlHKSzwTnmS+0=jZjj~>w9nO4!pHfXi-=yGX385+EX^V zpZveP%W_$_e%05j-Z^BcR9FQ5Fu6{1-oD!M<3fF03 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Misc/utensils.rsi/bar_spoon-inhand-right.png b/Resources/Textures/Objects/Misc/utensils.rsi/bar_spoon-inhand-right.png new file mode 100644 index 0000000000000000000000000000000000000000..d2b32fd8b8a18fd80925ae90ede3738ffd2c5d55 GIT binary patch literal 251 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|wtBiahE&XX zduyZMAp@S)MA^j^ObHC)uWF?@SJXV;dxuGSChMWr2NoM2{`V4}wq{AS5F=0*1B1ZC zDM5ytH|STKXw}mao70ag|G#5;|MxP6R52>}~qH5onr>!{mAiZS&>J46O t{}bn4GZlMntK+I&|MzLPx#@<~KNR9J=Wmmv;>Fc3xmmQ4^`12GPdK;Y_o8P32}@Hk{Wf~0~IK+<3*4Pn*p z0fxmfBd=dPkCKt$-ePMjk$I_EBHEdU_PGAzr2zVAg@Pl+j| zgni#X=WW|0F#rG~HX4JJ5{xl8j^pF)HLeK>uB3%IW2FkM31yFCGsw!Oo@4YTS+qSv@(=_P< z)OD>3Fwe6tfchp}*Hsrly#e)2_>Bf`eN31cd7fh!264_`>UsgePg1p2ui!BN0000< KMNUMnLSTY5PJ1T+ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Misc/utensils.rsi/meta.json b/Resources/Textures/Objects/Misc/utensils.rsi/meta.json index 30dd4e8564..77aeb5e3c1 100644 --- a/Resources/Textures/Objects/Misc/utensils.rsi/meta.json +++ b/Resources/Textures/Objects/Misc/utensils.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/commit/e1142f20f5e4661cb6845cfcf2dd69f864d67432 and modified by Swept", + "copyright": "Taken from tgstation at https://github.com/tgstation/tgstation/commit/e1142f20f5e4661cb6845cfcf2dd69f864d67432 and modified by Swept; Bar spoon by Dezzzix", "size": { "x": 32, "y": 32 @@ -40,6 +40,17 @@ }, { "name": "plastic_knife" + }, + { + "name": "bar_spoon" + }, + { + "name": "bar_spoon-inhand-left", + "directions": 4 + }, + { + "name": "bar_spoon-inhand-right", + "directions": 4 } ] } From f88b6f6154c47c14cfe2d13edd669ad550a48a3f Mon Sep 17 00:00:00 2001 From: PJBot Date: Sun, 28 Apr 2024 04:41:13 +0000 Subject: [PATCH 044/110] Automatic changelog update --- Resources/Changelog/Changelog.yml | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 2f9c148b8e..ef32cb526e 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: ElectroJr - changes: - - message: Fix actions sometimes disappearing. - type: Fix - id: 5971 - time: '2024-02-20T02:08:41.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/25395 - author: PJB3005 changes: - message: Fixed timezone issues with the admin notes window. @@ -3862,3 +3855,14 @@ id: 6470 time: '2024-04-28T04:19:30.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/26660 +- author: Dezzzix + changes: + - message: Added bar spoon, jigger and ice bucket + type: Add + - message: Bartender tools added in boozeomat + type: Add + - message: Jigger added in Bartender guidebook + type: Add + id: 6471 + time: '2024-04-28T04:40:07.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/27406 From f5b8b5fbdcb4675cd29d15e2cd4112e587b03034 Mon Sep 17 00:00:00 2001 From: RumiTiger <154005209+RumiTiger@users.noreply.github.com> Date: Sun, 28 Apr 2024 01:43:45 -0300 Subject: [PATCH 045/110] Sprites for drinks without sprite (attempt 2) (#27227) * A beer can and a wine can * fix wrong file locations --------- Signed-off-by: c4llv07e Co-authored-by: c4llv07e Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> --- .../Reagents/Consumable/Drink/alcohol.yml | 8 ++- .../Reagents/Consumable/Drink/drinks.yml | 30 +++++++++-- .../Reagents/Consumable/Drink/juice.yml | 18 +++++++ .../Reagents/Consumable/Drink/soda.yml | 24 +++++++++ .../Reagents/Consumable/Food/food.yml | 8 ++- .../Drinks/coffeeglass.rsi/fill-1.png | Bin 0 -> 2962 bytes .../Drinks/coffeeglass.rsi/fill-2.png | Bin 0 -> 2988 bytes .../Drinks/coffeeglass.rsi/fill-3.png | Bin 0 -> 2985 bytes .../Drinks/coffeeglass.rsi/fill-4.png | Bin 0 -> 2988 bytes .../Drinks/coffeeglass.rsi/icon.png | Bin 0 -> 3113 bytes .../Drinks/coffeeglass.rsi/icon_empty.png | Bin 0 -> 3069 bytes .../Drinks/coffeeglass.rsi/meta.json | 29 +++++++++++ .../Drinks/colaglass.rsi/fill-1.png | Bin 0 -> 2916 bytes .../Drinks/colaglass.rsi/fill-2.png | Bin 0 -> 2937 bytes .../Drinks/colaglass.rsi/fill-3.png | Bin 0 -> 2946 bytes .../Drinks/colaglass.rsi/fill-4.png | Bin 0 -> 2958 bytes .../Drinks/colaglass.rsi/fill-5.png | Bin 0 -> 2961 bytes .../Consumable/Drinks/colaglass.rsi/icon.png | Bin 0 -> 3178 bytes .../Drinks/colaglass.rsi/icon_empty.png | Bin 0 -> 3161 bytes .../Consumable/Drinks/colaglass.rsi/meta.json | 32 ++++++++++++ .../Drinks/dr_gibb_glass.rsi/fill-1.png | Bin 0 -> 2909 bytes .../Drinks/dr_gibb_glass.rsi/fill-2.png | Bin 0 -> 2911 bytes .../Drinks/dr_gibb_glass.rsi/fill-3.png | Bin 0 -> 2925 bytes .../Drinks/dr_gibb_glass.rsi/fill-4.png | Bin 0 -> 2920 bytes .../Drinks/dr_gibb_glass.rsi/fill-5.png | Bin 0 -> 2946 bytes .../Drinks/dr_gibb_glass.rsi/icon.png | Bin 305 -> 3135 bytes .../Drinks/dr_gibb_glass.rsi/icon_empty.png | Bin 0 -> 3087 bytes .../Drinks/dr_gibb_glass.rsi/meta.json | 33 +++++++++++- .../Drinks/greenteaglass.rsi/fill-1.png | Bin 0 -> 2903 bytes .../Drinks/greenteaglass.rsi/fill-2.png | Bin 0 -> 2915 bytes .../Drinks/greenteaglass.rsi/fill-3.png | Bin 0 -> 2931 bytes .../Drinks/greenteaglass.rsi/fill-4.png | Bin 0 -> 2931 bytes .../Drinks/greenteaglass.rsi/icon.png | Bin 0 -> 3116 bytes .../Drinks/greenteaglass.rsi/icon_empty.png | Bin 0 -> 3098 bytes .../Drinks/greenteaglass.rsi/meta.json | 29 +++++++++++ .../Drinks/icedgreenteaglass.rsi/fill-1.png | Bin 0 -> 2925 bytes .../Drinks/icedgreenteaglass.rsi/fill-2.png | Bin 0 -> 2945 bytes .../Drinks/icedgreenteaglass.rsi/fill-3.png | Bin 0 -> 2984 bytes .../Drinks/icedgreenteaglass.rsi/fill-4.png | Bin 0 -> 2993 bytes .../Drinks/icedgreenteaglass.rsi/fill-5.png | Bin 0 -> 3025 bytes .../Drinks/icedgreenteaglass.rsi/icon.png | Bin 0 -> 3190 bytes .../icedgreenteaglass.rsi/icon_empty.png | Bin 0 -> 3032 bytes .../Drinks/icedgreenteaglass.rsi/meta.json | 32 ++++++++++++ .../Consumable/Drinks/iceglass.rsi/fill-1.png | Bin 0 -> 2935 bytes .../Consumable/Drinks/iceglass.rsi/fill-2.png | Bin 0 -> 2978 bytes .../Consumable/Drinks/iceglass.rsi/fill-3.png | Bin 0 -> 3005 bytes .../Consumable/Drinks/iceglass.rsi/icon.png | Bin 363 -> 3215 bytes .../Drinks/iceglass.rsi/icon_empty.png | Bin 0 -> 3071 bytes .../Consumable/Drinks/iceglass.rsi/meta.json | 27 +++++++++- .../Drinks/lemonjuiceglass.rsi/fill-1.png | Bin 0 -> 2981 bytes .../Drinks/lemonjuiceglass.rsi/fill-2.png | Bin 0 -> 2993 bytes .../Drinks/lemonjuiceglass.rsi/fill-3.png | Bin 0 -> 2993 bytes .../Drinks/lemonjuiceglass.rsi/fill-4.png | Bin 0 -> 3000 bytes .../Drinks/lemonjuiceglass.rsi/fill-5.png | Bin 0 -> 3004 bytes .../Drinks/lemonjuiceglass.rsi/icon.png | Bin 0 -> 3308 bytes .../Drinks/lemonjuiceglass.rsi/icon_empty.png | Bin 0 -> 3278 bytes .../Drinks/lemonjuiceglass.rsi/meta.json | 32 ++++++++++++ .../Drinks/moonshineglass.rsi/fill-1.png | Bin 0 -> 2930 bytes .../Drinks/moonshineglass.rsi/fill-2.png | Bin 0 -> 2929 bytes .../Drinks/moonshineglass.rsi/fill-3.png | Bin 0 -> 2937 bytes .../Drinks/moonshineglass.rsi/fill-4.png | Bin 0 -> 2970 bytes .../Drinks/moonshineglass.rsi/fill-5.png | Bin 0 -> 2971 bytes .../Drinks/moonshineglass.rsi/fill-6.png | Bin 0 -> 2967 bytes .../Drinks/moonshineglass.rsi/icon.png | Bin 0 -> 3067 bytes .../Drinks/moonshineglass.rsi/icon_empty.png | Bin 0 -> 3018 bytes .../Drinks/moonshineglass.rsi/meta.json | 35 +++++++++++++ .../Drinks/orangejuiceglass.rsi/fill-1.png | Bin 0 -> 2956 bytes .../Drinks/orangejuiceglass.rsi/fill-2.png | Bin 0 -> 2960 bytes .../Drinks/orangejuiceglass.rsi/fill-3.png | Bin 0 -> 2972 bytes .../Drinks/orangejuiceglass.rsi/fill-4.png | Bin 0 -> 2981 bytes .../Drinks/orangejuiceglass.rsi/fill-5.png | Bin 0 -> 2982 bytes .../Drinks/orangejuiceglass.rsi/icon.png | Bin 0 -> 3136 bytes .../orangejuiceglass.rsi/icon_empty.png | Bin 0 -> 3121 bytes .../Drinks/orangejuiceglass.rsi/meta.json | 32 ++++++++++++ .../Drinks/space-up_glass.rsi/fill-1.png | Bin 0 -> 2925 bytes .../Drinks/space-up_glass.rsi/fill-2.png | Bin 0 -> 2940 bytes .../Drinks/space-up_glass.rsi/fill-3.png | Bin 0 -> 2940 bytes .../Drinks/space-up_glass.rsi/fill-4.png | Bin 0 -> 2953 bytes .../Drinks/space-up_glass.rsi/fill-5.png | Bin 0 -> 2955 bytes .../Drinks/space-up_glass.rsi/fill-6.png | Bin 0 -> 2961 bytes .../Drinks/space-up_glass.rsi/icon.png | Bin 320 -> 3131 bytes .../Drinks/space-up_glass.rsi/icon_empty.png | Bin 0 -> 3094 bytes .../Drinks/space-up_glass.rsi/meta.json | 36 ++++++++++++- .../space_mountain_wind_glass.rsi/fill-1.png | Bin 0 -> 2934 bytes .../space_mountain_wind_glass.rsi/fill-2.png | Bin 0 -> 2945 bytes .../space_mountain_wind_glass.rsi/fill-3.png | Bin 0 -> 2956 bytes .../space_mountain_wind_glass.rsi/fill-4.png | Bin 0 -> 2963 bytes .../space_mountain_wind_glass.rsi/fill-5.png | Bin 0 -> 2990 bytes .../space_mountain_wind_glass.rsi/icon.png | Bin 404 -> 3160 bytes .../icon_empty.png | Bin 0 -> 3119 bytes .../space_mountain_wind_glass.rsi/meta.json | 33 +++++++++++- .../Drinks/sugarglass.rsi/fill-1.png | Bin 0 -> 2874 bytes .../Drinks/sugarglass.rsi/fill-2.png | Bin 0 -> 2893 bytes .../Drinks/sugarglass.rsi/fill-3.png | Bin 0 -> 2902 bytes .../Drinks/sugarglass.rsi/fill-4.png | Bin 0 -> 2900 bytes .../Drinks/sugarglass.rsi/fill-5.png | Bin 0 -> 2911 bytes .../Drinks/sugarglass.rsi/fill-6.png | Bin 0 -> 2921 bytes .../Drinks/sugarglass.rsi/fill-7.png | Bin 0 -> 2920 bytes .../Consumable/Drinks/sugarglass.rsi/icon.png | Bin 0 -> 3051 bytes .../Drinks/sugarglass.rsi/icon_empty.png | Bin 0 -> 2986 bytes .../Drinks/sugarglass.rsi/meta.json | 38 ++++++++++++++ .../Consumable/Drinks/teaglass.rsi/fill-1.png | Bin 0 -> 2937 bytes .../Consumable/Drinks/teaglass.rsi/fill-2.png | Bin 0 -> 2944 bytes .../Consumable/Drinks/teaglass.rsi/fill-3.png | Bin 0 -> 2983 bytes .../Consumable/Drinks/teaglass.rsi/fill-4.png | Bin 0 -> 2955 bytes .../Consumable/Drinks/teaglass.rsi/icon.png | Bin 231 -> 3156 bytes .../Drinks/teaglass.rsi/icon_empty.png | Bin 0 -> 3127 bytes .../Consumable/Drinks/teaglass.rsi/meta.json | 30 ++++++++++- .../Drinks/tequillaglass.rsi/fill-1.png | Bin 189 -> 3054 bytes .../Drinks/tequillaglass.rsi/fill-2.png | Bin 208 -> 3052 bytes .../Drinks/tequillaglass.rsi/fill-3.png | Bin 237 -> 3045 bytes .../Drinks/tequillaglass.rsi/fill-4.png | Bin 248 -> 0 bytes .../Drinks/tequillaglass.rsi/icon.png | Bin 447 -> 3149 bytes .../Drinks/tequillaglass.rsi/icon_empty.png | Bin 348 -> 3129 bytes .../Drinks/tequillaglass.rsi/meta.json | 49 ++++++++---------- .../Drinks/tonicglass.rsi/fill-1.png | Bin 0 -> 2864 bytes .../Drinks/tonicglass.rsi/fill-2.png | Bin 0 -> 2882 bytes .../Drinks/tonicglass.rsi/fill-3.png | Bin 0 -> 2883 bytes .../Drinks/tonicglass.rsi/fill-4.png | Bin 0 -> 2883 bytes .../Drinks/tonicglass.rsi/fill-5.png | Bin 0 -> 2883 bytes .../Consumable/Drinks/tonicglass.rsi/icon.png | Bin 0 -> 3146 bytes .../Drinks/tonicglass.rsi/icon_empty.png | Bin 0 -> 3085 bytes .../Drinks/tonicglass.rsi/meta.json | 32 ++++++++++++ .../Drinks/watermelonglass.rsi/fill-1.png | Bin 0 -> 2933 bytes .../Drinks/watermelonglass.rsi/fill-2.png | Bin 0 -> 2936 bytes .../Drinks/watermelonglass.rsi/fill-3.png | Bin 0 -> 2973 bytes .../Drinks/watermelonglass.rsi/fill-4.png | Bin 0 -> 3000 bytes .../Drinks/watermelonglass.rsi/icon.png | Bin 0 -> 3180 bytes .../Drinks/watermelonglass.rsi/icon_empty.png | Bin 0 -> 3107 bytes .../Drinks/watermelonglass.rsi/meta.json | 29 +++++++++++ 130 files changed, 579 insertions(+), 37 deletions(-) create mode 100644 Resources/Textures/Objects/Consumable/Drinks/coffeeglass.rsi/fill-1.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/coffeeglass.rsi/fill-2.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/coffeeglass.rsi/fill-3.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/coffeeglass.rsi/fill-4.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/coffeeglass.rsi/icon.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/coffeeglass.rsi/icon_empty.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/coffeeglass.rsi/meta.json create mode 100644 Resources/Textures/Objects/Consumable/Drinks/colaglass.rsi/fill-1.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/colaglass.rsi/fill-2.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/colaglass.rsi/fill-3.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/colaglass.rsi/fill-4.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/colaglass.rsi/fill-5.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/colaglass.rsi/icon.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/colaglass.rsi/icon_empty.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/colaglass.rsi/meta.json create mode 100644 Resources/Textures/Objects/Consumable/Drinks/dr_gibb_glass.rsi/fill-1.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/dr_gibb_glass.rsi/fill-2.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/dr_gibb_glass.rsi/fill-3.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/dr_gibb_glass.rsi/fill-4.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/dr_gibb_glass.rsi/fill-5.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/dr_gibb_glass.rsi/icon_empty.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/greenteaglass.rsi/fill-1.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/greenteaglass.rsi/fill-2.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/greenteaglass.rsi/fill-3.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/greenteaglass.rsi/fill-4.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/greenteaglass.rsi/icon.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/greenteaglass.rsi/icon_empty.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/greenteaglass.rsi/meta.json create mode 100644 Resources/Textures/Objects/Consumable/Drinks/icedgreenteaglass.rsi/fill-1.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/icedgreenteaglass.rsi/fill-2.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/icedgreenteaglass.rsi/fill-3.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/icedgreenteaglass.rsi/fill-4.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/icedgreenteaglass.rsi/fill-5.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/icedgreenteaglass.rsi/icon.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/icedgreenteaglass.rsi/icon_empty.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/icedgreenteaglass.rsi/meta.json create mode 100644 Resources/Textures/Objects/Consumable/Drinks/iceglass.rsi/fill-1.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/iceglass.rsi/fill-2.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/iceglass.rsi/fill-3.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/iceglass.rsi/icon_empty.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/lemonjuiceglass.rsi/fill-1.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/lemonjuiceglass.rsi/fill-2.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/lemonjuiceglass.rsi/fill-3.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/lemonjuiceglass.rsi/fill-4.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/lemonjuiceglass.rsi/fill-5.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/lemonjuiceglass.rsi/icon.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/lemonjuiceglass.rsi/icon_empty.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/lemonjuiceglass.rsi/meta.json create mode 100644 Resources/Textures/Objects/Consumable/Drinks/moonshineglass.rsi/fill-1.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/moonshineglass.rsi/fill-2.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/moonshineglass.rsi/fill-3.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/moonshineglass.rsi/fill-4.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/moonshineglass.rsi/fill-5.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/moonshineglass.rsi/fill-6.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/moonshineglass.rsi/icon.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/moonshineglass.rsi/icon_empty.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/moonshineglass.rsi/meta.json create mode 100644 Resources/Textures/Objects/Consumable/Drinks/orangejuiceglass.rsi/fill-1.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/orangejuiceglass.rsi/fill-2.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/orangejuiceglass.rsi/fill-3.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/orangejuiceglass.rsi/fill-4.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/orangejuiceglass.rsi/fill-5.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/orangejuiceglass.rsi/icon.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/orangejuiceglass.rsi/icon_empty.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/orangejuiceglass.rsi/meta.json create mode 100644 Resources/Textures/Objects/Consumable/Drinks/space-up_glass.rsi/fill-1.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/space-up_glass.rsi/fill-2.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/space-up_glass.rsi/fill-3.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/space-up_glass.rsi/fill-4.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/space-up_glass.rsi/fill-5.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/space-up_glass.rsi/fill-6.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/space-up_glass.rsi/icon_empty.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/space_mountain_wind_glass.rsi/fill-1.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/space_mountain_wind_glass.rsi/fill-2.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/space_mountain_wind_glass.rsi/fill-3.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/space_mountain_wind_glass.rsi/fill-4.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/space_mountain_wind_glass.rsi/fill-5.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/space_mountain_wind_glass.rsi/icon_empty.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/sugarglass.rsi/fill-1.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/sugarglass.rsi/fill-2.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/sugarglass.rsi/fill-3.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/sugarglass.rsi/fill-4.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/sugarglass.rsi/fill-5.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/sugarglass.rsi/fill-6.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/sugarglass.rsi/fill-7.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/sugarglass.rsi/icon.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/sugarglass.rsi/icon_empty.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/sugarglass.rsi/meta.json create mode 100644 Resources/Textures/Objects/Consumable/Drinks/teaglass.rsi/fill-1.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/teaglass.rsi/fill-2.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/teaglass.rsi/fill-3.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/teaglass.rsi/fill-4.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/teaglass.rsi/icon_empty.png delete mode 100644 Resources/Textures/Objects/Consumable/Drinks/tequillaglass.rsi/fill-4.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/tonicglass.rsi/fill-1.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/tonicglass.rsi/fill-2.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/tonicglass.rsi/fill-3.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/tonicglass.rsi/fill-4.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/tonicglass.rsi/fill-5.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/tonicglass.rsi/icon.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/tonicglass.rsi/icon_empty.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/tonicglass.rsi/meta.json create mode 100644 Resources/Textures/Objects/Consumable/Drinks/watermelonglass.rsi/fill-1.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/watermelonglass.rsi/fill-2.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/watermelonglass.rsi/fill-3.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/watermelonglass.rsi/fill-4.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/watermelonglass.rsi/icon.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/watermelonglass.rsi/icon_empty.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/watermelonglass.rsi/meta.json diff --git a/Resources/Prototypes/Reagents/Consumable/Drink/alcohol.yml b/Resources/Prototypes/Reagents/Consumable/Drink/alcohol.yml index ef02161165..963e5fcf45 100644 --- a/Resources/Prototypes/Reagents/Consumable/Drink/alcohol.yml +++ b/Resources/Prototypes/Reagents/Consumable/Drink/alcohol.yml @@ -346,7 +346,7 @@ metamorphicSprite: sprite: Objects/Consumable/Drinks/tequillaglass.rsi state: icon_empty - metamorphicMaxFillLevels: 4 + metamorphicMaxFillLevels: 3 metamorphicFillBaseName: fill- metamorphicChangeColor: false metabolisms: @@ -1289,6 +1289,12 @@ physicalDesc: reagent-physical-desc-strong-smelling flavor: moonshine color: "#d1d7d155" + metamorphicSprite: + sprite: Objects/Consumable/Drinks/moonshineglass.rsi + state: icon_empty + metamorphicMaxFillLevels: 6 + metamorphicFillBaseName: fill- + metamorphicChangeColor: false metabolisms: Drink: effects: diff --git a/Resources/Prototypes/Reagents/Consumable/Drink/drinks.yml b/Resources/Prototypes/Reagents/Consumable/Drink/drinks.yml index 71de67adb9..52a01d973f 100644 --- a/Resources/Prototypes/Reagents/Consumable/Drink/drinks.yml +++ b/Resources/Prototypes/Reagents/Consumable/Drink/drinks.yml @@ -15,6 +15,12 @@ - !type:AdjustReagent reagent: Theobromine amount: 0.05 + metamorphicSprite: + sprite: Objects/Consumable/Drinks/coffeeglass.rsi + state: icon_empty + metamorphicMaxFillLevels: 4 + metamorphicFillBaseName: fill- + metamorphicChangeColor: false - type: reagent id: HotCocoa @@ -100,9 +106,9 @@ flavor: tea color: "#7EB626" metamorphicSprite: - sprite: Objects/Consumable/Drinks/glass_green.rsi + sprite: Objects/Consumable/Drinks/greenteaglass.rsi state: icon_empty - metamorphicMaxFillLevels: 5 + metamorphicMaxFillLevels: 4 metamorphicFillBaseName: fill- metamorphicChangeColor: false @@ -149,7 +155,7 @@ flavor: icedtea color: "#5B821B" metamorphicSprite: - sprite: Objects/Consumable/Drinks/glass_green.rsi + sprite: Objects/Consumable/Drinks/icedgreenteaglass.rsi state: icon_empty metamorphicMaxFillLevels: 5 metamorphicFillBaseName: fill- @@ -366,6 +372,12 @@ - !type:AdjustReagent reagent: Theobromine amount: 0.05 + metamorphicSprite: + sprite: Objects/Consumable/Drinks/teaglass.rsi + state: icon_empty + metamorphicMaxFillLevels: 4 + metamorphicFillBaseName: fill- + metamorphicChangeColor: false - type: reagent id: TonicWater @@ -376,6 +388,12 @@ flavor: tonicwater color: "#0064C8" fizziness: 0.4 + metamorphicSprite: + sprite: Objects/Consumable/Drinks/tonicglass.rsi + state: icon_empty + metamorphicMaxFillLevels: 5 + metamorphicFillBaseName: fill- + metamorphicChangeColor: false - type: reagent id: Water @@ -408,6 +426,12 @@ plantMetabolism: - !type:PlantAdjustWater amount: 1 + metamorphicSprite: + sprite: Objects/Consumable/Drinks/iceglass.rsi + state: icon_empty + metamorphicMaxFillLevels: 3 + metamorphicFillBaseName: fill- + metamorphicChangeColor: false - type: reagent id: DryRamen diff --git a/Resources/Prototypes/Reagents/Consumable/Drink/juice.yml b/Resources/Prototypes/Reagents/Consumable/Drink/juice.yml index ee1492b45e..c42791fa8f 100644 --- a/Resources/Prototypes/Reagents/Consumable/Drink/juice.yml +++ b/Resources/Prototypes/Reagents/Consumable/Drink/juice.yml @@ -63,6 +63,12 @@ physicalDesc: reagent-physical-desc-citric flavor: sour color: "#fff690" + metamorphicSprite: + sprite: Objects/Consumable/Drinks/lemonjuiceglass.rsi + state: icon_empty + metamorphicMaxFillLevels: 5 + metamorphicFillBaseName: fill- + metamorphicChangeColor: false - type: reagent id: JuiceLime @@ -89,6 +95,12 @@ physicalDesc: reagent-physical-desc-citric flavor: orange color: "#E78108" + metamorphicSprite: + sprite: Objects/Consumable/Drinks/orangejuiceglass.rsi + state: icon_empty + metamorphicMaxFillLevels: 5 + metamorphicFillBaseName: fill- + metamorphicChangeColor: false - type: reagent id: JuicePineapple @@ -125,3 +137,9 @@ physicalDesc: reagent-physical-desc-sweet flavor: watermelon color: "#EF3520" + metamorphicSprite: + sprite: Objects/Consumable/Drinks/watermelonglass.rsi + state: icon_empty + metamorphicMaxFillLevels: 4 + metamorphicFillBaseName: fill- + metamorphicChangeColor: false diff --git a/Resources/Prototypes/Reagents/Consumable/Drink/soda.yml b/Resources/Prototypes/Reagents/Consumable/Drink/soda.yml index 3dda5b5329..f8d3f41af9 100644 --- a/Resources/Prototypes/Reagents/Consumable/Drink/soda.yml +++ b/Resources/Prototypes/Reagents/Consumable/Drink/soda.yml @@ -7,6 +7,12 @@ flavor: soda color: "#6c2828" recognizable: true + metamorphicSprite: + sprite: Objects/Consumable/Drinks/colaglass.rsi + state: icon_empty + metamorphicMaxFillLevels: 5 + metamorphicFillBaseName: fill- + metamorphicChangeColor: false - type: reagent id: RoyRogers @@ -42,6 +48,12 @@ physicalDesc: reagent-physical-desc-fizzy flavor: drgibb color: "#102000" + metamorphicSprite: + sprite: Objects/Consumable/Drinks/dr_gibb_glass.rsi + state: icon_empty + metamorphicMaxFillLevels: 5 + metamorphicFillBaseName: fill- + metamorphicChangeColor: false - type: reagent id: EnergyDrink @@ -174,6 +186,12 @@ physicalDesc: reagent-physical-desc-fizzy flavor: sodacitrus color: "#a6fa5a" + metamorphicSprite: + sprite: Objects/Consumable/Drinks/space_mountain_wind_glass.rsi + state: icon_empty + metamorphicMaxFillLevels: 5 + metamorphicFillBaseName: fill- + metamorphicChangeColor: false - type: reagent id: SpaceUp @@ -183,6 +201,12 @@ physicalDesc: reagent-physical-desc-fizzy flavor: spaceup color: "#e3e3e37d" + metamorphicSprite: + sprite: Objects/Consumable/Drinks/space-up_glass.rsi + state: icon_empty + metamorphicMaxFillLevels: 6 + metamorphicFillBaseName: fill- + metamorphicChangeColor: false - type: reagent id: Starkist diff --git a/Resources/Prototypes/Reagents/Consumable/Food/food.yml b/Resources/Prototypes/Reagents/Consumable/Food/food.yml index 03ebf7cc32..c9625c663c 100644 --- a/Resources/Prototypes/Reagents/Consumable/Food/food.yml +++ b/Resources/Prototypes/Reagents/Consumable/Food/food.yml @@ -93,6 +93,12 @@ amount: 2 - !type:PlantAdjustPests amount: 2 + metamorphicSprite: + sprite: Objects/Consumable/Drinks/sugarglass.rsi + state: icon_empty + metamorphicMaxFillLevels: 7 + metamorphicFillBaseName: fill- + metamorphicChangeColor: false - type: reagent id: PumpkinFlesh #Just so pumpkins spill orange stuff when smashed @@ -100,4 +106,4 @@ name: reagent-name-pumpkin-flesh desc: reagent-desc-pumpkin-flesh flavor: pumpkin - color: "#fc9300" \ No newline at end of file + color: "#fc9300" diff --git a/Resources/Textures/Objects/Consumable/Drinks/coffeeglass.rsi/fill-1.png b/Resources/Textures/Objects/Consumable/Drinks/coffeeglass.rsi/fill-1.png new file mode 100644 index 0000000000000000000000000000000000000000..e4e832ce8db52d79d997104104b38d3a8954950b GIT binary patch literal 2962 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 IM6N<$f?AA@xBvhE literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/coffeeglass.rsi/fill-2.png b/Resources/Textures/Objects/Consumable/Drinks/coffeeglass.rsi/fill-2.png new file mode 100644 index 0000000000000000000000000000000000000000..c778f3c428e21814f15d038ecc5c2342895b02b2 GIT binary patch literal 2988 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/coffeeglass.rsi/fill-4.png b/Resources/Textures/Objects/Consumable/Drinks/coffeeglass.rsi/fill-4.png new file mode 100644 index 0000000000000000000000000000000000000000..da13e6813977f0fb371ab3456ee05af7b7b0d05c GIT binary patch literal 2988 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 LPDHLkV1i(R=oG-u literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/coffeeglass.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/coffeeglass.rsi/meta.json new file mode 100644 index 0000000000..32c5e0342d --- /dev/null +++ b/Resources/Textures/Objects/Consumable/Drinks/coffeeglass.rsi/meta.json @@ -0,0 +1,29 @@ +{ + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "license": "CC-BY-SA-3.0", + "copyright": "Made by borkroman. Fill levels by RumiTiger", + "states": [ + { + "name": "icon" + }, + { + "name": "icon_empty" + }, + { + "name": "fill-1" + }, + { + "name": "fill-2" + }, + { + "name": "fill-3" + }, + { + "name": "fill-4" + } + ] +} diff --git a/Resources/Textures/Objects/Consumable/Drinks/colaglass.rsi/fill-1.png b/Resources/Textures/Objects/Consumable/Drinks/colaglass.rsi/fill-1.png new file mode 100644 index 0000000000000000000000000000000000000000..a36d304a4ddd9e4a63a32121ba62ea9e1e2d4bfb GIT binary patch literal 2916 zcmV-q3!C(bP)StO&>uS)ve<0AYj>5AR{$W90N^4L=L-RlQUJ&DC0@ZjPh;=*jPLSYvv5M~MFBAl0-BNIsH z15C~g000{K(ZT*WKal6<?_01!^k@7iDG<<3=fuAC~28EsPoqkpK{9G%|Vj005J}`Hw&=0RYXHq~ibpyyzHQsFW8>#s~laM4*8xut5h5 z!4#~(4xGUqyucR%VFpA%3?#rj5JCpzfE)^;7?wd9RKPme1hudO8lVxH;SjXJF*pt9 z;1XPc>u?taU>Kgl7`%oF1VP9M6Ja4bh!J9r*dopd7nzO(B4J20l7OTj>4+3jBE`sZ zqynizYLQ(?Bl0bB6giDtK>Co|$RIL`{EECsF_eL_Q3KQhbwIhO9~z3rpmWi5G!I>X zmZEFX8nhlgfVQHi(M#xcbO3#dj$?q)F%D*o*1Pf{>6$SWH+$s3q(pv=X`qR|$iJF~TPzlc-O$C3+J1 z#CT#lv5;6stS0Uu9wDA3UMCI{Uz12A4#|?_P6{CkNG+sOq(0IRX`DyT~9-sA|ffUF>wk++Z!kWZ5P$;0Hg6gtI-;!FvmBvPc55=u2?Kjj3apE5$3psG>L zsh-pbs)#zDT1jo7c2F-(3)vyY4>O^>2$gY-Gd%Qm(Z8e zYv>2*=jns=cMJ`N4THx>VkjAF8G9M07`GWOnM|ey)0dgZR4~^v8<}UA514ONSSt1^ zd=-((5|uiYR+WC0=c-gyb5%dpd8!Lkt5pxHURHgkMpd&=fR^vEcAI*_=wwAG2sV%zY%w@v@XU~7=xdm1xY6*0;iwVIXu6TaXrs|dqbIl~ z?uTdNHFy_3W~^@g_pF#!K2~{F^;XxcN!DEJEbDF7 zS8PxlSDOr*I-AS3sI8l=#CDr)-xT5$k15hA^;2%zG3@;83hbKf2JJcaVfH2VZT8O{ z%p4LO);n}Nd~$Sk%yw*Wyz8XlG{dRHsl(}4XB%gsbDi@w7p6;)%MzD%mlsoQr;4X; zpL)xc%+^yMd)ZNTI#eJ*$O)i@o$z8)e??LqN_gLa_%;TM>o2SC_ zkmoO6c3xRt`@J4dvz#WL)-Y|z+r(Soy~}%GIzByR`p)SCKE^%*pL(B%zNWq+-#xw~ ze%5}Oeh2)X`#bu}{g3#+;d$~F@lFL`0l@*~0lk45fwKc^10MvL1f>Tx1&sx}1}_Xg z6+#RN4Ot&@lW)Km@*DYMGu&q^n$Z=?2%QyL8~QNJCQKgI5srq>2;UHXZ>IT7>CCnW zh~P(Th`1kV8JQRPeH1AwGO8}>QM6NZadh`A)~w`N`)9q5@sFvDxjWlxwsLl7tZHmh zY-8-3xPZ8-xPf?w_(k!T5_A(J3GIpG#Ms0=iQ{tu=WLoYoaCBRmULsT<=mpV7v|~C z%bs^USv6UZd^m-e5|^?+<%1wXP%juy<)>~<9TW0|n}ttBzM_qyQL(qUN<5P0omQ3h zINdvaL;7fjPeygdGYL;pD|wL_lDQ-EO;$wK-mK5raoH_7l$?~Dqf!lNmb5F^Ft;eT zPi8AClMUo~=55LwlZVRpxOiFd;3B_8yA~shQx|tGF!j;$toK>JuS&gYLDkTP@C~gS@r~shUu{a>bfJ1` z^^VQ7&C1OKHDNXFTgC{M|V%fo{xK_dk6MK@9S!GZ*1JJzrV5xZBjOk z9!NTH<(q(S+MDf~ceQX@Dh|Ry<-sT4rhI$jQ0Sq~!`#Eo-%($2E^vo}is5J@NVEf|KK?WT&2;PCq@=ncR8z zO#GQ^T~S@VXG71PKNocFOt)Y6$@AXlk6rM*aP%VgV%sIRORYVwJx6|U{ozQjTW{-S z_si{9Jg#)~P3t?+@6&(!YQWWV*Z9{iU7vZq@5byKw{9lg9JnRA_4s!7?H6|n?o8ZW zdXIRo{Jz@#>IeD{>VLHUv1Pz*;P_y`V9&!@5AO~Mho1hF|I>%z(nrik)gwkDjgOrl z9~%uCz4Bzvli{bbrxVZ0epdf^>vOB;-~HnIOV3#R*zgPai_gEVd8zYq@2jb=I>#f& zAH2?aJ@Kaetticv+K#=%W@p0LM z^I-R%WLPF}cVh#7*9` O0000StO&>uS)ve<0AYj>5AR{$W90N^4L=L-RlQUJ&DC0@ZjPh;=*jPLSYvv5M~MFBAl0-BNIsH z15C~g000{K(ZT*WKal6<?_01!^k@7iDG<<3=fuAC~28EsPoqkpK{9G%|Vj005J}`Hw&=0RYXHq~ibpyyzHQsFW8>#s~laM4*8xut5h5 z!4#~(4xGUqyucR%VFpA%3?#rj5JCpzfE)^;7?wd9RKPme1hudO8lVxH;SjXJF*pt9 z;1XPc>u?taU>Kgl7`%oF1VP9M6Ja4bh!J9r*dopd7nzO(B4J20l7OTj>4+3jBE`sZ zqynizYLQ(?Bl0bB6giDtK>Co|$RIL`{EECsF_eL_Q3KQhbwIhO9~z3rpmWi5G!I>X zmZEFX8nhlgfVQHi(M#xcbO3#dj$?q)F%D*o*1Pf{>6$SWH+$s3q(pv=X`qR|$iJF~TPzlc-O$C3+J1 z#CT#lv5;6stS0Uu9wDA3UMCI{Uz12A4#|?_P6{CkNG+sOq(0IRX`DyT~9-sA|ffUF>wk++Z!kWZ5P$;0Hg6gtI-;!FvmBvPc55=u2?Kjj3apE5$3psG>L zsh-pbs)#zDT1jo7c2F-(3)vyY4>O^>2$gY-Gd%Qm(Z8e zYv>2*=jns=cMJ`N4THx>VkjAF8G9M07`GWOnM|ey)0dgZR4~^v8<}UA514ONSSt1^ zd=-((5|uiYR+WC0=c-gyb5%dpd8!Lkt5pxHURHgkMpd&=fR^vEcAI*_=wwAG2sV%zY%w@v@XU~7=xdm1xY6*0;iwVIXu6TaXrs|dqbIl~ z?uTdNHFy_3W~^@g_pF#!K2~{F^;XxcN!DEJEbDF7 zS8PxlSDOr*I-AS3sI8l=#CDr)-xT5$k15hA^;2%zG3@;83hbKf2JJcaVfH2VZT8O{ z%p4LO);n}Nd~$Sk%yw*Wyz8XlG{dRHsl(}4XB%gsbDi@w7p6;)%MzD%mlsoQr;4X; zpL)xc%+^yMd)ZNTI#eJ*$O)i@o$z8)e??LqN_gLa_%;TM>o2SC_ zkmoO6c3xRt`@J4dvz#WL)-Y|z+r(Soy~}%GIzByR`p)SCKE^%*pL(B%zNWq+-#xw~ ze%5}Oeh2)X`#bu}{g3#+;d$~F@lFL`0l@*~0lk45fwKc^10MvL1f>Tx1&sx}1}_Xg z6+#RN4Ot&@lW)Km@*DYMGu&q^n$Z=?2%QyL8~QNJCQKgI5srq>2;UHXZ>IT7>CCnW zh~P(Th`1kV8JQRPeH1AwGO8}>QM6NZadh`A)~w`N`)9q5@sFvDxjWlxwsLl7tZHmh zY-8-3xPZ8-xPf?w_(k!T5_A(J3GIpG#Ms0=iQ{tu=WLoYoaCBRmULsT<=mpV7v|~C z%bs^USv6UZd^m-e5|^?+<%1wXP%juy<)>~<9TW0|n}ttBzM_qyQL(qUN<5P0omQ3h zINdvaL;7fjPeygdGYL;pD|wL_lDQ-EO;$wK-mK5raoH_7l$?~Dqf!lNmb5F^Ft;eT zPi8AClMUo~=55LwlZVRpxOiFd;3B_8yA~shQx|tGF!j;$toK>JuS&gYLDkTP@C~gS@r~shUu{a>bfJ1` z^^VQ7&C1OKHDNXFTgC{M|V%fo{xK_dk6MK@9S!GZ*1JJzrV5xZBjOk z9!NTH<(q(S+MDf~ceQX@Dh|Ry<-sT4rhI$jQ0Sq~!`#Eo-%($2E^vo}is5J@NVEf|KK?WT&2;PCq@=ncR8z zO#GQ^T~S@VXG71PKNocFOt)Y6$@AXlk6rM*aP%VgV%sIRORYVwJx6|U{ozQjTW{-S z_si{9Jg#)~P3t?+@6&(!YQWWV*Z9{iU7vZq@5byKw{9lg9JnRA_4s!7?H6|n?o8ZW zdXIRo{Jz@#>IeD{>VLHUv1Pz*;P_y`V9&!@5AO~Mho1hF|I>%z(nrik)gwkDjgOrl z9~%uCz4Bzvli{bbrxVZ0epdf^>vOB;-~HnIOV3#R*zgPai_gEVd8zYq@2jb=I>#f& zAH2?aJ@KaetTh`x zlcZ}Ya1p>jj(Z)3;=K>A(5Wo(5RT{~WA61iwYLRN(riZc jkH`QFzyJ)u0ICCA^4DOxkPWDK00000NkvXXu0mjfW3-Fy literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/colaglass.rsi/fill-3.png b/Resources/Textures/Objects/Consumable/Drinks/colaglass.rsi/fill-3.png new file mode 100644 index 0000000000000000000000000000000000000000..bb7bee49d05ed72f3cf1779ee5eae6e570608a03 GIT binary patch literal 2946 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/colaglass.rsi/fill-4.png b/Resources/Textures/Objects/Consumable/Drinks/colaglass.rsi/fill-4.png new file mode 100644 index 0000000000000000000000000000000000000000..1808bdbd0415205945182615b5d399cbac5a7caa GIT binary patch literal 2958 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 Ef>U;tLjV8( literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/colaglass.rsi/fill-5.png b/Resources/Textures/Objects/Consumable/Drinks/colaglass.rsi/fill-5.png new file mode 100644 index 0000000000000000000000000000000000000000..734126d86680e5ee16619d7a8582d197c9125a3a GIT binary patch literal 2961 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 Hu0mjfR+5zJ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/colaglass.rsi/icon.png b/Resources/Textures/Objects/Consumable/Drinks/colaglass.rsi/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..2894625a2e5eb608253935e4ac4f53bfffd2139f GIT binary patch literal 3178 zcmV-w43+bVP)StO&>uS)ve<0AYj>5AR{$W90N^4L=L-RlQUJ&DC0@ZjPh;=*jPLSYvv5M~MFBAl0-BNIsH z15C~g000{K(ZT*WKal6<?_01!^k@7iDG<<3=fuAC~28EsPoqkpK{9G%|Vj005J}`Hw&=0RYXHq~ibpyyzHQsFW8>#s~laM4*8xut5h5 z!4#~(4xGUqyucR%VFpA%3?#rj5JCpzfE)^;7?wd9RKPme1hudO8lVxH;SjXJF*pt9 z;1XPc>u?taU>Kgl7`%oF1VP9M6Ja4bh!J9r*dopd7nzO(B4J20l7OTj>4+3jBE`sZ zqynizYLQ(?Bl0bB6giDtK>Co|$RIL`{EECsF_eL_Q3KQhbwIhO9~z3rpmWi5G!I>X zmZEFX8nhlgfVQHi(M#xcbO3#dj$?q)F%D*o*1Pf{>6$SWH+$s3q(pv=X`qR|$iJF~TPzlc-O$C3+J1 z#CT#lv5;6stS0Uu9wDA3UMCI{Uz12A4#|?_P6{CkNG+sOq(0IRX`DyT~9-sA|ffUF>wk++Z!kWZ5P$;0Hg6gtI-;!FvmBvPc55=u2?Kjj3apE5$3psG>L zsh-pbs)#zDT1jo7c2F-(3)vyY4>O^>2$gY-Gd%Qm(Z8e zYv>2*=jns=cMJ`N4THx>VkjAF8G9M07`GWOnM|ey)0dgZR4~^v8<}UA514ONSSt1^ zd=-((5|uiYR+WC0=c-gyb5%dpd8!Lkt5pxHURHgkMpd&=fR^vEcAI*_=wwAG2sV%zY%w@v@XU~7=xdm1xY6*0;iwVIXu6TaXrs|dqbIl~ z?uTdNHFy_3W~^@g_pF#!K2~{F^;XxcN!DEJEbDF7 zS8PxlSDOr*I-AS3sI8l=#CDr)-xT5$k15hA^;2%zG3@;83hbKf2JJcaVfH2VZT8O{ z%p4LO);n}Nd~$Sk%yw*Wyz8XlG{dRHsl(}4XB%gsbDi@w7p6;)%MzD%mlsoQr;4X; zpL)xc%+^yMd)ZNTI#eJ*$O)i@o$z8)e??LqN_gLa_%;TM>o2SC_ zkmoO6c3xRt`@J4dvz#WL)-Y|z+r(Soy~}%GIzByR`p)SCKE^%*pL(B%zNWq+-#xw~ ze%5}Oeh2)X`#bu}{g3#+;d$~F@lFL`0l@*~0lk45fwKc^10MvL1f>Tx1&sx}1}_Xg z6+#RN4Ot&@lW)Km@*DYMGu&q^n$Z=?2%QyL8~QNJCQKgI5srq>2;UHXZ>IT7>CCnW zh~P(Th`1kV8JQRPeH1AwGO8}>QM6NZadh`A)~w`N`)9q5@sFvDxjWlxwsLl7tZHmh zY-8-3xPZ8-xPf?w_(k!T5_A(J3GIpG#Ms0=iQ{tu=WLoYoaCBRmULsT<=mpV7v|~C z%bs^USv6UZd^m-e5|^?+<%1wXP%juy<)>~<9TW0|n}ttBzM_qyQL(qUN<5P0omQ3h zINdvaL;7fjPeygdGYL;pD|wL_lDQ-EO;$wK-mK5raoH_7l$?~Dqf!lNmb5F^Ft;eT zPi8AClMUo~=55LwlZVRpxOiFd;3B_8yA~shQx|tGF!j;$toK>JuS&gYLDkTP@C~gS@r~shUu{a>bfJ1` z^^VQ7&C1OKHDNXFTgC{M|V%fo{xK_dk6MK@9S!GZ*1JJzrV5xZBjOk z9!NTH<(q(S+MDf~ceQX@Dh|Ry<-sT4rhI$jQ0Sq~!`#Eo-%($2E^vo}is5J@NVEf|KK?WT&2;PCq@=ncR8z zO#GQ^T~S@VXG71PKNocFOt)Y6$@AXlk6rM*aP%VgV%sIRORYVwJx6|U{ozQjTW{-S z_si{9Jg#)~P3t?+@6&(!YQWWV*Z9{iU7vZq@5byKw{9lg9JnRA_4s!7?H6|n?o8ZW zdXIRo{Jz@#>IeD{>VLHUv1Pz*;P_y`V9&!@5AO~Mho1hF|I>%z(nrik)gwkDjgOrl z9~%uCz4Bzvli{bbrxVZ0epdf^>vOB;-~HnIOV3#R*zgPai_gEVd8zYq@2jb=I>#f& zAH2?aJ@Kaeti=IxQuQ&ClX`>K9(aZ>_Bg~@k{k!HkYjngg?2i!Sc{CrrkW=&{DRjWc(yj! zL5dXfNDcvPzGr;*PV&Ey&~pX`1_n|cKynB$FfcI0TWB}H*!#;XXF7Jar!z1xFf2TA zwE>qNT!1FIplZ=_qScZW0xdEUGm-g6m(HKbz`(#DyJqimQq3Ye1XS3Baq`>ZB5Ch{ zJHOuIPhXr^o>e3=9l!e*L6GJLL|b2B63RtXRqgx;o$w#nw~k048WQ9ykXuGBEt3 zuwO%RIbgl%$g|)7|1$`)u`zu8`-g#_g%zcaAhkRoyC6a_WVCBG>HrD=0G4$FT8?b1 QFaQ7m07*qoM6N<$g6aA6GXMYp literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/colaglass.rsi/icon_empty.png b/Resources/Textures/Objects/Consumable/Drinks/colaglass.rsi/icon_empty.png new file mode 100644 index 0000000000000000000000000000000000000000..b20279f8f1b7f528ad742b21c4c8039814a1fc43 GIT binary patch literal 3161 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 JPDHLkV1j0~e1-r3 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/dr_gibb_glass.rsi/fill-3.png b/Resources/Textures/Objects/Consumable/Drinks/dr_gibb_glass.rsi/fill-3.png new file mode 100644 index 0000000000000000000000000000000000000000..74f54a4c8322e737bc057ad42187b348fcdddcd9 GIT binary patch literal 2925 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 XD7qp$iKA6A00000NkvXXu0mjf*nom& literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/dr_gibb_glass.rsi/fill-4.png b/Resources/Textures/Objects/Consumable/Drinks/dr_gibb_glass.rsi/fill-4.png new file mode 100644 index 0000000000000000000000000000000000000000..da440839643bdf4869004dcbe5fc6b0cc607f7b3 GIT binary patch literal 2920 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/dr_gibb_glass.rsi/icon.png b/Resources/Textures/Objects/Consumable/Drinks/dr_gibb_glass.rsi/icon.png index 620cf5ea01e70b80a579b22ca5b105a3a92c1b96..6a68486662a2c5f6512f36b8bb562885ebf3f84f 100644 GIT binary patch delta 3130 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 U07*qoM6N<$f=NYAM6N<$f-r3Gg#Z8m delta 278 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/dr_gibb_glass.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/dr_gibb_glass.rsi/meta.json index db0ac608ed..ec55ebfa1f 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/dr_gibb_glass.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/dr_gibb_glass.rsi/meta.json @@ -1 +1,32 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file +{ + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "license": "CC-BY-SA-3.0", + "copyright": "Made by RumiTiger", + "states": [ + { + "name": "icon" + }, + { + "name": "icon_empty" + }, + { + "name": "fill-1" + }, + { + "name": "fill-2" + }, + { + "name": "fill-3" + }, + { + "name": "fill-4" + }, + { + "name": "fill-5" + } + ] +} diff --git a/Resources/Textures/Objects/Consumable/Drinks/greenteaglass.rsi/fill-1.png b/Resources/Textures/Objects/Consumable/Drinks/greenteaglass.rsi/fill-1.png new file mode 100644 index 0000000000000000000000000000000000000000..613efd11712b751a3e9be0381e5d1ec94f3b6356 GIT binary patch literal 2903 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 Bc`5(^ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/greenteaglass.rsi/fill-2.png b/Resources/Textures/Objects/Consumable/Drinks/greenteaglass.rsi/fill-2.png new file mode 100644 index 0000000000000000000000000000000000000000..785703f4df7c8d364a68639c8fcbb060cc495f1c GIT binary patch literal 2915 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 N002ovPDHLkV1oDYfHVLA literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/greenteaglass.rsi/fill-3.png b/Resources/Textures/Objects/Consumable/Drinks/greenteaglass.rsi/fill-3.png new file mode 100644 index 0000000000000000000000000000000000000000..1f482c8df9b9ad36d7323b2609b1fd1ca5de0276 GIT binary patch literal 2931 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/greenteaglass.rsi/icon_empty.png b/Resources/Textures/Objects/Consumable/Drinks/greenteaglass.rsi/icon_empty.png new file mode 100644 index 0000000000000000000000000000000000000000..71eb435183680840e675f804a9c8075dac9c94db GIT binary patch literal 3098 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/icedgreenteaglass.rsi/fill-3.png b/Resources/Textures/Objects/Consumable/Drinks/icedgreenteaglass.rsi/fill-3.png new file mode 100644 index 0000000000000000000000000000000000000000..a65df2aaed0a17a4bf0f43ebd03978059775604e GIT binary patch literal 2984 zcmV;Z3s>}sP)StO&>uS)ve<0AYj>5AR{$W90N^4L=L-RlQUJ&DC0@ZjPh;=*jPLSYvv5M~MFBAl0-BNIsH z15C~g000{K(ZT*WKal6<?_01!^k@7iDG<<3=fuAC~28EsPoqkpK{9G%|Vj005J}`Hw&=0RYXHq~ibpyyzHQsFW8>#s~laM4*8xut5h5 z!4#~(4xGUqyucR%VFpA%3?#rj5JCpzfE)^;7?wd9RKPme1hudO8lVxH;SjXJF*pt9 z;1XPc>u?taU>Kgl7`%oF1VP9M6Ja4bh!J9r*dopd7nzO(B4J20l7OTj>4+3jBE`sZ zqynizYLQ(?Bl0bB6giDtK>Co|$RIL`{EECsF_eL_Q3KQhbwIhO9~z3rpmWi5G!I>X zmZEFX8nhlgfVQHi(M#xcbO3#dj$?q)F%D*o*1Pf{>6$SWH+$s3q(pv=X`qR|$iJF~TPzlc-O$C3+J1 z#CT#lv5;6stS0Uu9wDA3UMCI{Uz12A4#|?_P6{CkNG+sOq(0IRX`DyT~9-sA|ffUF>wk++Z!kWZ5P$;0Hg6gtI-;!FvmBvPc55=u2?Kjj3apE5$3psG>L zsh-pbs)#zDT1jo7c2F-(3)vyY4>O^>2$gY-Gd%Qm(Z8e zYv>2*=jns=cMJ`N4THx>VkjAF8G9M07`GWOnM|ey)0dgZR4~^v8<}UA514ONSSt1^ zd=-((5|uiYR+WC0=c-gyb5%dpd8!Lkt5pxHURHgkMpd&=fR^vEcAI*_=wwAG2sV%zY%w@v@XU~7=xdm1xY6*0;iwVIXu6TaXrs|dqbIl~ z?uTdNHFy_3W~^@g_pF#!K2~{F^;XxcN!DEJEbDF7 zS8PxlSDOr*I-AS3sI8l=#CDr)-xT5$k15hA^;2%zG3@;83hbKf2JJcaVfH2VZT8O{ z%p4LO);n}Nd~$Sk%yw*Wyz8XlG{dRHsl(}4XB%gsbDi@w7p6;)%MzD%mlsoQr;4X; zpL)xc%+^yMd)ZNTI#eJ*$O)i@o$z8)e??LqN_gLa_%;TM>o2SC_ zkmoO6c3xRt`@J4dvz#WL)-Y|z+r(Soy~}%GIzByR`p)SCKE^%*pL(B%zNWq+-#xw~ ze%5}Oeh2)X`#bu}{g3#+;d$~F@lFL`0l@*~0lk45fwKc^10MvL1f>Tx1&sx}1}_Xg z6+#RN4Ot&@lW)Km@*DYMGu&q^n$Z=?2%QyL8~QNJCQKgI5srq>2;UHXZ>IT7>CCnW zh~P(Th`1kV8JQRPeH1AwGO8}>QM6NZadh`A)~w`N`)9q5@sFvDxjWlxwsLl7tZHmh zY-8-3xPZ8-xPf?w_(k!T5_A(J3GIpG#Ms0=iQ{tu=WLoYoaCBRmULsT<=mpV7v|~C z%bs^USv6UZd^m-e5|^?+<%1wXP%juy<)>~<9TW0|n}ttBzM_qyQL(qUN<5P0omQ3h zINdvaL;7fjPeygdGYL;pD|wL_lDQ-EO;$wK-mK5raoH_7l$?~Dqf!lNmb5F^Ft;eT zPi8AClMUo~=55LwlZVRpxOiFd;3B_8yA~shQx|tGF!j;$toK>JuS&gYLDkTP@C~gS@r~shUu{a>bfJ1` z^^VQ7&C1OKHDNXFTgC{M|V%fo{xK_dk6MK@9S!GZ*1JJzrV5xZBjOk z9!NTH<(q(S+MDf~ceQX@Dh|Ry<-sT4rhI$jQ0Sq~!`#Eo-%($2E^vo}is5J@NVEf|KK?WT&2;PCq@=ncR8z zO#GQ^T~S@VXG71PKNocFOt)Y6$@AXlk6rM*aP%VgV%sIRORYVwJx6|U{ozQjTW{-S z_si{9Jg#)~P3t?+@6&(!YQWWV*Z9{iU7vZq@5byKw{9lg9JnRA_4s!7?H6|n?o8ZW zdXIRo{Jz@#>IeD{>VLHUv1Pz*;P_y`V9&!@5AO~Mho1hF|I>%z(nrik)gwkDjgOrl z9~%uCz4Bzvli{bbrxVZ0epdf^>vOB;-~HnIOV3#R*zgPai_gEVd8zYq@2jb=I>#f& zAH2?aJ@KaetcS#zj=PVJP@LcF}OUQ({up{KmY;|fB^mhpa5Jx$<8<6 z9N^mwO;$5=%C96rL^et}RCjjk1^ek-wE~F49%Y~bIC`4bQ`=lq18fR-(FNzvjUJ(4YfJ5b-t@03BstC9BCe>@^N<1OUiJDTCpdynOsN(Hh{Qi@JPoP2cZYhXW}2 emStO&>uS)ve<0AYj>5AR{$W90N^4L=L-RlQUJ&DC0@ZjPh;=*jPLSYvv5M~MFBAl0-BNIsH z15C~g000{K(ZT*WKal6<?_01!^k@7iDG<<3=fuAC~28EsPoqkpK{9G%|Vj005J}`Hw&=0RYXHq~ibpyyzHQsFW8>#s~laM4*8xut5h5 z!4#~(4xGUqyucR%VFpA%3?#rj5JCpzfE)^;7?wd9RKPme1hudO8lVxH;SjXJF*pt9 z;1XPc>u?taU>Kgl7`%oF1VP9M6Ja4bh!J9r*dopd7nzO(B4J20l7OTj>4+3jBE`sZ zqynizYLQ(?Bl0bB6giDtK>Co|$RIL`{EECsF_eL_Q3KQhbwIhO9~z3rpmWi5G!I>X zmZEFX8nhlgfVQHi(M#xcbO3#dj$?q)F%D*o*1Pf{>6$SWH+$s3q(pv=X`qR|$iJF~TPzlc-O$C3+J1 z#CT#lv5;6stS0Uu9wDA3UMCI{Uz12A4#|?_P6{CkNG+sOq(0IRX`DyT~9-sA|ffUF>wk++Z!kWZ5P$;0Hg6gtI-;!FvmBvPc55=u2?Kjj3apE5$3psG>L zsh-pbs)#zDT1jo7c2F-(3)vyY4>O^>2$gY-Gd%Qm(Z8e zYv>2*=jns=cMJ`N4THx>VkjAF8G9M07`GWOnM|ey)0dgZR4~^v8<}UA514ONSSt1^ zd=-((5|uiYR+WC0=c-gyb5%dpd8!Lkt5pxHURHgkMpd&=fR^vEcAI*_=wwAG2sV%zY%w@v@XU~7=xdm1xY6*0;iwVIXu6TaXrs|dqbIl~ z?uTdNHFy_3W~^@g_pF#!K2~{F^;XxcN!DEJEbDF7 zS8PxlSDOr*I-AS3sI8l=#CDr)-xT5$k15hA^;2%zG3@;83hbKf2JJcaVfH2VZT8O{ z%p4LO);n}Nd~$Sk%yw*Wyz8XlG{dRHsl(}4XB%gsbDi@w7p6;)%MzD%mlsoQr;4X; zpL)xc%+^yMd)ZNTI#eJ*$O)i@o$z8)e??LqN_gLa_%;TM>o2SC_ zkmoO6c3xRt`@J4dvz#WL)-Y|z+r(Soy~}%GIzByR`p)SCKE^%*pL(B%zNWq+-#xw~ ze%5}Oeh2)X`#bu}{g3#+;d$~F@lFL`0l@*~0lk45fwKc^10MvL1f>Tx1&sx}1}_Xg z6+#RN4Ot&@lW)Km@*DYMGu&q^n$Z=?2%QyL8~QNJCQKgI5srq>2;UHXZ>IT7>CCnW zh~P(Th`1kV8JQRPeH1AwGO8}>QM6NZadh`A)~w`N`)9q5@sFvDxjWlxwsLl7tZHmh zY-8-3xPZ8-xPf?w_(k!T5_A(J3GIpG#Ms0=iQ{tu=WLoYoaCBRmULsT<=mpV7v|~C z%bs^USv6UZd^m-e5|^?+<%1wXP%juy<)>~<9TW0|n}ttBzM_qyQL(qUN<5P0omQ3h zINdvaL;7fjPeygdGYL;pD|wL_lDQ-EO;$wK-mK5raoH_7l$?~Dqf!lNmb5F^Ft;eT zPi8AClMUo~=55LwlZVRpxOiFd;3B_8yA~shQx|tGF!j;$toK>JuS&gYLDkTP@C~gS@r~shUu{a>bfJ1` z^^VQ7&C1OKHDNXFTgC{M|V%fo{xK_dk6MK@9S!GZ*1JJzrV5xZBjOk z9!NTH<(q(S+MDf~ceQX@Dh|Ry<-sT4rhI$jQ0Sq~!`#Eo-%($2E^vo}is5J@NVEf|KK?WT&2;PCq@=ncR8z zO#GQ^T~S@VXG71PKNocFOt)Y6$@AXlk6rM*aP%VgV%sIRORYVwJx6|U{ozQjTW{-S z_si{9Jg#)~P3t?+@6&(!YQWWV*Z9{iU7vZq@5byKw{9lg9JnRA_4s!7?H6|n?o8ZW zdXIRo{Jz@#>IeD{>VLHUv1Pz*;P_y`V9&!@5AO~Mho1hF|I>%z(nrik)gwkDjgOrl z9~%uCz4Bzvli{bbrxVZ0epdf^>vOB;-~HnIOV3#R*zgPai_gEVd8zYq@2jb=I>#f& zAH2?aJ@KaetwPyrQC0Tobze-JPLT|UXaF&pAh%XjMxMSPZ^FTA~*;~kc2TsP~AB5 zEYFAR_5i*lfS(SeLBwvm7Q>-I2GSrRcO^ibgVqF+Fm4QPBmmUmyA=1j6RioH?6nGC nZW;J}F&x0?$3z8Gplg9QnDj{C9zkp@00000NkvXXu0mjf9uA{X literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/icedgreenteaglass.rsi/fill-5.png b/Resources/Textures/Objects/Consumable/Drinks/icedgreenteaglass.rsi/fill-5.png new file mode 100644 index 0000000000000000000000000000000000000000..72c2f4cecf06cbd82db932335552cb1751184875 GIT binary patch literal 3025 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/icedgreenteaglass.rsi/icon_empty.png b/Resources/Textures/Objects/Consumable/Drinks/icedgreenteaglass.rsi/icon_empty.png new file mode 100644 index 0000000000000000000000000000000000000000..e10df8d1724f3885df2fc69eb8a03051d337b57a GIT binary patch literal 3032 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/iceglass.rsi/fill-2.png b/Resources/Textures/Objects/Consumable/Drinks/iceglass.rsi/fill-2.png new file mode 100644 index 0000000000000000000000000000000000000000..367a9e178bd22965cf1873831a98d825447fcb53 GIT binary patch literal 2978 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 Y7U8NsFI9)-s{jB107*qoM6N<$g2l<1@c;k- literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/iceglass.rsi/fill-3.png b/Resources/Textures/Objects/Consumable/Drinks/iceglass.rsi/fill-3.png new file mode 100644 index 0000000000000000000000000000000000000000..02022cd03b9a2061465701a9c618c7e9fa64a363 GIT binary patch literal 3005 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/lemonjuiceglass.rsi/fill-3.png b/Resources/Textures/Objects/Consumable/Drinks/lemonjuiceglass.rsi/fill-3.png new file mode 100644 index 0000000000000000000000000000000000000000..97a8f2c29b6c27860eccb245cc4416d384788c1c GIT binary patch literal 2993 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 MNkvXXu0mjff;e<6`Tzg` literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/lemonjuiceglass.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/lemonjuiceglass.rsi/meta.json new file mode 100644 index 0000000000..ec55ebfa1f --- /dev/null +++ b/Resources/Textures/Objects/Consumable/Drinks/lemonjuiceglass.rsi/meta.json @@ -0,0 +1,32 @@ +{ + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "license": "CC-BY-SA-3.0", + "copyright": "Made by RumiTiger", + "states": [ + { + "name": "icon" + }, + { + "name": "icon_empty" + }, + { + "name": "fill-1" + }, + { + "name": "fill-2" + }, + { + "name": "fill-3" + }, + { + "name": "fill-4" + }, + { + "name": "fill-5" + } + ] +} diff --git a/Resources/Textures/Objects/Consumable/Drinks/moonshineglass.rsi/fill-1.png b/Resources/Textures/Objects/Consumable/Drinks/moonshineglass.rsi/fill-1.png new file mode 100644 index 0000000000000000000000000000000000000000..824ffcf3d652da9161e6cedd2da6675e21973cf2 GIT binary patch literal 2930 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/moonshineglass.rsi/fill-2.png b/Resources/Textures/Objects/Consumable/Drinks/moonshineglass.rsi/fill-2.png new file mode 100644 index 0000000000000000000000000000000000000000..5159ff36712c776c2c666717cf70871bcb350a89 GIT binary patch literal 2929 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 bs2bn`851a9h9#;t00000NkvXXu0mjf&a;KT literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/moonshineglass.rsi/fill-3.png b/Resources/Textures/Objects/Consumable/Drinks/moonshineglass.rsi/fill-3.png new file mode 100644 index 0000000000000000000000000000000000000000..6d2115a95af84af2276adc5fcad45cbca1b667e2 GIT binary patch literal 2937 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/moonshineglass.rsi/fill-4.png b/Resources/Textures/Objects/Consumable/Drinks/moonshineglass.rsi/fill-4.png new file mode 100644 index 0000000000000000000000000000000000000000..90ca019493a69cb206df88976fd71a484efbf572 GIT binary patch literal 2970 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 QC;$Ke07*qoM6N<$g7}A=PXGV_ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/moonshineglass.rsi/fill-5.png b/Resources/Textures/Objects/Consumable/Drinks/moonshineglass.rsi/fill-5.png new file mode 100644 index 0000000000000000000000000000000000000000..c50860e4d037ad3c1c6fe578b550956517049b75 GIT binary patch literal 2971 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 R1mpk!002ovPDHLkV1n&You2>z literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/moonshineglass.rsi/fill-6.png b/Resources/Textures/Objects/Consumable/Drinks/moonshineglass.rsi/fill-6.png new file mode 100644 index 0000000000000000000000000000000000000000..1488e2b6297be7180d9b5482032444047d609695 GIT binary patch literal 2967 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 N002ovPDHLkV1lgsn(zPs literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/moonshineglass.rsi/icon.png b/Resources/Textures/Objects/Consumable/Drinks/moonshineglass.rsi/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..5fa26544fda22ddaa6d14b997bdc27633c450b67 GIT binary patch literal 3067 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 JPDHLkV1mdC$q4`e literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/moonshineglass.rsi/icon_empty.png b/Resources/Textures/Objects/Consumable/Drinks/moonshineglass.rsi/icon_empty.png new file mode 100644 index 0000000000000000000000000000000000000000..673679cb4ab031a27b333631492bda55274c6b58 GIT binary patch literal 3018 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 bP~3qROH+G|SCt8?00000NkvXXu0mjf$aAC- literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/orangejuiceglass.rsi/fill-5.png b/Resources/Textures/Objects/Consumable/Drinks/orangejuiceglass.rsi/fill-5.png new file mode 100644 index 0000000000000000000000000000000000000000..598d0be5b6d396e7883277474720fb7a48c7a84c GIT binary patch literal 2982 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/orangejuiceglass.rsi/icon.png b/Resources/Textures/Objects/Consumable/Drinks/orangejuiceglass.rsi/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..64e185065a5621fe14086296a0d7d1325e28695c GIT binary patch literal 3136 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�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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/space-up_glass.rsi/fill-2.png b/Resources/Textures/Objects/Consumable/Drinks/space-up_glass.rsi/fill-2.png new file mode 100644 index 0000000000000000000000000000000000000000..763d02e7b8b023d5f93ffe7e46b69350aaaa5960 GIT binary patch literal 2940 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/space-up_glass.rsi/fill-5.png b/Resources/Textures/Objects/Consumable/Drinks/space-up_glass.rsi/fill-5.png new file mode 100644 index 0000000000000000000000000000000000000000..b79be48363507edbd1fcef02c66188f6292d87c4 GIT binary patch literal 2955 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 Bm&^bF literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/space-up_glass.rsi/fill-6.png b/Resources/Textures/Objects/Consumable/Drinks/space-up_glass.rsi/fill-6.png new file mode 100644 index 0000000000000000000000000000000000000000..9abb7c672bcdaefab62ab7b7c9265c671f8a0d8a GIT binary patch literal 2961 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 Hu0mjf8aSF; literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/space-up_glass.rsi/icon.png b/Resources/Textures/Objects/Consumable/Drinks/space-up_glass.rsi/icon.png index 5930cd7536c90451924e13cf3783cd0e79ff701c..e5eeaba26428a0351caad25c8ae9bf4a222e5ca3 100644 GIT binary patch delta 3127 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 R&P)IR002ovPDHLkV1kds?hpU~ delta 294 zcmV+>0one$7{CIMBYy!0Nklq~zVni5 s7Fi)cjzze@fFCzVMjbHffKdkk0CA~QN{`R?u>b%707*qoM6N<$g8T)BDgXcg diff --git a/Resources/Textures/Objects/Consumable/Drinks/space-up_glass.rsi/icon_empty.png b/Resources/Textures/Objects/Consumable/Drinks/space-up_glass.rsi/icon_empty.png new file mode 100644 index 0000000000000000000000000000000000000000..9e12bbbe4d746a3d0e591ca3ba491810c7f8a494 GIT binary patch literal 3094 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/space-up_glass.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/space-up_glass.rsi/meta.json index db0ac608ed..5fe156daaa 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/space-up_glass.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/space-up_glass.rsi/meta.json @@ -1 +1,35 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file +{ + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "license": "CC-BY-SA-3.0", + "copyright": "Made by RumiTiger", + "states": [ + { + "name": "icon" + }, + { + "name": "icon_empty" + }, + { + "name": "fill-1" + }, + { + "name": "fill-2" + }, + { + "name": "fill-3" + }, + { + "name": "fill-4" + }, + { + "name": "fill-5" + }, + { + "name": "fill-6" + } + ] +} diff --git a/Resources/Textures/Objects/Consumable/Drinks/space_mountain_wind_glass.rsi/fill-1.png b/Resources/Textures/Objects/Consumable/Drinks/space_mountain_wind_glass.rsi/fill-1.png new file mode 100644 index 0000000000000000000000000000000000000000..53db03fd96b5b846d8f0b4169af803e3eb630180 GIT binary patch literal 2934 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 kUYF4?_>Uea0+tkf0M+J>XkJOBUy literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/space_mountain_wind_glass.rsi/icon.png b/Resources/Textures/Objects/Consumable/Drinks/space_mountain_wind_glass.rsi/icon.png index 812d7fd488793c3da009e3cd42c103f39404f6bb..6303745c50002f17e84dfab0dc9e4e70cd6f3c5a 100644 GIT binary patch delta 3156 zcmV-a46E~$1K1dlBYyw{XF*Lt006O%3;baP000U}X+uL$b5ch_AW20-HZeIiHZ3wP zF#rHaiJen-Sd;e_KHv9c4^~3h@UfR{fdC>StO&>uS)ve<0AYj>5;Xm z069{HJUZAPk55R%$-RIA6-eL&AQ0xu!e<4=008gy@A0LT~suv4>S3ILP<0Bm`DLLvaF4FK%)Nj?Pt z*r}7;7Xa9z9Dk_@0F40vnJ7mj0zkU}U{!%qECRs70HCZuA}$2Lt^t5qwlYTofV~9( zc8*w(4?ti5fSE!p%m5%b0suoE6U_r4Oaq`W(!b!TUvP!ENC5!A%azTSOVTqGxRuZv zck=My;vwR~Y_URN7by^C3FIQ2mzyIKNaq7g&I|wm8h`oG!TvZukmu&);pS%NZ142N zqW){}Zz4V+@!$Tui~3=fu zAC~28EsPoqkpK{9G%|Vj005J}`Hw&= z0RYXHq~ibpyyzHQsFW8>#s~laM4*8xut5h5!G9F2zz&?j9lXF70$~P3Knx_nJP<+# z?5=ix(HVZgM=}{CnA%mPk*!}dJ_4>cw#!SkXS~nChj2~A)X~(Ck_)| zlSm{E$&%zw3LzzsGD!SVKGG0roJ=O`kZsA{w~!BzPm=q| z!{oOVI>m_MObMbSQlyj;N;PFa(3)vyY4>O^>2$gY-Gd%Qm(Z8eYv>2*=jns=cMJ`N4THx>VkjAF z8G9M07`GWOnM|ey)0dgZR4~^v8<}UA514ONSSt1^d=-((5|uiYR+WC0=c-gyb5%dp zd8!Lkt5pxHURHgkMpd&=31P|s0cqrPALg8E|(vWA65 zpoU1JRAaZs8I2(p#xiB`SVGovRs-uSYnV-9TeA7=Om+qP8+I>yOjAR1s%ETak!GFd zam@h^#)@rS0t$wXH+Irf)+G6c;?H29p+JEnLaGgM% zES>c_Z94aL3A#4AQM!e?+jY>uuIoY)~6ln+%&eo6EMSt(&dH zcAIVA6yg+*DbgwRQ*PQZ?ELHs?3(Nb?K$>g_9gah_Rk&691% z+^yMd)ZNTI#eJ*$O)i@o$z8)e??LqN_gLa_%;TM>o2SC_kmoO6c3xRt`@J4dvz#WL z)-Y|z+r(Soy~}%GI)6SrW%|zP13tz+0-t)HhrXu1BHul}BYxI?nSKZSp8Grc%l(h| zzu|fE7V%C6U;)7a8@mESk|3$_SkmS{wQ>%qC18))9_|&j{ZTes8AvOzF(F2!Dv+M{J0=A88qx7x{e@ zDJn9mF6vRVQ*?23_bk?|G6C?@kiR8rC#65}Qa{}jVnlqf_npBo_W3J`gqPZ95>CVfZcRX1&S&)1zB z2~Schd65~Cxg+yURz%j`tk2nT*)2JgoRplSQVnUAv@6#zwxOiFd;3B_8yA~shQx|tGFoqt`+R{gE3x4zjX+Sb3_cYE^=gB=w+-tUy`ytONMS8KgRef4hA z?tqvPk(mKC&tSzH$pgp0z@92!9 zogH2sN4~fJe(y2kV|B+hk5`_cohUu=`Q(C=R z&wrjj7j*7Sw_o?k^WNu=UGThc^dk3S+apRi!(|`JEz}0it_}4C7pLxCS#_SunZYJFvxFx#v_;&W~7k3KoOx#_1k9e>AzS{lj z2l@}{f3*IwWx#FV_+Y?b&%;>{?+yuvo`3$7|I>%z(nrik)gwkDjgOrl9~%uCz4Bzv zli{bbrxVZ0epdf^>vOB;-~HnIOV3#R*zgPai_gEVd8zYq@2jb=I>#f&AH2?aJ@Kae ztfP?@5`Tzg`fam}Kbua(`>RI+y?e7jT@qQ9J+u010qNS#tmYE+YT{E+YYW zr9XB600BHnL_t(og=75x|33qzfRT}rfn0N#D7KwKFzSF&2Mo9a7|F>#1uG_E)ifa@ zpONMcC|EJ^e^7+>S!{CaR$MhE)qfErMFBp`85kHCf+Dof;tCzAIDmlx;!ASmZ~+!l zH3UUyKgVSeR8Eqn4uDxijy`OF>}+Va=%YA3KFu6(iQ$dpE`~dj42*x7b}`(Mv|IcR z&foU)I!VFLz`(%3!pKNC*I>)4HL>p)S{4hT& z5&!e^H^Yzh{}?7jffUXW0uqa?)pxpNi3>35nkh3Ck7Nm;`3QR8=K@1Jc~IvV{roq#~d^B?SC`7Yeu6Hn>4%8 z>J2~x&;a}gfS^jyWTz)({(dquwF8XPjzqr{8mAqJg1HJp4Sx{qh8!Oq%JuzI={J(O zE}s@)ZDlK+5SIR$S^&c6{6{f)xK-y-Pk~=N126?%xnK$;T(aZ}^Xb(9dIeU(?{mh2 zm@WfiUI56Xr%tCu zA*Y2;5Gz~lK?sZ%R}v5vd&1^|b{VrkLB zVkpF diff --git a/Resources/Textures/Objects/Consumable/Drinks/space_mountain_wind_glass.rsi/icon_empty.png b/Resources/Textures/Objects/Consumable/Drinks/space_mountain_wind_glass.rsi/icon_empty.png new file mode 100644 index 0000000000000000000000000000000000000000..d576502499c379baeb62f27dc337ad4eae5350ea GIT binary patch literal 3119 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 JPDHLkV1gyG-(dg% literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/space_mountain_wind_glass.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/space_mountain_wind_glass.rsi/meta.json index db0ac608ed..ec55ebfa1f 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/space_mountain_wind_glass.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/space_mountain_wind_glass.rsi/meta.json @@ -1 +1,32 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file +{ + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "license": "CC-BY-SA-3.0", + "copyright": "Made by RumiTiger", + "states": [ + { + "name": "icon" + }, + { + "name": "icon_empty" + }, + { + "name": "fill-1" + }, + { + "name": "fill-2" + }, + { + "name": "fill-3" + }, + { + "name": "fill-4" + }, + { + "name": "fill-5" + } + ] +} diff --git a/Resources/Textures/Objects/Consumable/Drinks/sugarglass.rsi/fill-1.png b/Resources/Textures/Objects/Consumable/Drinks/sugarglass.rsi/fill-1.png new file mode 100644 index 0000000000000000000000000000000000000000..6dce3834eee650e8362a35508c6712b9170f5a0d GIT binary patch literal 2874 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 Y3+Rv&GfnVfy#N3J07*qoM6N<$f`lt=D*ylh literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/sugarglass.rsi/fill-2.png b/Resources/Textures/Objects/Consumable/Drinks/sugarglass.rsi/fill-2.png new file mode 100644 index 0000000000000000000000000000000000000000..64dfddb473a8740fa40af1d55ad7ccd81cdf6042 GIT binary patch literal 2893 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 TU1Kw?00000NkvXXu0mjfPGf^% literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/sugarglass.rsi/fill-7.png b/Resources/Textures/Objects/Consumable/Drinks/sugarglass.rsi/fill-7.png new file mode 100644 index 0000000000000000000000000000000000000000..d7cd6ca7be5591c1990b52183e0bf19b7d7ea68a GIT binary patch literal 2920 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/sugarglass.rsi/icon_empty.png b/Resources/Textures/Objects/Consumable/Drinks/sugarglass.rsi/icon_empty.png new file mode 100644 index 0000000000000000000000000000000000000000..5f3bc4f4c7ff3dfb07b9a984caa9b60324de4684 GIT binary patch literal 2986 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/sugarglass.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/sugarglass.rsi/meta.json new file mode 100644 index 0000000000..55fdf44163 --- /dev/null +++ b/Resources/Textures/Objects/Consumable/Drinks/sugarglass.rsi/meta.json @@ -0,0 +1,38 @@ +{ + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "license": "CC-BY-SA-3.0", + "copyright": "Made by RumiTiger", + "states": [ + { + "name": "icon" + }, + { + "name": "icon_empty" + }, + { + "name": "fill-1" + }, + { + "name": "fill-2" + }, + { + "name": "fill-3" + }, + { + "name": "fill-4" + }, + { + "name": "fill-5" + }, + { + "name": "fill-6" + }, + { + "name": "fill-7" + } + ] +} diff --git a/Resources/Textures/Objects/Consumable/Drinks/teaglass.rsi/fill-1.png b/Resources/Textures/Objects/Consumable/Drinks/teaglass.rsi/fill-1.png new file mode 100644 index 0000000000000000000000000000000000000000..05e6af71a784566d28cfbb6f980ee2380ec52b9a GIT binary patch literal 2937 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/teaglass.rsi/fill-4.png b/Resources/Textures/Objects/Consumable/Drinks/teaglass.rsi/fill-4.png new file mode 100644 index 0000000000000000000000000000000000000000..1a8ed41fde29c0ef31262e54ec680dab9b3b55a7 GIT binary patch literal 2955 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 Bme2qI literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/teaglass.rsi/icon.png b/Resources/Textures/Objects/Consumable/Drinks/teaglass.rsi/icon.png index 727bc3f2fbdfda5d0786fe945f27f2d06d421ddf..b31ed22db53b3683e295ac3871978d80affd6f9a 100644 GIT binary patch delta 3151 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 FV1lNET2lZ3 diff --git a/Resources/Textures/Objects/Consumable/Drinks/teaglass.rsi/icon_empty.png b/Resources/Textures/Objects/Consumable/Drinks/teaglass.rsi/icon_empty.png new file mode 100644 index 0000000000000000000000000000000000000000..abad93afb35ced9664b8be3072ecbb5c9ddedb02 GIT binary patch literal 3127 zcmV-749N3|P)StO&>uS)ve<0AYj>5AR{$W90N^4L=L-RlQUJ&DC0@ZjPh;=*jPLSYvv5M~MFBAl0-BNIsH z15C~g000{K(ZT*WKal6<?_01!^k@7iDG<<3=fuAC~28EsPoqkpK{9G%|Vj005J}`Hw&=0RYXHq~ibpyyzHQsFW8>#s~laM4*8xut5h5 z!4#~(4xGUqyucR%VFpA%3?#rj5JCpzfE)^;7?wd9RKPme1hudO8lVxH;SjXJF*pt9 z;1XPc>u?taU>Kgl7`%oF1VP9M6Ja4bh!J9r*dopd7nzO(B4J20l7OTj>4+3jBE`sZ zqynizYLQ(?Bl0bB6giDtK>Co|$RIL`{EECsF_eL_Q3KQhbwIhO9~z3rpmWi5G!I>X zmZEFX8nhlgfVQHi(M#xcbO3#dj$?q)F%D*o*1Pf{>6$SWH+$s3q(pv=X`qR|$iJF~TPzlc-O$C3+J1 z#CT#lv5;6stS0Uu9wDA3UMCI{Uz12A4#|?_P6{CkNG+sOq(0IRX`DyT~9-sA|ffUF>wk++Z!kWZ5P$;0Hg6gtI-;!FvmBvPc55=u2?Kjj3apE5$3psG>L zsh-pbs)#zDT1jo7c2F-(3)vyY4>O^>2$gY-Gd%Qm(Z8e zYv>2*=jns=cMJ`N4THx>VkjAF8G9M07`GWOnM|ey)0dgZR4~^v8<}UA514ONSSt1^ zd=-((5|uiYR+WC0=c-gyb5%dpd8!Lkt5pxHURHgkMpd&=fR^vEcAI*_=wwAG2sV%zY%w@v@XU~7=xdm1xY6*0;iwVIXu6TaXrs|dqbIl~ z?uTdNHFy_3W~^@g_pF#!K2~{F^;XxcN!DEJEbDF7 zS8PxlSDOr*I-AS3sI8l=#CDr)-xT5$k15hA^;2%zG3@;83hbKf2JJcaVfH2VZT8O{ z%p4LO);n}Nd~$Sk%yw*Wyz8XlG{dRHsl(}4XB%gsbDi@w7p6;)%MzD%mlsoQr;4X; zpL)xc%+^yMd)ZNTI#eJ*$O)i@o$z8)e??LqN_gLa_%;TM>o2SC_ zkmoO6c3xRt`@J4dvz#WL)-Y|z+r(Soy~}%GIzByR`p)SCKE^%*pL(B%zNWq+-#xw~ ze%5}Oeh2)X`#bu}{g3#+;d$~F@lFL`0l@*~0lk45fwKc^10MvL1f>Tx1&sx}1}_Xg z6+#RN4Ot&@lW)Km@*DYMGu&q^n$Z=?2%QyL8~QNJCQKgI5srq>2;UHXZ>IT7>CCnW zh~P(Th`1kV8JQRPeH1AwGO8}>QM6NZadh`A)~w`N`)9q5@sFvDxjWlxwsLl7tZHmh zY-8-3xPZ8-xPf?w_(k!T5_A(J3GIpG#Ms0=iQ{tu=WLoYoaCBRmULsT<=mpV7v|~C z%bs^USv6UZd^m-e5|^?+<%1wXP%juy<)>~<9TW0|n}ttBzM_qyQL(qUN<5P0omQ3h zINdvaL;7fjPeygdGYL;pD|wL_lDQ-EO;$wK-mK5raoH_7l$?~Dqf!lNmb5F^Ft;eT zPi8AClMUo~=55LwlZVRpxOiFd;3B_8yA~shQx|tGF!j;$toK>JuS&gYLDkTP@C~gS@r~shUu{a>bfJ1` z^^VQ7&C1OKHDNXFTgC{M|V%fo{xK_dk6MK@9S!GZ*1JJzrV5xZBjOk z9!NTH<(q(S+MDf~ceQX@Dh|Ry<-sT4rhI$jQ0Sq~!`#Eo-%($2E^vo}is5J@NVEf|KK?WT&2;PCq@=ncR8z zO#GQ^T~S@VXG71PKNocFOt)Y6$@AXlk6rM*aP%VgV%sIRORYVwJx6|U{ozQjTW{-S z_si{9Jg#)~P3t?+@6&(!YQWWV*Z9{iU7vZq@5byKw{9lg9JnRA_4s!7?H6|n?o8ZW zdXIRo{Jz@#>IeD{>VLHUv1Pz*;P_y`V9&!@5AO~Mho1hF|I>%z(nrik)gwkDjgOrl z9~%uCz4Bzvli{bbrxVZ0epdf^>vOB;-~HnIOV3#R*zgPai_gEVd8zYq@2jb=I>#f& zAH2?aJ@KaetePlX*1NknQ$GMkiM_CJN}?##EdeEO_0I-Rr ztg~+waknkq6eTChlLtC@=ZC)s%#kRbb=?JUwjd z@oVT25h$)a0Kgc=piaJ~o_0OqH?!swzSpu{d&rB9^@m=AlUcO`B_sS&frZkH=>t9>BV z#am?P&oWL@J{@<&t=$UXUy$T>Y@?n3j2wUisO2lDqFO2-Y3Ex3sG^+%`~dvff0(GM Ry4nB$002ovPDHLkV1gJ> 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 P00000NkvXXu0mjfdvQb# diff --git a/Resources/Textures/Objects/Consumable/Drinks/tequillaglass.rsi/fill-2.png b/Resources/Textures/Objects/Consumable/Drinks/tequillaglass.rsi/fill-2.png index 8cb7a51424e1673306215de32d2e28b61ad194df..ed17e5669359b00cf25f37ad7445c448e4a957e5 100644 GIT binary patch delta 3046 zcmV z#DdidNS%n{peVR!L5hf4i&b1W?jPKzwS9W;?d|*5`@H9z=YRapdCw1k5fUbm=Avo< zIZ}l@I@lkNPe{bcy?_E0NZAR{$W90N^4L=L-RlQUJ&HumpsYY5E(E}?0f1SyGDiY{y#)Yv zj#!WnKwtoXnL;eg03bL507D)V%>y7z1E4U{zu>7~aD})?0RX_umCct+(lZpemCzb@ z^6=o|A>zVpu|i=NDG+7}=onn6low3K2mk;?pn)o|K?e-M6o0J14xGUqyucR%VFpA%3?#rj5JCpz zfE)^;7?wd9RKPme1hudO8lVxH;SjXJF*pt9;1XPc>u?taU>Kgl7`%oF1VP9M6Ja4b zh!J9r*dopd7nzO(B4J20l7OTj>4+3jBE`sZqynizYLQ(?Bl0bB6giDtK>Co|$RIL` z{C|qPM=_LvvQY!n0(C&Ss2>`N#-MZ2bTkiLfR>_b(HgWKJ%F~Nr_oF3b#wrIijHG| z(J>BYjM-sajE6;FiC7vY#};GdST$CUHDeuEH+B^pz@B062qXfFfD`NpUW5?BY=V%G zM_5c)L#QR}BeW8_2v-S%gfYS=B9o|3w0|Xf68Xe5gFH?u96Mr;y znkCJf7DLOVEu+=YnrUZg_h>Kabh-)MgC0ef(3jF{=m+WN>4Wrl3=M`2gU3i>C>d)R zdl{z~w;3;)Or{0Xmzl^^FxN60nP->}m~T~BD)uUT6_Lskl{%GHm421ys#H~TRX^2v zstZ)BRS&CPR(+;MRkKjzsR`5;tAEw09aX!jHm=T6cT$f~&rx5azF+-<`eO~UhJ{9; zhDf7SW4Fc`jUg7sGG*~tLe_Ft1M4hnm`!3^via;xb_M$zb}xHOQ$usAW~^qBW}W77 z%>fR^vEcAI*_=wwAhIR?(H}Q3Gzd13 z8Ei2)WAMz7W9Vy`X}HnwgyE!jf{!>Pon!|7LN8)u<&o%1yprc02^5|?(D7gKGgil=U$ddrpN8t%H%wbS*Zo4cFb zt=VnV-ON43eXILTE}I+4UBf-^LGTx1&sx}1}_Xg6+#RN4Ot&@lW)Km@*DYM zGu&q^n$Z=?2%QyL8~QNJCQKgI5srq>2;UHXZ>IT7>CCnWh=1TmY>2oYX&IRp`F#{A zDl)1r>QS^)ba8a|EY_^#S^HjiOPpx423?lIEROmG(H@JAFg?XogQlb;dIZ zPf{y+kr|S?BlAsGMAqJ{&)IR=Ejg5&l$@hd4QZCNE7vf$D7Q~$D=U)?Nn}(WA6du22pZOfRS_cv~1-c(_QtNPk+?Gv8+Z>iHuJf);$ekg!m= zu(Q~>cv!j;$toK>JuS&gYLDkTP@C~gS@r~shUu{a>bfJ1`^^VQ7&C1OKHDNXF zTgC{M|V%fo{xK_dk6MK@9S!GZ+~puufM;t32jm~jUGrkaOInTZ`zyf zns>EuS}G30LFK_G-==(f<51|K&cocp&EJ`SxAh3?NO>#LI=^+SEu(FqJ)ynt=!~PC z9bO$rzPJB=?=jt*-L?N>ambo5Q@ zJJIjcfBI^`)pOVQ*DhV3dA;w(>>IakCfyvkCA#(acJ}QTcM9%I++BK)c(44v+WqPW z`VZ=VwEnSWz-{38V8CF{!&wjS4he^z{(qGJ(}&^GN6bgnBSs^QkDVVM8x0!0@?_4F z;is~v6VJ+iR{weHbF1gy{o?ye&shA}@C*5i&%dsDsq=F0tEsO#$0Nrdyv}(&@uvK( z&f9(OxbM2($Gsn!DEvVFQ1j9HW5=h^Pxn6OeE$3|_k{ENEk`)d0000WV@Og>0Dk~_ zCIA3{ga82g0001h=l}q9FaQARU;qF*m;eA5aGbhPJOBUy32;bRa{vG?BLDy{BLR4& zKXw2B0S!q+K~z|U?Uum}!Y~X)zoWna+%p0PHsHcAEP(_=lo?n74lqHH%9R63Zj1nx z%mJko!~r`6q^eJ<8da_R^If|oW`BkjA_6mmhyVbZSVo=wC82gBNdlUn6VM5uls0UF zzdO(l0dW#)uqlZ{2n+yOUI2hj1v9ITEH5~&Q{t$)AcVlqIlb>S3?Q$ebB?0@k>&oN z>u0TXu?*gO_TE?Jn6I~@7}ZPoi3_jgnvRBVACfp~KfU=|6Z5GJrAf}0D_>iC4>2%A zi_K0P$JFZ~#afH9ET68;CSzF)an>3GLxg@001$UCMLmjF#}ih^llJikiEUV&GZx^prw85kJ4JY5_^B3hFZBv=Db@=Ipb!1-LKOJ4jg!JsQm5uYxBk4@BqQRH|ljp z1_lNzR#p^WI>Kn+uJHMy?3C0cC%n2Ub(UB$$nN+M`}^>L10QtT8|T{mRk42X);?~M fb1uxz1#ApO|5W!EHZqj~oyFkk>gTe~DWM4f`+8Ar diff --git a/Resources/Textures/Objects/Consumable/Drinks/tequillaglass.rsi/fill-3.png b/Resources/Textures/Objects/Consumable/Drinks/tequillaglass.rsi/fill-3.png index b17d5ec6b6faf66adbcb245201126d75680f05e6..a240f84f261507c65ee8f75e004096f06a4d5b77 100644 GIT binary patch delta 3039 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 diff --git a/Resources/Textures/Objects/Consumable/Drinks/tequillaglass.rsi/icon.png b/Resources/Textures/Objects/Consumable/Drinks/tequillaglass.rsi/icon.png index 4cac2a3aa48cb133acf6da8b69f4a2ae5137fb19..b1510211cfebdd138214c28d1a64dd1b6eb17d35 100644 GIT binary patch delta 3145 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 delta 422 zcmV;X0a^ad7{3FMBYy#gNklLS!NEzS#lbDw zn)?qL+MN6kg7(H}2pps#-6Cuegd!}LFfhm=#rK}?-rEooG~|5`!HRe0@0{~H_k8zq zsoid4ox#@HJpzaTB7oljAWVggksJmoTut%x$^aT8Ijk0QfqwuR*S(<$gb{#9Y@n1$ z;qdIrXsSgH;4Igf76gE5F;_FyHhTjj?b=Of1W>V^^ilIBUCN{mO!Up(pjNRRqjiNk zf$r3*cc)f8Oz!sxPa&7m0w zDG4wIkbsbLsGzV^^u=TR$0ynJ`h@}r(_mTrjUSgV0*C-2fPW3}0V552BVgC$ QxBvhE07*qoM6N<$f)fwK&j0`b diff --git a/Resources/Textures/Objects/Consumable/Drinks/tequillaglass.rsi/icon_empty.png b/Resources/Textures/Objects/Consumable/Drinks/tequillaglass.rsi/icon_empty.png index 72476b77c00bfc8a3f4e8bec2e28c63144d65c3b..dd4fd594d577aa569314f17abe0db142801c8edd 100644 GIT binary patch delta 3124 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/tonicglass.rsi/fill-4.png b/Resources/Textures/Objects/Consumable/Drinks/tonicglass.rsi/fill-4.png new file mode 100644 index 0000000000000000000000000000000000000000..f3cf6be999d6e55f50d26513c58ddd0bed4a977d GIT binary patch literal 2883 zcmV-J3%vA+P)StO&>uS)ve<0AYj>5AR{$W90N^4L=L-RlQUJ&DC0@ZjPh;=*jPLSYvv5M~MFBAl0-BNIsH z15C~g000{K(ZT*WKal6<?_01!^k@7iDG<<3=fuAC~28EsPoqkpK{9G%|Vj005J}`Hw&=0RYXHq~ibpyyzHQsFW8>#s~laM4*8xut5h5 z!4#~(4xGUqyucR%VFpA%3?#rj5JCpzfE)^;7?wd9RKPme1hudO8lVxH;SjXJF*pt9 z;1XPc>u?taU>Kgl7`%oF1VP9M6Ja4bh!J9r*dopd7nzO(B4J20l7OTj>4+3jBE`sZ zqynizYLQ(?Bl0bB6giDtK>Co|$RIL`{EECsF_eL_Q3KQhbwIhO9~z3rpmWi5G!I>X zmZEFX8nhlgfVQHi(M#xcbO3#dj$?q)F%D*o*1Pf{>6$SWH+$s3q(pv=X`qR|$iJF~TPzlc-O$C3+J1 z#CT#lv5;6stS0Uu9wDA3UMCI{Uz12A4#|?_P6{CkNG+sOq(0IRX`DyT~9-sA|ffUF>wk++Z!kWZ5P$;0Hg6gtI-;!FvmBvPc55=u2?Kjj3apE5$3psG>L zsh-pbs)#zDT1jo7c2F-(3)vyY4>O^>2$gY-Gd%Qm(Z8e zYv>2*=jns=cMJ`N4THx>VkjAF8G9M07`GWOnM|ey)0dgZR4~^v8<}UA514ONSSt1^ zd=-((5|uiYR+WC0=c-gyb5%dpd8!Lkt5pxHURHgkMpd&=fR^vEcAI*_=wwAG2sV%zY%w@v@XU~7=xdm1xY6*0;iwVIXu6TaXrs|dqbIl~ z?uTdNHFy_3W~^@g_pF#!K2~{F^;XxcN!DEJEbDF7 zS8PxlSDOr*I-AS3sI8l=#CDr)-xT5$k15hA^;2%zG3@;83hbKf2JJcaVfH2VZT8O{ z%p4LO);n}Nd~$Sk%yw*Wyz8XlG{dRHsl(}4XB%gsbDi@w7p6;)%MzD%mlsoQr;4X; zpL)xc%+^yMd)ZNTI#eJ*$O)i@o$z8)e??LqN_gLa_%;TM>o2SC_ zkmoO6c3xRt`@J4dvz#WL)-Y|z+r(Soy~}%GIzByR`p)SCKE^%*pL(B%zNWq+-#xw~ ze%5}Oeh2)X`#bu}{g3#+;d$~F@lFL`0l@*~0lk45fwKc^10MvL1f>Tx1&sx}1}_Xg z6+#RN4Ot&@lW)Km@*DYMGu&q^n$Z=?2%QyL8~QNJCQKgI5srq>2;UHXZ>IT7>CCnW zh~P(Th`1kV8JQRPeH1AwGO8}>QM6NZadh`A)~w`N`)9q5@sFvDxjWlxwsLl7tZHmh zY-8-3xPZ8-xPf?w_(k!T5_A(J3GIpG#Ms0=iQ{tu=WLoYoaCBRmULsT<=mpV7v|~C z%bs^USv6UZd^m-e5|^?+<%1wXP%juy<)>~<9TW0|n}ttBzM_qyQL(qUN<5P0omQ3h zINdvaL;7fjPeygdGYL;pD|wL_lDQ-EO;$wK-mK5raoH_7l$?~Dqf!lNmb5F^Ft;eT zPi8AClMUo~=55LwlZVRpxOiFd;3B_8yA~shQx|tGF!j;$toK>JuS&gYLDkTP@C~gS@r~shUu{a>bfJ1` z^^VQ7&C1OKHDNXFTgC{M|V%fo{xK_dk6MK@9S!GZ*1JJzrV5xZBjOk z9!NTH<(q(S+MDf~ceQX@Dh|Ry<-sT4rhI$jQ0Sq~!`#Eo-%($2E^vo}is5J@NVEf|KK?WT&2;PCq@=ncR8z zO#GQ^T~S@VXG71PKNocFOt)Y6$@AXlk6rM*aP%VgV%sIRORYVwJx6|U{ozQjTW{-S z_si{9Jg#)~P3t?+@6&(!YQWWV*Z9{iU7vZq@5byKw{9lg9JnRA_4s!7?H6|n?o8ZW zdXIRo{Jz@#>IeD{>VLHUv1Pz*;P_y`V9&!@5AO~Mho1hF|I>%z(nrik)gwkDjgOrl z9~%uCz4Bzvli{bbrxVZ0epdf^>vOB;-~HnIOV3#R*zgPai_gEVd8zYq@2jb=I>#f& zAH2?aJ@KaetVQ!Pj5>gU zfq{io4fF23`+xt(Kdf@!zJ6oqHI-u|#k>IzfuZMsBqbq6MGj1DStO&>uS)ve<0AYj>5AR{$W90N^4L=L-RlQUJ&DC0@ZjPh;=*jPLSYvv5M~MFBAl0-BNIsH z15C~g000{K(ZT*WKal6<?_01!^k@7iDG<<3=fuAC~28EsPoqkpK{9G%|Vj005J}`Hw&=0RYXHq~ibpyyzHQsFW8>#s~laM4*8xut5h5 z!4#~(4xGUqyucR%VFpA%3?#rj5JCpzfE)^;7?wd9RKPme1hudO8lVxH;SjXJF*pt9 z;1XPc>u?taU>Kgl7`%oF1VP9M6Ja4bh!J9r*dopd7nzO(B4J20l7OTj>4+3jBE`sZ zqynizYLQ(?Bl0bB6giDtK>Co|$RIL`{EECsF_eL_Q3KQhbwIhO9~z3rpmWi5G!I>X zmZEFX8nhlgfVQHi(M#xcbO3#dj$?q)F%D*o*1Pf{>6$SWH+$s3q(pv=X`qR|$iJF~TPzlc-O$C3+J1 z#CT#lv5;6stS0Uu9wDA3UMCI{Uz12A4#|?_P6{CkNG+sOq(0IRX`DyT~9-sA|ffUF>wk++Z!kWZ5P$;0Hg6gtI-;!FvmBvPc55=u2?Kjj3apE5$3psG>L zsh-pbs)#zDT1jo7c2F-(3)vyY4>O^>2$gY-Gd%Qm(Z8e zYv>2*=jns=cMJ`N4THx>VkjAF8G9M07`GWOnM|ey)0dgZR4~^v8<}UA514ONSSt1^ zd=-((5|uiYR+WC0=c-gyb5%dpd8!Lkt5pxHURHgkMpd&=fR^vEcAI*_=wwAG2sV%zY%w@v@XU~7=xdm1xY6*0;iwVIXu6TaXrs|dqbIl~ z?uTdNHFy_3W~^@g_pF#!K2~{F^;XxcN!DEJEbDF7 zS8PxlSDOr*I-AS3sI8l=#CDr)-xT5$k15hA^;2%zG3@;83hbKf2JJcaVfH2VZT8O{ z%p4LO);n}Nd~$Sk%yw*Wyz8XlG{dRHsl(}4XB%gsbDi@w7p6;)%MzD%mlsoQr;4X; zpL)xc%+^yMd)ZNTI#eJ*$O)i@o$z8)e??LqN_gLa_%;TM>o2SC_ zkmoO6c3xRt`@J4dvz#WL)-Y|z+r(Soy~}%GIzByR`p)SCKE^%*pL(B%zNWq+-#xw~ ze%5}Oeh2)X`#bu}{g3#+;d$~F@lFL`0l@*~0lk45fwKc^10MvL1f>Tx1&sx}1}_Xg z6+#RN4Ot&@lW)Km@*DYMGu&q^n$Z=?2%QyL8~QNJCQKgI5srq>2;UHXZ>IT7>CCnW zh~P(Th`1kV8JQRPeH1AwGO8}>QM6NZadh`A)~w`N`)9q5@sFvDxjWlxwsLl7tZHmh zY-8-3xPZ8-xPf?w_(k!T5_A(J3GIpG#Ms0=iQ{tu=WLoYoaCBRmULsT<=mpV7v|~C z%bs^USv6UZd^m-e5|^?+<%1wXP%juy<)>~<9TW0|n}ttBzM_qyQL(qUN<5P0omQ3h zINdvaL;7fjPeygdGYL;pD|wL_lDQ-EO;$wK-mK5raoH_7l$?~Dqf!lNmb5F^Ft;eT zPi8AClMUo~=55LwlZVRpxOiFd;3B_8yA~shQx|tGF!j;$toK>JuS&gYLDkTP@C~gS@r~shUu{a>bfJ1` z^^VQ7&C1OKHDNXFTgC{M|V%fo{xK_dk6MK@9S!GZ*1JJzrV5xZBjOk z9!NTH<(q(S+MDf~ceQX@Dh|Ry<-sT4rhI$jQ0Sq~!`#Eo-%($2E^vo}is5J@NVEf|KK?WT&2;PCq@=ncR8z zO#GQ^T~S@VXG71PKNocFOt)Y6$@AXlk6rM*aP%VgV%sIRORYVwJx6|U{ozQjTW{-S z_si{9Jg#)~P3t?+@6&(!YQWWV*Z9{iU7vZq@5byKw{9lg9JnRA_4s!7?H6|n?o8ZW zdXIRo{Jz@#>IeD{>VLHUv1Pz*;P_y`V9&!@5AO~Mho1hF|I>%z(nrik)gwkDjgOrl z9~%uCz4Bzvli{bbrxVZ0epdf^>vOB;-~HnIOV3#R*zgPai_gEVd8zYq@2jb=I>#f& zAH2?aJ@KaetVQ!P3StO&>uS)ve<0AYj>5AR{$W90N^4L=L-RlQUJ&DC0@ZjPh;=*jPLSYvv5M~MFBAl0-BNIsH z15C~g000{K(ZT*WKal6<?_01!^k@7iDG<<3=fuAC~28EsPoqkpK{9G%|Vj005J}`Hw&=0RYXHq~ibpyyzHQsFW8>#s~laM4*8xut5h5 z!4#~(4xGUqyucR%VFpA%3?#rj5JCpzfE)^;7?wd9RKPme1hudO8lVxH;SjXJF*pt9 z;1XPc>u?taU>Kgl7`%oF1VP9M6Ja4bh!J9r*dopd7nzO(B4J20l7OTj>4+3jBE`sZ zqynizYLQ(?Bl0bB6giDtK>Co|$RIL`{EECsF_eL_Q3KQhbwIhO9~z3rpmWi5G!I>X zmZEFX8nhlgfVQHi(M#xcbO3#dj$?q)F%D*o*1Pf{>6$SWH+$s3q(pv=X`qR|$iJF~TPzlc-O$C3+J1 z#CT#lv5;6stS0Uu9wDA3UMCI{Uz12A4#|?_P6{CkNG+sOq(0IRX`DyT~9-sA|ffUF>wk++Z!kWZ5P$;0Hg6gtI-;!FvmBvPc55=u2?Kjj3apE5$3psG>L zsh-pbs)#zDT1jo7c2F-(3)vyY4>O^>2$gY-Gd%Qm(Z8e zYv>2*=jns=cMJ`N4THx>VkjAF8G9M07`GWOnM|ey)0dgZR4~^v8<}UA514ONSSt1^ zd=-((5|uiYR+WC0=c-gyb5%dpd8!Lkt5pxHURHgkMpd&=fR^vEcAI*_=wwAG2sV%zY%w@v@XU~7=xdm1xY6*0;iwVIXu6TaXrs|dqbIl~ z?uTdNHFy_3W~^@g_pF#!K2~{F^;XxcN!DEJEbDF7 zS8PxlSDOr*I-AS3sI8l=#CDr)-xT5$k15hA^;2%zG3@;83hbKf2JJcaVfH2VZT8O{ z%p4LO);n}Nd~$Sk%yw*Wyz8XlG{dRHsl(}4XB%gsbDi@w7p6;)%MzD%mlsoQr;4X; zpL)xc%+^yMd)ZNTI#eJ*$O)i@o$z8)e??LqN_gLa_%;TM>o2SC_ zkmoO6c3xRt`@J4dvz#WL)-Y|z+r(Soy~}%GIzByR`p)SCKE^%*pL(B%zNWq+-#xw~ ze%5}Oeh2)X`#bu}{g3#+;d$~F@lFL`0l@*~0lk45fwKc^10MvL1f>Tx1&sx}1}_Xg z6+#RN4Ot&@lW)Km@*DYMGu&q^n$Z=?2%QyL8~QNJCQKgI5srq>2;UHXZ>IT7>CCnW zh~P(Th`1kV8JQRPeH1AwGO8}>QM6NZadh`A)~w`N`)9q5@sFvDxjWlxwsLl7tZHmh zY-8-3xPZ8-xPf?w_(k!T5_A(J3GIpG#Ms0=iQ{tu=WLoYoaCBRmULsT<=mpV7v|~C z%bs^USv6UZd^m-e5|^?+<%1wXP%juy<)>~<9TW0|n}ttBzM_qyQL(qUN<5P0omQ3h zINdvaL;7fjPeygdGYL;pD|wL_lDQ-EO;$wK-mK5raoH_7l$?~Dqf!lNmb5F^Ft;eT zPi8AClMUo~=55LwlZVRpxOiFd;3B_8yA~shQx|tGF!j;$toK>JuS&gYLDkTP@C~gS@r~shUu{a>bfJ1` z^^VQ7&C1OKHDNXFTgC{M|V%fo{xK_dk6MK@9S!GZ*1JJzrV5xZBjOk z9!NTH<(q(S+MDf~ceQX@Dh|Ry<-sT4rhI$jQ0Sq~!`#Eo-%($2E^vo}is5J@NVEf|KK?WT&2;PCq@=ncR8z zO#GQ^T~S@VXG71PKNocFOt)Y6$@AXlk6rM*aP%VgV%sIRORYVwJx6|U{ozQjTW{-S z_si{9Jg#)~P3t?+@6&(!YQWWV*Z9{iU7vZq@5byKw{9lg9JnRA_4s!7?H6|n?o8ZW zdXIRo{Jz@#>IeD{>VLHUv1Pz*;P_y`V9&!@5AO~Mho1hF|I>%z(nrik)gwkDjgOrl z9~%uCz4Bzvli{bbrxVZ0epdf^>vOB;-~HnIOV3#R*zgPai_gEVd8zYq@2jb=I>#f& zAH2?aJ@KaetSjg2_xp+BB z5gM)%#UQ{BVJm3;XQZhECazlZzrfAO561ugR$`NaS~&v)gAfA)!#jox#~J?{SQ6(5 zlA~basx|*3>}}C3?_^+LU|^_RF3Z5cAjDu`+R5&*K<{$Z8-_VpVB8;Rx(cnFL-fFuXxhlMbHKC_QOkpolPx3AwA z*lrwUXpfB~x)^3)U|?V*r&T<0)tdh=e*VS~C)IMY9Y9Smw9>$+14bP%>Ht~*0O|!@ zsyseDQ~&?~07*qoM6N<$f-nw!0JG^`Oe*~oeE1dQoa{vGU07*qoM6N<$g4trStO&>uS)ve<0AYj>5AR{$W90N^4L=L-RlQUJ&DC0@ZjPh;=*jPLSYvv5M~MFBAl0-BNIsH z15C~g000{K(ZT*WKal6<?_01!^k@7iDG<<3=fuAC~28EsPoqkpK{9G%|Vj005J}`Hw&=0RYXHq~ibpyyzHQsFW8>#s~laM4*8xut5h5 z!4#~(4xGUqyucR%VFpA%3?#rj5JCpzfE)^;7?wd9RKPme1hudO8lVxH;SjXJF*pt9 z;1XPc>u?taU>Kgl7`%oF1VP9M6Ja4bh!J9r*dopd7nzO(B4J20l7OTj>4+3jBE`sZ zqynizYLQ(?Bl0bB6giDtK>Co|$RIL`{EECsF_eL_Q3KQhbwIhO9~z3rpmWi5G!I>X zmZEFX8nhlgfVQHi(M#xcbO3#dj$?q)F%D*o*1Pf{>6$SWH+$s3q(pv=X`qR|$iJF~TPzlc-O$C3+J1 z#CT#lv5;6stS0Uu9wDA3UMCI{Uz12A4#|?_P6{CkNG+sOq(0IRX`DyT~9-sA|ffUF>wk++Z!kWZ5P$;0Hg6gtI-;!FvmBvPc55=u2?Kjj3apE5$3psG>L zsh-pbs)#zDT1jo7c2F-(3)vyY4>O^>2$gY-Gd%Qm(Z8e zYv>2*=jns=cMJ`N4THx>VkjAF8G9M07`GWOnM|ey)0dgZR4~^v8<}UA514ONSSt1^ zd=-((5|uiYR+WC0=c-gyb5%dpd8!Lkt5pxHURHgkMpd&=fR^vEcAI*_=wwAG2sV%zY%w@v@XU~7=xdm1xY6*0;iwVIXu6TaXrs|dqbIl~ z?uTdNHFy_3W~^@g_pF#!K2~{F^;XxcN!DEJEbDF7 zS8PxlSDOr*I-AS3sI8l=#CDr)-xT5$k15hA^;2%zG3@;83hbKf2JJcaVfH2VZT8O{ z%p4LO);n}Nd~$Sk%yw*Wyz8XlG{dRHsl(}4XB%gsbDi@w7p6;)%MzD%mlsoQr;4X; zpL)xc%+^yMd)ZNTI#eJ*$O)i@o$z8)e??LqN_gLa_%;TM>o2SC_ zkmoO6c3xRt`@J4dvz#WL)-Y|z+r(Soy~}%GIzByR`p)SCKE^%*pL(B%zNWq+-#xw~ ze%5}Oeh2)X`#bu}{g3#+;d$~F@lFL`0l@*~0lk45fwKc^10MvL1f>Tx1&sx}1}_Xg z6+#RN4Ot&@lW)Km@*DYMGu&q^n$Z=?2%QyL8~QNJCQKgI5srq>2;UHXZ>IT7>CCnW zh~P(Th`1kV8JQRPeH1AwGO8}>QM6NZadh`A)~w`N`)9q5@sFvDxjWlxwsLl7tZHmh zY-8-3xPZ8-xPf?w_(k!T5_A(J3GIpG#Ms0=iQ{tu=WLoYoaCBRmULsT<=mpV7v|~C z%bs^USv6UZd^m-e5|^?+<%1wXP%juy<)>~<9TW0|n}ttBzM_qyQL(qUN<5P0omQ3h zINdvaL;7fjPeygdGYL;pD|wL_lDQ-EO;$wK-mK5raoH_7l$?~Dqf!lNmb5F^Ft;eT zPi8AClMUo~=55LwlZVRpxOiFd;3B_8yA~shQx|tGF!j;$toK>JuS&gYLDkTP@C~gS@r~shUu{a>bfJ1` z^^VQ7&C1OKHDNXFTgC{M|V%fo{xK_dk6MK@9S!GZ*1JJzrV5xZBjOk z9!NTH<(q(S+MDf~ceQX@Dh|Ry<-sT4rhI$jQ0Sq~!`#Eo-%($2E^vo}is5J@NVEf|KK?WT&2;PCq@=ncR8z zO#GQ^T~S@VXG71PKNocFOt)Y6$@AXlk6rM*aP%VgV%sIRORYVwJx6|U{ozQjTW{-S z_si{9Jg#)~P3t?+@6&(!YQWWV*Z9{iU7vZq@5byKw{9lg9JnRA_4s!7?H6|n?o8ZW zdXIRo{Jz@#>IeD{>VLHUv1Pz*;P_y`V9&!@5AO~Mho1hF|I>%z(nrik)gwkDjgOrl z9~%uCz4Bzvli{bbrxVZ0epdf^>vOB;-~HnIOV3#R*zgPai_gEVd8zYq@2jb=I>#f& zAH2?aJ@KaetSjg2_xp+BB z5gM)%#UQ{BVJm3;XQZhECazlZzrfAO561ugR$`NaS~&v)gAfA)!#jox#~J?{SQ6(5 zlA~basx|*3>}}C3?_^+LU|^_RF3Z5cAjDu`+R5*VStO&>uS)ve<0AYj>5AR{$W90N^4L=L-RlQUJ&DC0@ZjPh;=*jPLSYvv5M~MFBAl0-BNIsH z15C~g000{K(ZT*WKal6<?_01!^k@7iDG<<3=fuAC~28EsPoqkpK{9G%|Vj005J}`Hw&=0RYXHq~ibpyyzHQsFW8>#s~laM4*8xut5h5 z!4#~(4xGUqyucR%VFpA%3?#rj5JCpzfE)^;7?wd9RKPme1hudO8lVxH;SjXJF*pt9 z;1XPc>u?taU>Kgl7`%oF1VP9M6Ja4bh!J9r*dopd7nzO(B4J20l7OTj>4+3jBE`sZ zqynizYLQ(?Bl0bB6giDtK>Co|$RIL`{EECsF_eL_Q3KQhbwIhO9~z3rpmWi5G!I>X zmZEFX8nhlgfVQHi(M#xcbO3#dj$?q)F%D*o*1Pf{>6$SWH+$s3q(pv=X`qR|$iJF~TPzlc-O$C3+J1 z#CT#lv5;6stS0Uu9wDA3UMCI{Uz12A4#|?_P6{CkNG+sOq(0IRX`DyT~9-sA|ffUF>wk++Z!kWZ5P$;0Hg6gtI-;!FvmBvPc55=u2?Kjj3apE5$3psG>L zsh-pbs)#zDT1jo7c2F-(3)vyY4>O^>2$gY-Gd%Qm(Z8e zYv>2*=jns=cMJ`N4THx>VkjAF8G9M07`GWOnM|ey)0dgZR4~^v8<}UA514ONSSt1^ zd=-((5|uiYR+WC0=c-gyb5%dpd8!Lkt5pxHURHgkMpd&=fR^vEcAI*_=wwAG2sV%zY%w@v@XU~7=xdm1xY6*0;iwVIXu6TaXrs|dqbIl~ z?uTdNHFy_3W~^@g_pF#!K2~{F^;XxcN!DEJEbDF7 zS8PxlSDOr*I-AS3sI8l=#CDr)-xT5$k15hA^;2%zG3@;83hbKf2JJcaVfH2VZT8O{ z%p4LO);n}Nd~$Sk%yw*Wyz8XlG{dRHsl(}4XB%gsbDi@w7p6;)%MzD%mlsoQr;4X; zpL)xc%+^yMd)ZNTI#eJ*$O)i@o$z8)e??LqN_gLa_%;TM>o2SC_ zkmoO6c3xRt`@J4dvz#WL)-Y|z+r(Soy~}%GIzByR`p)SCKE^%*pL(B%zNWq+-#xw~ ze%5}Oeh2)X`#bu}{g3#+;d$~F@lFL`0l@*~0lk45fwKc^10MvL1f>Tx1&sx}1}_Xg z6+#RN4Ot&@lW)Km@*DYMGu&q^n$Z=?2%QyL8~QNJCQKgI5srq>2;UHXZ>IT7>CCnW zh~P(Th`1kV8JQRPeH1AwGO8}>QM6NZadh`A)~w`N`)9q5@sFvDxjWlxwsLl7tZHmh zY-8-3xPZ8-xPf?w_(k!T5_A(J3GIpG#Ms0=iQ{tu=WLoYoaCBRmULsT<=mpV7v|~C z%bs^USv6UZd^m-e5|^?+<%1wXP%juy<)>~<9TW0|n}ttBzM_qyQL(qUN<5P0omQ3h zINdvaL;7fjPeygdGYL;pD|wL_lDQ-EO;$wK-mK5raoH_7l$?~Dqf!lNmb5F^Ft;eT zPi8AClMUo~=55LwlZVRpxOiFd;3B_8yA~shQx|tGF!j;$toK>JuS&gYLDkTP@C~gS@r~shUu{a>bfJ1` z^^VQ7&C1OKHDNXFTgC{M|V%fo{xK_dk6MK@9S!GZ*1JJzrV5xZBjOk z9!NTH<(q(S+MDf~ceQX@Dh|Ry<-sT4rhI$jQ0Sq~!`#Eo-%($2E^vo}is5J@NVEf|KK?WT&2;PCq@=ncR8z zO#GQ^T~S@VXG71PKNocFOt)Y6$@AXlk6rM*aP%VgV%sIRORYVwJx6|U{ozQjTW{-S z_si{9Jg#)~P3t?+@6&(!YQWWV*Z9{iU7vZq@5byKw{9lg9JnRA_4s!7?H6|n?o8ZW zdXIRo{Jz@#>IeD{>VLHUv1Pz*;P_y`V9&!@5AO~Mho1hF|I>%z(nrik)gwkDjgOrl z9~%uCz4Bzvli{bbrxVZ0epdf^>vOB;-~HnIOV3#R*zgPai_gEVd8zYq@2jb=I>#f& zAH2?aJ@KaetOs_6ijHwg*M0!-Vr8c11Rl#f`=-nr*oNm-F7RYS fbsGji00h7XWG^f%#sk2N00000NkvXXu0mjfI`WM3 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/watermelonglass.rsi/fill-2.png b/Resources/Textures/Objects/Consumable/Drinks/watermelonglass.rsi/fill-2.png new file mode 100644 index 0000000000000000000000000000000000000000..7563af563a7812db7e7e3884b54287d72b31e73c GIT binary patch literal 2936 zcmV-;3y1WHP)StO&>uS)ve<0AYj>5AR{$W90N^4L=L-RlQUJ&DC0@ZjPh;=*jPLSYvv5M~MFBAl0-BNIsH z15C~g000{K(ZT*WKal6<?_01!^k@7iDG<<3=fuAC~28EsPoqkpK{9G%|Vj005J}`Hw&=0RYXHq~ibpyyzHQsFW8>#s~laM4*8xut5h5 z!4#~(4xGUqyucR%VFpA%3?#rj5JCpzfE)^;7?wd9RKPme1hudO8lVxH;SjXJF*pt9 z;1XPc>u?taU>Kgl7`%oF1VP9M6Ja4bh!J9r*dopd7nzO(B4J20l7OTj>4+3jBE`sZ zqynizYLQ(?Bl0bB6giDtK>Co|$RIL`{EECsF_eL_Q3KQhbwIhO9~z3rpmWi5G!I>X zmZEFX8nhlgfVQHi(M#xcbO3#dj$?q)F%D*o*1Pf{>6$SWH+$s3q(pv=X`qR|$iJF~TPzlc-O$C3+J1 z#CT#lv5;6stS0Uu9wDA3UMCI{Uz12A4#|?_P6{CkNG+sOq(0IRX`DyT~9-sA|ffUF>wk++Z!kWZ5P$;0Hg6gtI-;!FvmBvPc55=u2?Kjj3apE5$3psG>L zsh-pbs)#zDT1jo7c2F-(3)vyY4>O^>2$gY-Gd%Qm(Z8e zYv>2*=jns=cMJ`N4THx>VkjAF8G9M07`GWOnM|ey)0dgZR4~^v8<}UA514ONSSt1^ zd=-((5|uiYR+WC0=c-gyb5%dpd8!Lkt5pxHURHgkMpd&=fR^vEcAI*_=wwAG2sV%zY%w@v@XU~7=xdm1xY6*0;iwVIXu6TaXrs|dqbIl~ z?uTdNHFy_3W~^@g_pF#!K2~{F^;XxcN!DEJEbDF7 zS8PxlSDOr*I-AS3sI8l=#CDr)-xT5$k15hA^;2%zG3@;83hbKf2JJcaVfH2VZT8O{ z%p4LO);n}Nd~$Sk%yw*Wyz8XlG{dRHsl(}4XB%gsbDi@w7p6;)%MzD%mlsoQr;4X; zpL)xc%+^yMd)ZNTI#eJ*$O)i@o$z8)e??LqN_gLa_%;TM>o2SC_ zkmoO6c3xRt`@J4dvz#WL)-Y|z+r(Soy~}%GIzByR`p)SCKE^%*pL(B%zNWq+-#xw~ ze%5}Oeh2)X`#bu}{g3#+;d$~F@lFL`0l@*~0lk45fwKc^10MvL1f>Tx1&sx}1}_Xg z6+#RN4Ot&@lW)Km@*DYMGu&q^n$Z=?2%QyL8~QNJCQKgI5srq>2;UHXZ>IT7>CCnW zh~P(Th`1kV8JQRPeH1AwGO8}>QM6NZadh`A)~w`N`)9q5@sFvDxjWlxwsLl7tZHmh zY-8-3xPZ8-xPf?w_(k!T5_A(J3GIpG#Ms0=iQ{tu=WLoYoaCBRmULsT<=mpV7v|~C z%bs^USv6UZd^m-e5|^?+<%1wXP%juy<)>~<9TW0|n}ttBzM_qyQL(qUN<5P0omQ3h zINdvaL;7fjPeygdGYL;pD|wL_lDQ-EO;$wK-mK5raoH_7l$?~Dqf!lNmb5F^Ft;eT zPi8AClMUo~=55LwlZVRpxOiFd;3B_8yA~shQx|tGF!j;$toK>JuS&gYLDkTP@C~gS@r~shUu{a>bfJ1` z^^VQ7&C1OKHDNXFTgC{M|V%fo{xK_dk6MK@9S!GZ*1JJzrV5xZBjOk z9!NTH<(q(S+MDf~ceQX@Dh|Ry<-sT4rhI$jQ0Sq~!`#Eo-%($2E^vo}is5J@NVEf|KK?WT&2;PCq@=ncR8z zO#GQ^T~S@VXG71PKNocFOt)Y6$@AXlk6rM*aP%VgV%sIRORYVwJx6|U{ozQjTW{-S z_si{9Jg#)~P3t?+@6&(!YQWWV*Z9{iU7vZq@5byKw{9lg9JnRA_4s!7?H6|n?o8ZW zdXIRo{Jz@#>IeD{>VLHUv1Pz*;P_y`V9&!@5AO~Mho1hF|I>%z(nrik)gwkDjgOrl z9~%uCz4Bzvli{bbrxVZ0epdf^>vOB;-~HnIOV3#R*zgPai_gEVd8zYq@2jb=I>#f& zAH2?aJ@KaetVQ!Pj5=WGJAjdq zabO)lDPW{VQA`OK@DLbv03!nf1KCw6H2@Q-mQ$MTFw7%I6Fx_i>cF9y27XwC|Nr~# z2Z~rT!)u0)OUFnKQIgXDE>OuJN|ru~qoA4LHAVW#E{ebE`J-s$zO<371U)?J0!qq; i0ndh`4j6U7r~?4s{VgZ>K-v2M0000StO&>uS)ve<0AYj>5AR{$W90N^4L=L-RlQUJ&DC0@ZjPh;=*jPLSYvv5M~MFBAl0-BNIsH z15C~g000{K(ZT*WKal6<?_01!^k@7iDG<<3=fuAC~28EsPoqkpK{9G%|Vj005J}`Hw&=0RYXHq~ibpyyzHQsFW8>#s~laM4*8xut5h5 z!4#~(4xGUqyucR%VFpA%3?#rj5JCpzfE)^;7?wd9RKPme1hudO8lVxH;SjXJF*pt9 z;1XPc>u?taU>Kgl7`%oF1VP9M6Ja4bh!J9r*dopd7nzO(B4J20l7OTj>4+3jBE`sZ zqynizYLQ(?Bl0bB6giDtK>Co|$RIL`{EECsF_eL_Q3KQhbwIhO9~z3rpmWi5G!I>X zmZEFX8nhlgfVQHi(M#xcbO3#dj$?q)F%D*o*1Pf{>6$SWH+$s3q(pv=X`qR|$iJF~TPzlc-O$C3+J1 z#CT#lv5;6stS0Uu9wDA3UMCI{Uz12A4#|?_P6{CkNG+sOq(0IRX`DyT~9-sA|ffUF>wk++Z!kWZ5P$;0Hg6gtI-;!FvmBvPc55=u2?Kjj3apE5$3psG>L zsh-pbs)#zDT1jo7c2F-(3)vyY4>O^>2$gY-Gd%Qm(Z8e zYv>2*=jns=cMJ`N4THx>VkjAF8G9M07`GWOnM|ey)0dgZR4~^v8<}UA514ONSSt1^ zd=-((5|uiYR+WC0=c-gyb5%dpd8!Lkt5pxHURHgkMpd&=fR^vEcAI*_=wwAG2sV%zY%w@v@XU~7=xdm1xY6*0;iwVIXu6TaXrs|dqbIl~ z?uTdNHFy_3W~^@g_pF#!K2~{F^;XxcN!DEJEbDF7 zS8PxlSDOr*I-AS3sI8l=#CDr)-xT5$k15hA^;2%zG3@;83hbKf2JJcaVfH2VZT8O{ z%p4LO);n}Nd~$Sk%yw*Wyz8XlG{dRHsl(}4XB%gsbDi@w7p6;)%MzD%mlsoQr;4X; zpL)xc%+^yMd)ZNTI#eJ*$O)i@o$z8)e??LqN_gLa_%;TM>o2SC_ zkmoO6c3xRt`@J4dvz#WL)-Y|z+r(Soy~}%GIzByR`p)SCKE^%*pL(B%zNWq+-#xw~ ze%5}Oeh2)X`#bu}{g3#+;d$~F@lFL`0l@*~0lk45fwKc^10MvL1f>Tx1&sx}1}_Xg z6+#RN4Ot&@lW)Km@*DYMGu&q^n$Z=?2%QyL8~QNJCQKgI5srq>2;UHXZ>IT7>CCnW zh~P(Th`1kV8JQRPeH1AwGO8}>QM6NZadh`A)~w`N`)9q5@sFvDxjWlxwsLl7tZHmh zY-8-3xPZ8-xPf?w_(k!T5_A(J3GIpG#Ms0=iQ{tu=WLoYoaCBRmULsT<=mpV7v|~C z%bs^USv6UZd^m-e5|^?+<%1wXP%juy<)>~<9TW0|n}ttBzM_qyQL(qUN<5P0omQ3h zINdvaL;7fjPeygdGYL;pD|wL_lDQ-EO;$wK-mK5raoH_7l$?~Dqf!lNmb5F^Ft;eT zPi8AClMUo~=55LwlZVRpxOiFd;3B_8yA~shQx|tGF!j;$toK>JuS&gYLDkTP@C~gS@r~shUu{a>bfJ1` z^^VQ7&C1OKHDNXFTgC{M|V%fo{xK_dk6MK@9S!GZ*1JJzrV5xZBjOk z9!NTH<(q(S+MDf~ceQX@Dh|Ry<-sT4rhI$jQ0Sq~!`#Eo-%($2E^vo}is5J@NVEf|KK?WT&2;PCq@=ncR8z zO#GQ^T~S@VXG71PKNocFOt)Y6$@AXlk6rM*aP%VgV%sIRORYVwJx6|U{ozQjTW{-S z_si{9Jg#)~P3t?+@6&(!YQWWV*Z9{iU7vZq@5byKw{9lg9JnRA_4s!7?H6|n?o8ZW zdXIRo{Jz@#>IeD{>VLHUv1Pz*;P_y`V9&!@5AO~Mho1hF|I>%z(nrik)gwkDjgOrl z9~%uCz4Bzvli{bbrxVZ0epdf^>vOB;-~HnIOV3#R*zgPai_gEVd8zYq@2jb=I>#f& zAH2?aJ@Kaet3$J0h*YFBn!@^1sPh#&?_5vQj z(yW4@W3ehOTV*B?lzEUQFmJwu`JsrwDw5Fp1ao$y9KZn_;P(MY)&;PNB}TDD)qlVN z2td6`ODNZo|#%TP!; Tr@;aZ00000NkvXXu0mjf$bOs| literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/watermelonglass.rsi/fill-4.png b/Resources/Textures/Objects/Consumable/Drinks/watermelonglass.rsi/fill-4.png new file mode 100644 index 0000000000000000000000000000000000000000..010224c48eb2dbfe4fd08d8dcfedda1804c8aa26 GIT binary patch literal 3000 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 SUx4ud0000 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/watermelonglass.rsi/icon_empty.png b/Resources/Textures/Objects/Consumable/Drinks/watermelonglass.rsi/icon_empty.png new file mode 100644 index 0000000000000000000000000000000000000000..ab9ba53863e8725f6e6fd0b67970dd92370fd4f6 GIT binary patch literal 3107 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 Date: Sun, 28 Apr 2024 07:48:19 +0300 Subject: [PATCH 046/110] Added localization of groups and types: damage, metabolism (#27368) * Added localization of groups and types: damage, metabolism (displayed in the guide book). The text for the health analyzer, weapon damage inspection is now taken from damage prototypes * fix damage tests * fix damage test yml * fix damage test prototypes * Update Content.Shared/Damage/Prototypes/DamageGroupPrototype.cs * Update Content.Shared/Damage/Prototypes/DamageTypePrototype.cs --------- Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> --- .../Controls/GuideReagentEmbed.xaml.cs | 3 ++- .../UI/HealthAnalyzerWindow.xaml.cs | 4 ++-- .../Tests/Damageable/DamageableTest.cs | 9 +++++++ .../DestructibleTestPrototypes.cs | 8 +++++++ .../ReagentEffectConditions/OrganType.cs | 4 ++-- .../ReagentThreshold.cs | 4 ++-- .../Chemistry/ReagentEffects/AdjustReagent.cs | 4 ++-- .../Chemistry/ReagentEffects/HealthChange.cs | 4 ++-- .../Prototypes/MetabolismGroupPrototype.cs | 8 ++++++- .../Prototypes/MetabolizerTypePrototype.cs | 7 ++++-- .../Damage/Prototypes/DamageGroupPrototype.cs | 6 +++++ .../Damage/Prototypes/DamageTypePrototype.cs | 6 +++++ .../Damage/Systems/DamageExamineSystem.cs | 5 +++- Content.Tests/Shared/DamageTest.cs | 16 +++++++++++++ .../Locale/en-US/damage/damage-groups.ftl | 5 ++++ .../Locale/en-US/damage/damage-types.ftl | 13 ++++++++++ .../en-US/guidebook/chemistry/conditions.ftl | 4 +++- .../components/health-analyzer-component.ftl | 22 ----------------- .../en-US/metabolism/metabolism-groups.ftl | 7 ++++++ .../en-US/metabolism/metabolizer-types.ftl | 11 +++++++++ .../Chemistry/metabolism_groups.yml | 9 ++++++- .../Chemistry/metabolizer_types.yml | 24 +++++++++---------- Resources/Prototypes/Damage/groups.yml | 5 ++++ Resources/Prototypes/Damage/types.yml | 13 ++++++++++ 24 files changed, 150 insertions(+), 51 deletions(-) create mode 100644 Resources/Locale/en-US/damage/damage-groups.ftl create mode 100644 Resources/Locale/en-US/damage/damage-types.ftl create mode 100644 Resources/Locale/en-US/metabolism/metabolism-groups.ftl create mode 100644 Resources/Locale/en-US/metabolism/metabolizer-types.ftl diff --git a/Content.Client/Guidebook/Controls/GuideReagentEmbed.xaml.cs b/Content.Client/Guidebook/Controls/GuideReagentEmbed.xaml.cs index e2b09386df..537494933b 100644 --- a/Content.Client/Guidebook/Controls/GuideReagentEmbed.xaml.cs +++ b/Content.Client/Guidebook/Controls/GuideReagentEmbed.xaml.cs @@ -4,6 +4,7 @@ using Content.Client.Chemistry.EntitySystems; using Content.Client.Guidebook.Richtext; using Content.Client.Message; using Content.Client.UserInterface.ControlExtensions; +using Content.Shared.Body.Prototypes; using Content.Shared.Chemistry.Reaction; using Content.Shared.Chemistry.Reagent; using JetBrains.Annotations; @@ -128,7 +129,7 @@ public sealed partial class GuideReagentEmbed : BoxContainer, IDocumentTag, ISea var groupLabel = new RichTextLabel(); groupLabel.SetMarkup(Loc.GetString("guidebook-reagent-effects-metabolism-group-rate", - ("group", group), ("rate", effect.MetabolismRate))); + ("group", _prototype.Index(group).LocalizedName), ("rate", effect.MetabolismRate))); var descriptionLabel = new RichTextLabel { Margin = new Thickness(25, 0, 10, 0) diff --git a/Content.Client/HealthAnalyzer/UI/HealthAnalyzerWindow.xaml.cs b/Content.Client/HealthAnalyzer/UI/HealthAnalyzerWindow.xaml.cs index 0cb3ad144d..fcf6d4551f 100644 --- a/Content.Client/HealthAnalyzer/UI/HealthAnalyzerWindow.xaml.cs +++ b/Content.Client/HealthAnalyzer/UI/HealthAnalyzerWindow.xaml.cs @@ -139,7 +139,7 @@ namespace Content.Client.HealthAnalyzer.UI var groupTitleText = $"{Loc.GetString( "health-analyzer-window-damage-group-text", - ("damageGroup", Loc.GetString("health-analyzer-window-damage-group-" + damageGroupId)), + ("damageGroup", _prototypes.Index(damageGroupId).LocalizedName), ("amount", damageAmount) )}"; @@ -170,7 +170,7 @@ namespace Content.Client.HealthAnalyzer.UI var damageString = Loc.GetString( "health-analyzer-window-damage-type-text", - ("damageType", Loc.GetString("health-analyzer-window-damage-type-" + type)), + ("damageType", _prototypes.Index(type).LocalizedName), ("amount", typeAmount) ); diff --git a/Content.IntegrationTests/Tests/Damageable/DamageableTest.cs b/Content.IntegrationTests/Tests/Damageable/DamageableTest.cs index 16744d83dc..c40b8ed286 100644 --- a/Content.IntegrationTests/Tests/Damageable/DamageableTest.cs +++ b/Content.IntegrationTests/Tests/Damageable/DamageableTest.cs @@ -19,36 +19,45 @@ namespace Content.IntegrationTests.Tests.Damageable # Define some damage groups - type: damageType id: TestDamage1 + name: damage-type-blunt - type: damageType id: TestDamage2a + name: damage-type-blunt - type: damageType id: TestDamage2b + name: damage-type-blunt - type: damageType id: TestDamage3a + name: damage-type-blunt - type: damageType id: TestDamage3b + name: damage-type-blunt - type: damageType id: TestDamage3c + name: damage-type-blunt # Define damage Groups with 1,2,3 damage types - type: damageGroup id: TestGroup1 + name: damage-group-brute damageTypes: - TestDamage1 - type: damageGroup id: TestGroup2 + name: damage-group-brute damageTypes: - TestDamage2a - TestDamage2b - type: damageGroup id: TestGroup3 + name: damage-group-brute damageTypes: - TestDamage3a - TestDamage3b diff --git a/Content.IntegrationTests/Tests/Destructible/DestructibleTestPrototypes.cs b/Content.IntegrationTests/Tests/Destructible/DestructibleTestPrototypes.cs index 12292f4652..7ff9242398 100644 --- a/Content.IntegrationTests/Tests/Destructible/DestructibleTestPrototypes.cs +++ b/Content.IntegrationTests/Tests/Destructible/DestructibleTestPrototypes.cs @@ -12,24 +12,31 @@ namespace Content.IntegrationTests.Tests.Destructible public const string DamagePrototypes = $@" - type: damageType id: TestBlunt + name: damage-type-blunt - type: damageType id: TestSlash + name: damage-type-slash - type: damageType id: TestPiercing + name: damage-type-piercing - type: damageType id: TestHeat + name: damage-type-heat - type: damageType id: TestShock + name: damage-type-shock - type: damageType id: TestCold + name: damage-type-cold - type: damageGroup id: TestBrute + name: damage-group-brute damageTypes: - TestBlunt - TestSlash @@ -37,6 +44,7 @@ namespace Content.IntegrationTests.Tests.Destructible - type: damageGroup id: TestBurn + name: damage-group-burn damageTypes: - TestHeat - TestShock diff --git a/Content.Server/Chemistry/ReagentEffectConditions/OrganType.cs b/Content.Server/Chemistry/ReagentEffectConditions/OrganType.cs index 3b7bffb9cf..4ae13b6a6e 100644 --- a/Content.Server/Chemistry/ReagentEffectConditions/OrganType.cs +++ b/Content.Server/Chemistry/ReagentEffectConditions/OrganType.cs @@ -1,4 +1,4 @@ -using Content.Server.Body.Components; +using Content.Server.Body.Components; using Content.Shared.Body.Prototypes; using Content.Shared.Chemistry.Reagent; using Robust.Shared.Prototypes; @@ -35,7 +35,7 @@ namespace Content.Server.Chemistry.ReagentEffectConditions public override string GuidebookExplanation(IPrototypeManager prototype) { return Loc.GetString("reagent-effect-condition-guidebook-organ-type", - ("name", prototype.Index(Type).Name), + ("name", prototype.Index(Type).LocalizedName), ("shouldhave", ShouldHave)); } } diff --git a/Content.Server/Chemistry/ReagentEffectConditions/ReagentThreshold.cs b/Content.Server/Chemistry/ReagentEffectConditions/ReagentThreshold.cs index 664569d7be..6ac1549ab0 100644 --- a/Content.Server/Chemistry/ReagentEffectConditions/ReagentThreshold.cs +++ b/Content.Server/Chemistry/ReagentEffectConditions/ReagentThreshold.cs @@ -1,4 +1,4 @@ -using Content.Shared.Chemistry.Reagent; +using Content.Shared.Chemistry.Reagent; using Content.Shared.FixedPoint; using Robust.Shared.Prototypes; @@ -43,7 +43,7 @@ namespace Content.Server.Chemistry.ReagentEffectConditions prototype.TryIndex(Reagent, out reagentProto); return Loc.GetString("reagent-effect-condition-guidebook-reagent-threshold", - ("reagent", reagentProto?.LocalizedName ?? "this reagent"), + ("reagent", reagentProto?.LocalizedName ?? Loc.GetString("reagent-effect-condition-guidebook-this-reagent")), ("max", Max == FixedPoint2.MaxValue ? (float) int.MaxValue : Max.Float()), ("min", Min.Float())); } diff --git a/Content.Server/Chemistry/ReagentEffects/AdjustReagent.cs b/Content.Server/Chemistry/ReagentEffects/AdjustReagent.cs index e70626f1d3..16d69edd9a 100644 --- a/Content.Server/Chemistry/ReagentEffects/AdjustReagent.cs +++ b/Content.Server/Chemistry/ReagentEffects/AdjustReagent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Body.Prototypes; +using Content.Shared.Body.Prototypes; using Content.Shared.Chemistry.Reagent; using Content.Shared.FixedPoint; using JetBrains.Annotations; @@ -74,7 +74,7 @@ namespace Content.Server.Chemistry.ReagentEffects return Loc.GetString("reagent-effect-guidebook-adjust-reagent-group", ("chance", Probability), ("deltasign", MathF.Sign(Amount.Float())), - ("group", groupProto.ID), + ("group", groupProto.LocalizedName), ("amount", MathF.Abs(Amount.Float()))); } diff --git a/Content.Server/Chemistry/ReagentEffects/HealthChange.cs b/Content.Server/Chemistry/ReagentEffects/HealthChange.cs index 2a6181c7f3..24880cfd37 100644 --- a/Content.Server/Chemistry/ReagentEffects/HealthChange.cs +++ b/Content.Server/Chemistry/ReagentEffects/HealthChange.cs @@ -74,7 +74,7 @@ namespace Content.Server.Chemistry.ReagentEffects damages.Add( Loc.GetString("health-change-display", - ("kind", group.ID), + ("kind", group.LocalizedName), ("amount", MathF.Abs(amount.Float())), ("deltasign", sign) )); @@ -96,7 +96,7 @@ namespace Content.Server.Chemistry.ReagentEffects damages.Add( Loc.GetString("health-change-display", - ("kind", kind), + ("kind", prototype.Index(kind).LocalizedName), ("amount", MathF.Abs(amount.Float())), ("deltasign", sign) )); diff --git a/Content.Shared/Body/Prototypes/MetabolismGroupPrototype.cs b/Content.Shared/Body/Prototypes/MetabolismGroupPrototype.cs index 162b5f2d6c..82f4e70ce0 100644 --- a/Content.Shared/Body/Prototypes/MetabolismGroupPrototype.cs +++ b/Content.Shared/Body/Prototypes/MetabolismGroupPrototype.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Prototypes; +using Robust.Shared.Prototypes; namespace Content.Shared.Body.Prototypes { @@ -7,5 +7,11 @@ namespace Content.Shared.Body.Prototypes { [IdDataField] public string ID { get; private set; } = default!; + + [DataField("name", required: true)] + private LocId Name { get; set; } + + [ViewVariables(VVAccess.ReadOnly)] + public string LocalizedName => Loc.GetString(Name); } } diff --git a/Content.Shared/Body/Prototypes/MetabolizerTypePrototype.cs b/Content.Shared/Body/Prototypes/MetabolizerTypePrototype.cs index c840983ca0..5273ac722b 100644 --- a/Content.Shared/Body/Prototypes/MetabolizerTypePrototype.cs +++ b/Content.Shared/Body/Prototypes/MetabolizerTypePrototype.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Prototypes; +using Robust.Shared.Prototypes; namespace Content.Shared.Body.Prototypes { @@ -9,6 +9,9 @@ namespace Content.Shared.Body.Prototypes public string ID { get; private set; } = default!; [DataField("name", required: true)] - public string Name { get; private set; } = default!; + private LocId Name { get; set; } + + [ViewVariables(VVAccess.ReadOnly)] + public string LocalizedName => Loc.GetString(Name); } } diff --git a/Content.Shared/Damage/Prototypes/DamageGroupPrototype.cs b/Content.Shared/Damage/Prototypes/DamageGroupPrototype.cs index 807f143708..bb5aea3a38 100644 --- a/Content.Shared/Damage/Prototypes/DamageGroupPrototype.cs +++ b/Content.Shared/Damage/Prototypes/DamageGroupPrototype.cs @@ -17,6 +17,12 @@ namespace Content.Shared.Damage.Prototypes { [IdDataField] public string ID { get; } = default!; + [DataField(required: true)] + private LocId Name { get; set; } + + [ViewVariables(VVAccess.ReadOnly)] + public string LocalizedName => Loc.GetString(Name); + [DataField("damageTypes", required: true, customTypeSerializer: typeof(PrototypeIdListSerializer))] public List DamageTypes { get; private set; } = default!; } diff --git a/Content.Shared/Damage/Prototypes/DamageTypePrototype.cs b/Content.Shared/Damage/Prototypes/DamageTypePrototype.cs index cde7a8617f..a1ae23ef67 100644 --- a/Content.Shared/Damage/Prototypes/DamageTypePrototype.cs +++ b/Content.Shared/Damage/Prototypes/DamageTypePrototype.cs @@ -11,6 +11,12 @@ namespace Content.Shared.Damage.Prototypes [IdDataField] public string ID { get; private set; } = default!; + [DataField(required: true)] + private LocId Name { get; set; } + + [ViewVariables(VVAccess.ReadOnly)] + public string LocalizedName => Loc.GetString(Name); + /// /// The price for each 1% damage reduction in armors /// diff --git a/Content.Shared/Damage/Systems/DamageExamineSystem.cs b/Content.Shared/Damage/Systems/DamageExamineSystem.cs index 8273719110..fd1f191334 100644 --- a/Content.Shared/Damage/Systems/DamageExamineSystem.cs +++ b/Content.Shared/Damage/Systems/DamageExamineSystem.cs @@ -1,8 +1,10 @@ using Content.Shared.Damage.Components; using Content.Shared.Damage.Events; +using Content.Shared.Damage.Prototypes; using Content.Shared.Examine; using Content.Shared.FixedPoint; using Content.Shared.Verbs; +using Robust.Shared.Prototypes; using Robust.Shared.Utility; namespace Content.Shared.Damage.Systems; @@ -10,6 +12,7 @@ namespace Content.Shared.Damage.Systems; public sealed class DamageExamineSystem : EntitySystem { [Dependency] private readonly ExamineSystemShared _examine = default!; + [Dependency] private readonly IPrototypeManager _prototype = default!; public override void Initialize() { @@ -66,7 +69,7 @@ public sealed class DamageExamineSystem : EntitySystem if (damage.Value != FixedPoint2.Zero) { msg.PushNewline(); - msg.AddMarkup(Loc.GetString("damage-value", ("type", damage.Key), ("amount", damage.Value))); + msg.AddMarkup(Loc.GetString("damage-value", ("type", _prototype.Index(damage.Key).LocalizedName), ("amount", damage.Value))); } } diff --git a/Content.Tests/Shared/DamageTest.cs b/Content.Tests/Shared/DamageTest.cs index 11b810bf36..88beca8841 100644 --- a/Content.Tests/Shared/DamageTest.cs +++ b/Content.Tests/Shared/DamageTest.cs @@ -168,45 +168,57 @@ namespace Content.Tests.Shared private string _damagePrototypes = @" - type: damageType id: Blunt + name: damage-type-blunt - type: damageType id: Slash + name: damage-type-slash - type: damageType id: Piercing + name: damage-type-piercing - type: damageType id: Heat + name: damage-type-heat - type: damageType id: Shock + name: damage-type-shock - type: damageType id: Cold + name: damage-type-cold # Poison damage. Generally caused by various reagents being metabolised. - type: damageType id: Poison + name: damage-type-poison - type: damageType id: Radiation + name: damage-type-radiation # Damage due to being unable to breathe. # Represents not enough oxygen (or equivalent) getting to the blood. # Usually healed automatically if entity can breathe - type: damageType id: Asphyxiation + name: damage-type-asphyxiation # Damage representing not having enough blood. # Represents there not enough blood to supply oxygen (or equivalent). - type: damageType id: Bloodloss + name: damage-type-bloodloss - type: damageType id: Cellular + name: damage-type-cellular - type: damageGroup id: Brute + name: damage-group-brute damageTypes: - Blunt - Slash @@ -214,6 +226,7 @@ namespace Content.Tests.Shared - type: damageGroup id: Burn + name: damage-group-burn damageTypes: - Heat - Shock @@ -225,6 +238,7 @@ namespace Content.Tests.Shared # bloodloss, not this whole group, unless you have a wonder drug that affects both. - type: damageGroup id: Airloss + name: damage-group-airloss damageTypes: - Asphyxiation - Bloodloss @@ -233,12 +247,14 @@ namespace Content.Tests.Shared # Though there are probably some radioactive poisons. - type: damageGroup id: Toxin + name: damage-group-toxin damageTypes: - Poison - Radiation - type: damageGroup id: Genetic + name: damage-group-genetic damageTypes: - Cellular diff --git a/Resources/Locale/en-US/damage/damage-groups.ftl b/Resources/Locale/en-US/damage/damage-groups.ftl new file mode 100644 index 0000000000..057a999f1c --- /dev/null +++ b/Resources/Locale/en-US/damage/damage-groups.ftl @@ -0,0 +1,5 @@ +damage-group-brute = Brute +damage-group-burn = Burn +damage-group-airloss = Airloss +damage-group-toxin = Toxin +damage-group-genetic = Genetic diff --git a/Resources/Locale/en-US/damage/damage-types.ftl b/Resources/Locale/en-US/damage/damage-types.ftl new file mode 100644 index 0000000000..5c3cca156f --- /dev/null +++ b/Resources/Locale/en-US/damage/damage-types.ftl @@ -0,0 +1,13 @@ +damage-type-asphyxiation = Asphyxiation +damage-type-bloodloss = Bloodloss +damage-type-blunt = Blunt +damage-type-cellular = Cellular +damage-type-caustic = Caustic +damage-type-cold = Cold +damage-type-heat = Heat +damage-type-piercing = Piercing +damage-type-poison = Poison +damage-type-radiation = Radiation +damage-type-shock = Shock +damage-type-slash = Slash +damage-type-structural = Structural diff --git a/Resources/Locale/en-US/guidebook/chemistry/conditions.ftl b/Resources/Locale/en-US/guidebook/chemistry/conditions.ftl index 7748ab9893..6cbfc13a79 100644 --- a/Resources/Locale/en-US/guidebook/chemistry/conditions.ftl +++ b/Resources/Locale/en-US/guidebook/chemistry/conditions.ftl @@ -1,4 +1,4 @@ -reagent-effect-condition-guidebook-total-damage = +reagent-effect-condition-guidebook-total-damage = { $max -> [2147483648] it has at least {NATURALFIXED($min, 2)} total damage *[other] { $min -> @@ -57,3 +57,5 @@ reagent-effect-condition-guidebook-has-tag = [true] does not have *[false] has } the tag {$tag} + +reagent-effect-condition-guidebook-this-reagent = this reagent diff --git a/Resources/Locale/en-US/medical/components/health-analyzer-component.ftl b/Resources/Locale/en-US/medical/components/health-analyzer-component.ftl index 648db3f4eb..8460bcc27b 100644 --- a/Resources/Locale/en-US/medical/components/health-analyzer-component.ftl +++ b/Resources/Locale/en-US/medical/components/health-analyzer-component.ftl @@ -13,26 +13,4 @@ health-analyzer-window-scan-mode-text = Scan Mode: health-analyzer-window-scan-mode-active = ACTIVE health-analyzer-window-scan-mode-inactive = INACTIVE -health-analyzer-window-damage-group-Brute = Brute -health-analyzer-window-damage-type-Blunt = Blunt -health-analyzer-window-damage-type-Slash = Slash -health-analyzer-window-damage-type-Piercing = Piercing - -health-analyzer-window-damage-group-Burn = Burn -health-analyzer-window-damage-type-Heat = Heat -health-analyzer-window-damage-type-Shock = Shock -health-analyzer-window-damage-type-Cold = Cold -health-analyzer-window-damage-type-Caustic = Caustic - -health-analyzer-window-damage-group-Airloss = Airloss -health-analyzer-window-damage-type-Asphyxiation = Asphyxiation -health-analyzer-window-damage-type-Bloodloss = Bloodloss - -health-analyzer-window-damage-group-Toxin = Toxin -health-analyzer-window-damage-type-Poison = Poison -health-analyzer-window-damage-type-Radiation = Radiation - -health-analyzer-window-damage-group-Genetic = Genetic -health-analyzer-window-damage-type-Cellular = Cellular - health-analyzer-window-malnutrition = Severely malnourished diff --git a/Resources/Locale/en-US/metabolism/metabolism-groups.ftl b/Resources/Locale/en-US/metabolism/metabolism-groups.ftl new file mode 100644 index 0000000000..404d0fc786 --- /dev/null +++ b/Resources/Locale/en-US/metabolism/metabolism-groups.ftl @@ -0,0 +1,7 @@ +metabolism-group-poison = Poison +metabolism-group-medicine = Medicine +metabolism-group-narcotic = Narcotic +metabolism-group-alcohol = Alcohol +metabolism-group-food = Food +metabolism-group-drink = Drink +metabolism-group-gas = Gas diff --git a/Resources/Locale/en-US/metabolism/metabolizer-types.ftl b/Resources/Locale/en-US/metabolism/metabolizer-types.ftl new file mode 100644 index 0000000000..372c5c549e --- /dev/null +++ b/Resources/Locale/en-US/metabolism/metabolizer-types.ftl @@ -0,0 +1,11 @@ +metabolizer-type-animal = Animal +metabolizer-type-bloodsucker = Bloodsucker +metabolizer-type-dragon = Dragon +metabolizer-type-human = Human +metabolizer-type-slime = Slime +metabolizer-type-vox = Vox +metabolizer-type-rat = Rat +metabolizer-type-plant = Plant +metabolizer-type-dwarf = Dwarf +metabolizer-type-moth = Moth +metabolizer-type-arachnid = Arachnid diff --git a/Resources/Prototypes/Chemistry/metabolism_groups.yml b/Resources/Prototypes/Chemistry/metabolism_groups.yml index fc59edd81f..b2035671af 100644 --- a/Resources/Prototypes/Chemistry/metabolism_groups.yml +++ b/Resources/Prototypes/Chemistry/metabolism_groups.yml @@ -1,22 +1,29 @@ -# Default human metabolism groups. +# Default human metabolism groups. - type: metabolismGroup id: Poison + name: metabolism-group-poison - type: metabolismGroup id: Medicine + name: metabolism-group-medicine - type: metabolismGroup id: Narcotic + name: metabolism-group-narcotic - type: metabolismGroup id: Alcohol + name: metabolism-group-alcohol - type: metabolismGroup id: Food + name: metabolism-group-food - type: metabolismGroup id: Drink + name: metabolism-group-drink # Used for gases that have effects on being inhaled - type: metabolismGroup id: Gas + name: metabolism-group-gas diff --git a/Resources/Prototypes/Chemistry/metabolizer_types.yml b/Resources/Prototypes/Chemistry/metabolizer_types.yml index 259387b6d5..3f7bf05b35 100644 --- a/Resources/Prototypes/Chemistry/metabolizer_types.yml +++ b/Resources/Prototypes/Chemistry/metabolizer_types.yml @@ -1,46 +1,46 @@ -# If your species wants to metabolize stuff differently, +# If your species wants to metabolize stuff differently, # you'll likely have to tag its metabolizers with something other than Human. - type: metabolizerType id: Animal - name: animal + name: metabolizer-type-animal - type: metabolizerType id: Bloodsucker - name: bloodsucker + name: metabolizer-type-bloodsucker - type: metabolizerType id: Dragon - name: dragon + name: metabolizer-type-dragon - type: metabolizerType id: Human - name: human + name: metabolizer-type-human - type: metabolizerType id: Slime - name: slime + name: metabolizer-type-slime - type: metabolizerType id: Vox - name: vox + name: metabolizer-type-vox - type: metabolizerType id: Rat - name: rat + name: metabolizer-type-rat - type: metabolizerType id: Plant - name: plant + name: metabolizer-type-plant - type: metabolizerType id: Dwarf - name: dwarf + name: metabolizer-type-dwarf - type: metabolizerType id: Moth - name: moth + name: metabolizer-type-moth - type: metabolizerType id: Arachnid - name: arachnid + name: metabolizer-type-arachnid diff --git a/Resources/Prototypes/Damage/groups.yml b/Resources/Prototypes/Damage/groups.yml index 07bfe2edcd..71e4acdaea 100644 --- a/Resources/Prototypes/Damage/groups.yml +++ b/Resources/Prototypes/Damage/groups.yml @@ -1,5 +1,6 @@ - type: damageGroup id: Brute + name: damage-group-brute damageTypes: - Blunt - Slash @@ -7,6 +8,7 @@ - type: damageGroup id: Burn + name: damage-group-burn damageTypes: - Heat - Shock @@ -19,6 +21,7 @@ # bloodloss, not this whole group, unless you have a wonder drug that affects both. - type: damageGroup id: Airloss + name: damage-group-airloss damageTypes: - Asphyxiation - Bloodloss @@ -27,11 +30,13 @@ # Though there are probably some radioactive poisons. - type: damageGroup id: Toxin + name: damage-group-toxin damageTypes: - Poison - Radiation - type: damageGroup id: Genetic + name: damage-group-genetic damageTypes: - Cellular diff --git a/Resources/Prototypes/Damage/types.yml b/Resources/Prototypes/Damage/types.yml index bacaf1f798..0107da2482 100644 --- a/Resources/Prototypes/Damage/types.yml +++ b/Resources/Prototypes/Damage/types.yml @@ -3,6 +3,7 @@ # Usually healed automatically if entity can breathe - type: damageType id: Asphyxiation + name: damage-type-asphyxiation armorCoefficientPrice: 5 armorFlatPrice: 50 @@ -11,57 +12,68 @@ # Represents there not enough blood to supply oxygen (or equivalent). - type: damageType id: Bloodloss + name: damage-type-bloodloss armorCoefficientPrice: 5 armorFlatPrice: 50 - type: damageType id: Blunt + name: damage-type-blunt armorCoefficientPrice: 2 armorFlatPrice: 10 - type: damageType id: Cellular + name: damage-type-cellular armorCoefficientPrice: 5 armorFlatPrice: 30 - type: damageType id: Caustic + name: damage-type-caustic armorCoefficientPrice: 5 armorFlatPrice: 30 - type: damageType id: Cold + name: damage-type-cold armorCoefficientPrice: 2.5 armorFlatPrice: 20 - type: damageType id: Heat + name: damage-type-heat armorCoefficientPrice: 2.5 armorFlatPrice: 20 - type: damageType id: Piercing + name: damage-type-piercing armorCoefficientPrice: 2 armorFlatPrice: 10 # Poison damage. Generally caused by various reagents being metabolised. - type: damageType id: Poison + name: damage-type-poison armorCoefficientPrice: 10 armorFlatPrice: 60 - type: damageType id: Radiation + name: damage-type-radiation armorCoefficientPrice: 2.5 armorFlatPrice: 16 - type: damageType id: Shock + name: damage-type-shock armorCoefficientPrice: 2.5 armorFlatPrice: 20 - type: damageType id: Slash + name: damage-type-slash armorCoefficientPrice: 2 armorFlatPrice: 10 @@ -69,5 +81,6 @@ # Exclusive for structures such as walls, airlocks and others. - type: damageType id: Structural + name: damage-type-structural armorCoefficientPrice: 1 armorFlatPrice: 1 From afbbcd35fad893ff5e6fd3ee0ff42c8525ce67f4 Mon Sep 17 00:00:00 2001 From: PJBot Date: Sun, 28 Apr 2024 04:49:25 +0000 Subject: [PATCH 047/110] Automatic changelog update --- Resources/Changelog/Changelog.yml | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index ef32cb526e..4fabc6a2de 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: PJB3005 - changes: - - message: Fixed timezone issues with the admin notes window. - type: Fix - id: 5972 - time: '2024-02-20T09:13:31.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/25280 - author: PJB3005 changes: - message: Fixed selection behavior for player lists such as the ban panel or ahelp @@ -3866,3 +3859,11 @@ id: 6471 time: '2024-04-28T04:40:07.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/27406 +- author: KrasnoshchekovPavel + changes: + - message: Included damage type/group, metabolism type/group localization for weapon + damage examination and guidebook reagent effects + type: Fix + id: 6472 + time: '2024-04-28T04:48:20.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/27368 From 9f747485e9b9aaab313f59ea15f33533d98b993e Mon Sep 17 00:00:00 2001 From: Keer-Sar <144283718+Keer-Sar@users.noreply.github.com> Date: Sun, 28 Apr 2024 01:04:49 -0400 Subject: [PATCH 048/110] Medal case whitelist (#27428) * Create Medal tag and assign tag to medals * Update Resources/Prototypes/tags.yml --------- Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> --- .../Entities/Clothing/Neck/medals.yml | 24 +++++++++++++++++++ .../Entities/Objects/Misc/medalcase.yml | 3 +++ Resources/Prototypes/tags.yml | 3 +++ 3 files changed, 30 insertions(+) diff --git a/Resources/Prototypes/Entities/Clothing/Neck/medals.yml b/Resources/Prototypes/Entities/Clothing/Neck/medals.yml index 4d3746aad3..031fcb9988 100644 --- a/Resources/Prototypes/Entities/Clothing/Neck/medals.yml +++ b/Resources/Prototypes/Entities/Clothing/Neck/medals.yml @@ -9,6 +9,9 @@ sprite: Clothing/Neck/Medals/bronzeheart.rsi - type: Clothing sprite: Clothing/Neck/Medals/bronzeheart.rsi + - type: Tag + tags: + - Medal - type: entity parent: ClothingNeckBase @@ -22,6 +25,9 @@ sprite: Clothing/Neck/Medals/gold.rsi - type: StealTarget stealGroup: ClothingNeckGoldmedal + - type: Tag + tags: + - Medal - type: entity parent: ClothingNeckBase @@ -33,6 +39,9 @@ sprite: Clothing/Neck/Medals/cargomedal.rsi - type: Clothing sprite: Clothing/Neck/Medals/cargomedal.rsi + - type: Tag + tags: + - Medal - type: entity parent: ClothingNeckBase @@ -44,6 +53,9 @@ sprite: Clothing/Neck/Medals/engineermedal.rsi - type: Clothing sprite: Clothing/Neck/Medals/engineermedal.rsi + - type: Tag + tags: + - Medal - type: entity parent: ClothingNeckBase @@ -55,6 +67,9 @@ sprite: Clothing/Neck/Medals/medicalmedal.rsi - type: Clothing sprite: Clothing/Neck/Medals/medicalmedal.rsi + - type: Tag + tags: + - Medal - type: entity parent: ClothingNeckBase @@ -66,6 +81,9 @@ sprite: Clothing/Neck/Medals/sciencemedal.rsi - type: Clothing sprite: Clothing/Neck/Medals/sciencemedal.rsi + - type: Tag + tags: + - Medal - type: entity parent: ClothingNeckBase @@ -77,6 +95,9 @@ sprite: Clothing/Neck/Medals/securitymedal.rsi - type: Clothing sprite: Clothing/Neck/Medals/securitymedal.rsi + - type: Tag + tags: + - Medal - type: entity parent: ClothingNeckBase @@ -90,3 +111,6 @@ sprite: Clothing/Neck/Medals/clownmedal.rsi - type: StealTarget stealGroup: ClothingNeckClownmedal + - type: Tag + tags: + - Medal diff --git a/Resources/Prototypes/Entities/Objects/Misc/medalcase.yml b/Resources/Prototypes/Entities/Objects/Misc/medalcase.yml index a421c1e9e9..35000b3fba 100644 --- a/Resources/Prototypes/Entities/Objects/Misc/medalcase.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/medalcase.yml @@ -17,6 +17,9 @@ - type: Storage grid: - 0,0,7,1 + whitelist: + tags: + - Medal - type: StorageFill contents: - id: ClothingNeckGoldmedal diff --git a/Resources/Prototypes/tags.yml b/Resources/Prototypes/tags.yml index f544cd95ef..8238bc2d53 100644 --- a/Resources/Prototypes/tags.yml +++ b/Resources/Prototypes/tags.yml @@ -863,6 +863,9 @@ - type: Tag id: Meat +- type: Tag + id: Medal + - type: Tag id: Medkit From ee35fb12a7daf24ca0eca5bf05ff42a7ac91b9f5 Mon Sep 17 00:00:00 2001 From: PJBot Date: Sun, 28 Apr 2024 05:05:54 +0000 Subject: [PATCH 049/110] Automatic changelog update --- Resources/Changelog/Changelog.yml | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 4fabc6a2de..ba65d0df0e 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,12 +1,4 @@ Entries: -- author: PJB3005 - changes: - - message: Fixed selection behavior for player lists such as the ban panel or ahelp - window. - type: Fix - id: 5973 - time: '2024-02-20T09:13:48.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/25248 - author: Tonydatguy changes: - message: Ore Crabs will now take structural damage. @@ -3867,3 +3859,10 @@ id: 6472 time: '2024-04-28T04:48:20.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/27368 +- author: Keer-Sar + changes: + - message: Medal Cases now only hold medals + type: Tweak + id: 6473 + time: '2024-04-28T05:04:49.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/27428 From 783d3a9aa821b91cb3c1de45efc10ebdb6c54054 Mon Sep 17 00:00:00 2001 From: Nemanja <98561806+EmoGarbage404@users.noreply.github.com> Date: Sun, 28 Apr 2024 01:26:55 -0400 Subject: [PATCH 050/110] Actual fix for lockers and deconstruction (#27431) actual actual locker construction fix --- Content.Server/Construction/Conditions/Locked.cs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Content.Server/Construction/Conditions/Locked.cs b/Content.Server/Construction/Conditions/Locked.cs index fde704b161..0b8c9118dc 100644 --- a/Content.Server/Construction/Conditions/Locked.cs +++ b/Content.Server/Construction/Conditions/Locked.cs @@ -15,7 +15,7 @@ namespace Content.Server.Construction.Conditions public bool Condition(EntityUid uid, IEntityManager entityManager) { if (!entityManager.TryGetComponent(uid, out LockComponent? lockcomp)) - return false; + return true; return lockcomp.Locked == IsLocked; } @@ -25,7 +25,8 @@ namespace Content.Server.Construction.Conditions var entMan = IoCManager.Resolve(); var entity = args.Examined; - if (!entMan.TryGetComponent(entity, out LockComponent? lockcomp)) return false; + if (!entMan.TryGetComponent(entity, out LockComponent? lockcomp)) + return true; switch (IsLocked) { From d90cba6eed021c92e557d16f1ab2e8096befba38 Mon Sep 17 00:00:00 2001 From: PJBot Date: Sun, 28 Apr 2024 05:28:02 +0000 Subject: [PATCH 051/110] Automatic changelog update --- Resources/Changelog/Changelog.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index ba65d0df0e..288b2e1ab6 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: Tonydatguy - changes: - - message: Ore Crabs will now take structural damage. - type: Tweak - id: 5974 - time: '2024-02-20T10:43:16.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/25390 - author: Golinth changes: - message: The mindshield outline now flashes! @@ -3866,3 +3859,10 @@ id: 6473 time: '2024-04-28T05:04:49.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/27428 +- author: EmoGarbage404 + changes: + - message: Lockers can now be deconstructed again. + type: Fix + id: 6474 + time: '2024-04-28T05:26:56.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/27431 From f544c9129870e9c34903cc8f76fdd6b3f1d463a5 Mon Sep 17 00:00:00 2001 From: SlamBamActionman <83650252+SlamBamActionman@users.noreply.github.com> Date: Sun, 28 Apr 2024 07:45:54 +0200 Subject: [PATCH 052/110] Revert Exterminator pending newmed/redesign (#26978) * Reverts Exterminator * Includes commented out parts + sprites * Readd stuff, comment out yaml * Popup ads * review --------- Co-authored-by: metalgearsloth --- .../Systems/AdminVerbSystem.Smites.cs | 25 --- .../Thresholds/Behaviors/PopupBehavior.cs | 2 +- .../TerminatorTargetOverrideComponent.cs | 12 -- .../Systems/TerminatorTargetOverrideSystem.cs | 41 ---- Content.Server/Roles/RoleSystem.cs | 1 - .../Components/TerminatorComponent.cs | 19 -- .../Components/TerminatorTargetComponent.cs | 16 -- .../Terminator/Systems/TerminatorSystem.cs | 66 ------ .../Locale/en-US/administration/smites.ftl | 2 - .../game-rules/rule-terminator.ftl | 14 -- .../ghost/roles/ghost-role-component.ftl | 4 - .../en-US/objectives/conditions/terminate.ftl | 1 - .../Locale/en-US/prototypes/roles/antags.ftl | 3 - .../Prototypes/Body/Parts/terminator.yml | 158 -------------- .../Prototypes/Body/Prototypes/terminator.yml | 85 -------- Resources/Prototypes/Damage/modifier_sets.yml | 38 ---- .../Entities/Markers/Spawners/ghost_roles.yml | 17 -- .../Entities/Mobs/Player/terminator.yml | 203 ------------------ Resources/Prototypes/GameRules/events.yml | 13 -- Resources/Prototypes/GameRules/midround.yml | 20 +- .../Prototypes/Objectives/terminator.yml | 40 ---- .../Prototypes/Roles/Antags/terminator.yml | 6 - Resources/Prototypes/Species/terminator.yml | 110 ---------- 23 files changed, 11 insertions(+), 885 deletions(-) delete mode 100644 Content.Server/Objectives/Components/TerminatorTargetOverrideComponent.cs delete mode 100644 Content.Server/Objectives/Systems/TerminatorTargetOverrideSystem.cs delete mode 100644 Content.Server/Terminator/Components/TerminatorComponent.cs delete mode 100644 Content.Server/Terminator/Components/TerminatorTargetComponent.cs delete mode 100644 Content.Server/Terminator/Systems/TerminatorSystem.cs delete mode 100644 Resources/Locale/en-US/game-ticking/game-rules/rule-terminator.ftl delete mode 100644 Resources/Locale/en-US/objectives/conditions/terminate.ftl delete mode 100644 Resources/Prototypes/Body/Parts/terminator.yml delete mode 100644 Resources/Prototypes/Body/Prototypes/terminator.yml delete mode 100644 Resources/Prototypes/Entities/Mobs/Player/terminator.yml delete mode 100644 Resources/Prototypes/Objectives/terminator.yml delete mode 100644 Resources/Prototypes/Roles/Antags/terminator.yml delete mode 100644 Resources/Prototypes/Species/terminator.yml diff --git a/Content.Server/Administration/Systems/AdminVerbSystem.Smites.cs b/Content.Server/Administration/Systems/AdminVerbSystem.Smites.cs index 042bac3956..bda60e9449 100644 --- a/Content.Server/Administration/Systems/AdminVerbSystem.Smites.cs +++ b/Content.Server/Administration/Systems/AdminVerbSystem.Smites.cs @@ -18,7 +18,6 @@ using Content.Server.Storage.Components; using Content.Server.Storage.EntitySystems; using Content.Server.Tabletop; using Content.Server.Tabletop.Components; -using Content.Server.Terminator.Systems; using Content.Shared.Administration; using Content.Shared.Administration.Components; using Content.Shared.Body.Components; @@ -31,7 +30,6 @@ using Content.Shared.Database; using Content.Shared.Electrocution; using Content.Shared.Interaction.Components; using Content.Shared.Inventory; -using Content.Shared.Mind.Components; using Content.Shared.Mobs; using Content.Shared.Mobs.Components; using Content.Shared.Mobs.Systems; @@ -74,7 +72,6 @@ public sealed partial class AdminVerbSystem [Dependency] private readonly PopupSystem _popupSystem = default!; [Dependency] private readonly SharedPhysicsSystem _physics = default!; [Dependency] private readonly TabletopSystem _tabletopSystem = default!; - [Dependency] private readonly TerminatorSystem _terminator = default!; [Dependency] private readonly VomitSystem _vomitSystem = default!; [Dependency] private readonly WeldableSystem _weldableSystem = default!; [Dependency] private readonly SharedContentEyeSystem _eyeSystem = default!; @@ -824,27 +821,5 @@ public sealed partial class AdminVerbSystem Impact = LogImpact.Extreme, }; args.Verbs.Add(superBonk); - - Verb terminate = new() - { - Text = "Terminate", - Category = VerbCategory.Smite, - Icon = new SpriteSpecifier.Rsi(new ("Mobs/Species/Terminator/parts.rsi"), "skull_icon"), - Act = () => - { - if (!TryComp(args.Target, out var mindContainer) || mindContainer.Mind == null) - return; - - var coords = Transform(args.Target).Coordinates; - var mindId = mindContainer.Mind.Value; - _terminator.CreateSpawner(coords, mindId); - - _popupSystem.PopupEntity(Loc.GetString("admin-smite-terminate-prompt"), args.Target, - args.Target, PopupType.LargeCaution); - }, - Impact = LogImpact.Extreme, - Message = Loc.GetString("admin-smite-terminate-description") - }; - args.Verbs.Add(terminate); } } diff --git a/Content.Server/Destructible/Thresholds/Behaviors/PopupBehavior.cs b/Content.Server/Destructible/Thresholds/Behaviors/PopupBehavior.cs index 59589c19aa..1d7ce24f60 100644 --- a/Content.Server/Destructible/Thresholds/Behaviors/PopupBehavior.cs +++ b/Content.Server/Destructible/Thresholds/Behaviors/PopupBehavior.cs @@ -1,6 +1,6 @@ using Content.Shared.Popups; -namespace Content.Server.Destructible.Thresholds.Behaviors; +namespace Content.Server.Destructible.Thresholds.Behaviors; /// /// Shows a popup for everyone. diff --git a/Content.Server/Objectives/Components/TerminatorTargetOverrideComponent.cs b/Content.Server/Objectives/Components/TerminatorTargetOverrideComponent.cs deleted file mode 100644 index c66ff55f05..0000000000 --- a/Content.Server/Objectives/Components/TerminatorTargetOverrideComponent.cs +++ /dev/null @@ -1,12 +0,0 @@ -using Content.Server.Objectives.Systems; - -namespace Content.Server.Objectives.Components; - -/// -/// Sets this objective's target to the exterminator's target override, if it has one. -/// If not it will be random. -/// -[RegisterComponent, Access(typeof(TerminatorTargetOverrideSystem))] -public sealed partial class TerminatorTargetOverrideComponent : Component -{ -} diff --git a/Content.Server/Objectives/Systems/TerminatorTargetOverrideSystem.cs b/Content.Server/Objectives/Systems/TerminatorTargetOverrideSystem.cs deleted file mode 100644 index 0a81c2810e..0000000000 --- a/Content.Server/Objectives/Systems/TerminatorTargetOverrideSystem.cs +++ /dev/null @@ -1,41 +0,0 @@ -using Content.Server.Objectives.Components; -using Content.Server.Terminator.Components; -using Content.Shared.Mind; -using Content.Shared.Objectives.Components; - -namespace Content.Server.Objectives.Systems; - -/// -/// Handles copying the exterminator's target override to this objective. -/// -public sealed class TerminatorTargetOverrideSystem : EntitySystem -{ - [Dependency] private readonly TargetObjectiveSystem _target = default!; - - public override void Initialize() - { - base.Initialize(); - - SubscribeLocalEvent(OnAssigned); - } - - private void OnAssigned(EntityUid uid, TerminatorTargetOverrideComponent comp, ref ObjectiveAssignedEvent args) - { - if (args.Mind.OwnedEntity == null) - { - args.Cancelled = true; - return; - } - - var user = args.Mind.OwnedEntity.Value; - if (!TryComp(user, out var terminator)) - { - args.Cancelled = true; - return; - } - - // this exterminator has a target override so set its objective target accordingly - if (terminator.Target != null) - _target.SetTarget(uid, terminator.Target.Value); - } -} diff --git a/Content.Server/Roles/RoleSystem.cs b/Content.Server/Roles/RoleSystem.cs index f7a5177357..c53fa1cf9e 100644 --- a/Content.Server/Roles/RoleSystem.cs +++ b/Content.Server/Roles/RoleSystem.cs @@ -15,7 +15,6 @@ public sealed class RoleSystem : SharedRoleSystem SubscribeAntagEvents(); SubscribeAntagEvents(); SubscribeAntagEvents(); - SubscribeAntagEvents(); SubscribeAntagEvents(); SubscribeAntagEvents(); SubscribeAntagEvents(); diff --git a/Content.Server/Terminator/Components/TerminatorComponent.cs b/Content.Server/Terminator/Components/TerminatorComponent.cs deleted file mode 100644 index 9427f95eed..0000000000 --- a/Content.Server/Terminator/Components/TerminatorComponent.cs +++ /dev/null @@ -1,19 +0,0 @@ -using Content.Server.Terminator.Systems; -using Robust.Shared.Prototypes; -using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.List; - -namespace Content.Server.Terminator.Components; - -/// -/// Main terminator component, handles the target, if any, and objectives. -/// -[RegisterComponent, Access(typeof(TerminatorSystem))] -public sealed partial class TerminatorComponent : Component -{ - /// - /// Used to force the terminate objective's target. - /// If null it will be a random person. - /// - [DataField("target")] - public EntityUid? Target; -} diff --git a/Content.Server/Terminator/Components/TerminatorTargetComponent.cs b/Content.Server/Terminator/Components/TerminatorTargetComponent.cs deleted file mode 100644 index 786cbd1167..0000000000 --- a/Content.Server/Terminator/Components/TerminatorTargetComponent.cs +++ /dev/null @@ -1,16 +0,0 @@ -using Content.Server.Terminator.Systems; - -namespace Content.Server.Terminator.Components; - -/// -/// Sets after the ghost role spawns. -/// -[RegisterComponent, Access(typeof(TerminatorSystem))] -public sealed partial class TerminatorTargetComponent : Component -{ - /// - /// The target to set after the ghost role spawns. - /// - [DataField("target")] - public EntityUid? Target; -} diff --git a/Content.Server/Terminator/Systems/TerminatorSystem.cs b/Content.Server/Terminator/Systems/TerminatorSystem.cs deleted file mode 100644 index b669935277..0000000000 --- a/Content.Server/Terminator/Systems/TerminatorSystem.cs +++ /dev/null @@ -1,66 +0,0 @@ -using Content.Server.Body.Components; -using Content.Server.GenericAntag; -using Content.Server.Ghost.Roles.Events; -using Content.Server.Roles; -using Content.Server.Terminator.Components; -using Content.Shared.Roles; -using Robust.Shared.Map; - -namespace Content.Server.Terminator.Systems; - -public sealed class TerminatorSystem : EntitySystem -{ - [Dependency] private readonly SharedRoleSystem _role = default!; - - public override void Initialize() - { - base.Initialize(); - - SubscribeLocalEvent(OnMapInit); - SubscribeLocalEvent(OnSpawned); - SubscribeLocalEvent(OnCreated); - } - - private void OnMapInit(EntityUid uid, TerminatorComponent comp, MapInitEvent args) - { - // cyborg doesn't need to breathe - RemComp(uid); - } - - private void OnSpawned(EntityUid uid, TerminatorComponent comp, GhostRoleSpawnerUsedEvent args) - { - if (!TryComp(args.Spawner, out var target)) - return; - - comp.Target = target.Target; - } - - private void OnCreated(EntityUid uid, TerminatorComponent comp, ref GenericAntagCreatedEvent args) - { - var mindId = args.MindId; - var mind = args.Mind; - - _role.MindAddRole(mindId, new RoleBriefingComponent - { - Briefing = Loc.GetString("terminator-role-briefing") - }, mind); - _role.MindAddRole(mindId, new TerminatorRoleComponent(), mind); - } - - /// - /// Create a spawner at a position and return it. - /// - /// Coordinates to create the spawner at - /// Optional target mind to force the terminator to target - public EntityUid CreateSpawner(EntityCoordinates coords, EntityUid? target) - { - var uid = Spawn("SpawnPointGhostTerminator", coords); - if (target != null) - { - var comp = EnsureComp(uid); - comp.Target = target; - } - - return uid; - } -} diff --git a/Resources/Locale/en-US/administration/smites.ftl b/Resources/Locale/en-US/administration/smites.ftl index ae4e6f7271..ff3e3b0901 100644 --- a/Resources/Locale/en-US/administration/smites.ftl +++ b/Resources/Locale/en-US/administration/smites.ftl @@ -13,7 +13,6 @@ admin-smite-stomach-removal-self = Your stomach feels hollow... admin-smite-run-walk-swap-prompt = You have to press shift to run! admin-smite-super-speed-prompt = You move at mach 0.8! admin-smite-lung-removal-self = You can't breathe! -admin-smite-terminate-prompt = I'll be back ## Smite descriptions @@ -58,7 +57,6 @@ admin-smite-disarm-prone-description = Makes them get disarmed 100% of the time admin-smite-garbage-can-description = Turn them into a garbage bin to emphasize what they remind you of. admin-smite-super-bonk-description = Slams them on every single table on the Station and beyond. admin-smite-super-bonk-lite-description= Slams them on every single table on the Station and beyond. Stops when the target is dead. -admin-smite-terminate-description = Creates a Terminator ghost role with the sole objective of killing them. ## Tricks descriptions diff --git a/Resources/Locale/en-US/game-ticking/game-rules/rule-terminator.ftl b/Resources/Locale/en-US/game-ticking/game-rules/rule-terminator.ftl deleted file mode 100644 index 41237a5c10..0000000000 --- a/Resources/Locale/en-US/game-ticking/game-rules/rule-terminator.ftl +++ /dev/null @@ -1,14 +0,0 @@ -terminator-round-end-agent-name = nt-800 - -objective-issuer-susnet = [color=#d64119]Susnet[/color] - -terminator-role-greeting = - You are the exterminator, a relentless assassin sent into the past to secure our future. - We need you to eliminate {$target}, {$job}. - Use any means at your disposal to complete the mission. - Glory to Cybersun. - -terminator-role-briefing = Kill the target at all costs. - -terminator-endoskeleton-gib-popup = All the battered flesh falls apart, revealing a titanium endoskeleton! -terminator-endoskeleton-burn-popup = The seared flesh is burned to a crisp, revealing a titanium endoskeleton! diff --git a/Resources/Locale/en-US/ghost/roles/ghost-role-component.ftl b/Resources/Locale/en-US/ghost/roles/ghost-role-component.ftl index d307813c26..82c51787dc 100644 --- a/Resources/Locale/en-US/ghost/roles/ghost-role-component.ftl +++ b/Resources/Locale/en-US/ghost/roles/ghost-role-component.ftl @@ -212,10 +212,6 @@ ghost-role-information-BreadDog-name = BreadDog ghost-role-information-BreadDog-description = You are the chef's favorite child. You're a living bread dog. ghost-role-information-BreadDog-rules = You're an edible dog made of bread. Your task is to find your place in this world where everything wants to eat you. -ghost-role-information-exterminator-name = Exterminator -ghost-role-information-exterminator-description = You been been sent back in time to terminate a target with high importance to the future. -ghost-role-information-exterminator-rules = You are an antagonist and may kill anyone that tries to stop you, but killing the target is always your top priority. - ghost-role-information-space-ninja-name = Space Ninja ghost-role-information-space-ninja-description = Use stealth and deception to sabotage the station. ghost-role-information-space-ninja-rules = You are an elite mercenary of the Spider Clan. You aren't required to follow your objectives, yet your NINJA HONOR demands you try. diff --git a/Resources/Locale/en-US/objectives/conditions/terminate.ftl b/Resources/Locale/en-US/objectives/conditions/terminate.ftl deleted file mode 100644 index c88c7b14da..0000000000 --- a/Resources/Locale/en-US/objectives/conditions/terminate.ftl +++ /dev/null @@ -1 +0,0 @@ -objective-terminate-title = Terminate {$targetName}, {CAPITALIZE($job)} diff --git a/Resources/Locale/en-US/prototypes/roles/antags.ftl b/Resources/Locale/en-US/prototypes/roles/antags.ftl index d12f70cda2..5c514dba8e 100644 --- a/Resources/Locale/en-US/prototypes/roles/antags.ftl +++ b/Resources/Locale/en-US/prototypes/roles/antags.ftl @@ -30,6 +30,3 @@ roles-antag-space-ninja-objective = Use your stealth to sabotage the station, no roles-antag-thief-name = Thief roles-antag-thief-objective = Add some NT property to your personal collection without using violence. - -roles-antag-terminator-name = Exterminator -roles-antag-terminator-objective = Kill the target at all costs, the future depends on it. diff --git a/Resources/Prototypes/Body/Parts/terminator.yml b/Resources/Prototypes/Body/Parts/terminator.yml deleted file mode 100644 index 58530da959..0000000000 --- a/Resources/Prototypes/Body/Parts/terminator.yml +++ /dev/null @@ -1,158 +0,0 @@ -- type: entity - abstract: true - parent: BaseItem - id: PartTerminator - name: nt-800 body part - components: - - type: Sprite - sprite: Mobs/Species/Terminator/parts.rsi - - type: Icon - sprite: Mobs/Species/Terminator/parts.rsi - - type: Damageable - damageContainer: Inorganic - damageModifierSet: Cybernetic - - type: BodyPart - - type: ContainerContainer - containers: - bodypart: !type:Container - ents: [] - - type: Gibbable - - type: StaticPrice - price: 200 - -- type: entity - parent: PartTerminator - id: TorsoTerminator - name: nt-800 torso - components: - - type: Sprite - state: torso_m - - type: Icon - state: torso_m - - type: BodyPart - partType: Torso - -- type: entity - parent: PartTerminator - id: HeadTerminator - name: nt-800 skull - description: Its red eyes have powered down... for now. - components: - - type: Sprite - state: skull_icon - - type: Icon - state: skull_icon - - type: BodyPart - partType: Head - # killing a terminators worth big bucks - - type: StaticPrice - price: 2000 - - type: Tag - tags: - - Head - -- type: entity - parent: PartTerminator - id: LeftArmTerminator - name: left nt-800 arm - components: - - type: Sprite - state: l_arm - - type: Icon - state: l_arm - - type: BodyPart - partType: Arm - symmetry: Left - -- type: entity - parent: PartTerminator - id: RightArmTerminator - name: right nt-800 arm - components: - - type: Sprite - state: r_arm - - type: Icon - state: r_arm - - type: BodyPart - partType: Arm - symmetry: Right - -- type: entity - parent: PartTerminator - id: LeftHandTerminator - name: left nt-800 hand - components: - - type: Sprite - state: l_hand - - type: Icon - state: l_hand - - type: BodyPart - partType: Hand - symmetry: Left - -- type: entity - parent: PartTerminator - id: RightHandTerminator - name: right nt-800 hand - components: - - type: Sprite - state: r_hand - - type: Icon - state: r_hand - - type: BodyPart - partType: Hand - symmetry: Right - -- type: entity - parent: PartTerminator - id: LeftLegTerminator - name: left nt-800 leg - components: - - type: Sprite - state: l_leg - - type: Icon - state: l_leg - - type: BodyPart - partType: Leg - symmetry: Left - - type: MovementBodyPart - -- type: entity - parent: PartTerminator - id: RightLegTerminator - name: right nt-800 leg - components: - - type: Sprite - state: r_leg - - type: Icon - state: r_leg - - type: BodyPart - partType: Leg - symmetry: Right - - type: MovementBodyPart - -- type: entity - parent: PartTerminator - id: LeftFootTerminator - name: left nt-800 foot - components: - - type: Sprite - state: l_foot - - type: Icon - state: l_foot - - type: BodyPart - partType: Foot - symmetry: Left - -- type: entity - parent: PartTerminator - id: RightFootTerminator - name: right nt-800 foot - components: - - type: Sprite - state: r_foot - - type: Icon - state: r_foot - - type: BodyPart - partType: Foot - symmetry: Right diff --git a/Resources/Prototypes/Body/Prototypes/terminator.yml b/Resources/Prototypes/Body/Prototypes/terminator.yml deleted file mode 100644 index c271a89d86..0000000000 --- a/Resources/Prototypes/Body/Prototypes/terminator.yml +++ /dev/null @@ -1,85 +0,0 @@ -# not quite human... -- type: body - id: TerminatorFlesh - name: exterminator - root: torso - slots: - head: - part: HeadHuman - connections: - - torso - organs: - brain: MobTerminatorEndoskeleton - torso: - part: TorsoHuman - connections: - - left arm - - right arm - - left leg - - right leg - right arm: - part: RightArmHuman - connections: - - right hand - left arm: - part: LeftArmHuman - connections: - - left hand - right hand: - part: RightHandHuman - left hand: - part: LeftHandHuman - right leg: - part: RightLegHuman - connections: - - right foot - left leg: - part: LeftLegHuman - connections: - - left foot - right foot: - part: RightFootHuman - left foot: - part: LeftFootHuman - -# TODO: terminator body parts -- type: body - id: TerminatorEndoskeleton - name: terminatorEndoskeleton - root: torso - slots: - head: - part: HeadTerminator - connections: - - torso - torso: - part: TorsoTerminator - connections: - - left arm - - right arm - - left leg - - right leg - right arm: - part: RightArmTerminator - connections: - - right hand - left arm: - part: LeftArmTerminator - connections: - - left hand - right hand: - part: RightHandTerminator - left hand: - part: LeftHandTerminator - right leg: - part: RightLegTerminator - connections: - - right foot - left leg: - part: LeftLegTerminator - connections: - - left foot - right foot: - part: RightFootTerminator - left foot: - part: LeftFootTerminator diff --git a/Resources/Prototypes/Damage/modifier_sets.yml b/Resources/Prototypes/Damage/modifier_sets.yml index 6920dfd747..0db1327431 100644 --- a/Resources/Prototypes/Damage/modifier_sets.yml +++ b/Resources/Prototypes/Damage/modifier_sets.yml @@ -296,41 +296,3 @@ Cellular: 0.0 Heat: 2.5 Caustic: 0.0 - -# terminator's flesh damage set -- type: damageModifierSet - id: CyberneticFlesh - coefficients: - Blunt: 0.2 - Slash: 0.2 - Piercing: 0.1 - # fire and lasers burn it good - Heat: 1.0 - # zap - Shock: 1.5 - Cold: 0.25 - Caustic: 0.25 - # doesnt have organs to poison - Poison: 0.0 - Cellular: 0.0 - -# terminator's endoskeleton damage set -- type: damageModifierSet - id: Cybernetic - coefficients: - # bonk - Blunt: 1.0 - # alloy too hard to cut or shoot - Slash: 0.0 - Piercing: 0.0 - # no burning anymore - Heat: 0.0 - # zap zap - Shock: 2.5 - Cold: 0.0 - Caustic: 0.0 - Poison: 0.0 - Cellular: 0.0 - flatReductions: - # can't punch the endoskeleton to death - Blunt: 5 diff --git a/Resources/Prototypes/Entities/Markers/Spawners/ghost_roles.yml b/Resources/Prototypes/Entities/Markers/Spawners/ghost_roles.yml index 727b55eb4e..eb32b48e79 100644 --- a/Resources/Prototypes/Entities/Markers/Spawners/ghost_roles.yml +++ b/Resources/Prototypes/Entities/Markers/Spawners/ghost_roles.yml @@ -129,20 +129,3 @@ - state: green - sprite: Objects/Weapons/Melee/energykatana.rsi state: icon - -- type: entity - parent: MarkerBase - id: SpawnPointGhostTerminator - name: terminator spawn point - components: - - type: GhostRole - name: ghost-role-information-exterminator-name - description: ghost-role-information-exterminator-description - rules: ghost-role-information-exterminator-rules - - type: GhostRoleMobSpawner - prototype: MobHumanTerminator - - type: Sprite - layers: - - state: green - - sprite: Mobs/Species/Terminator/parts.rsi - state: full diff --git a/Resources/Prototypes/Entities/Mobs/Player/terminator.yml b/Resources/Prototypes/Entities/Mobs/Player/terminator.yml deleted file mode 100644 index 663838e01a..0000000000 --- a/Resources/Prototypes/Entities/Mobs/Player/terminator.yml +++ /dev/null @@ -1,203 +0,0 @@ -# stuff common to flesh and endoskeleton -- type: entity - abstract: true - id: MobTerminatorBase - components: - - type: ZombieImmune # yeah no - - type: FlashImmunity # no brain to brainwash, eyes are robotic - -- type: entity - parent: [MobHuman, MobTerminatorBase] - id: MobHumanTerminator - # uses random name generator dont worry - name: exterminator - components: - - type: Terminator - - type: GenericAntag - rule: Exterminator - # reduced barotrauma damage - - type: Barotrauma - damage: - types: - Blunt: 0.1 - # 4x stamina, faster recovery - - type: Stamina - decay: 6 - cooldown: 1 - critThreshold: 400 - # immune to space drugs, pax, temporary blindness - - type: StatusEffects - allowed: - - Stun - - KnockedDown - - SlowedDown - - Stutter - - Electrocution - - Drunk - - SlurredSpeech - - RatvarianLanguage - - PressureImmunity - - Muted - - ForcedSleep - - StaminaModifier - - type: MobState - allowedStates: - - Alive - - Dead - # endoskeleton need it - - type: TransferMindOnGib - - type: MobThresholds - thresholds: - 0: Alive - # used for health display its not possible to actually fall into crit - 200: Dead - # fire!!!! - - type: Flammable - damage: - types: - Heat: 6.0 - # slightly wider thresholds - - type: Temperature - heatDamageThreshold: 390 - coldDamageThreshold: 240 - # take terminator flesh damage - - type: Damageable - damageModifierSet: CyberneticFlesh - # only organ is an endoskeleton, which is transferred when flesh dies - - type: Body - prototype: TerminatorFlesh - # endoskeleton transformation when either you would get burned to crit or killed by any damage - # you will become an endoskeleton as your last chance to kill the target - - type: Destructible - thresholds: - # the burn trigger is first incase of a bombing or nuking, it might well do over 200 damage but 100 heat is more important - - trigger: - !type:DamageTypeTrigger - damageType: Heat - damage: 100 - behaviors: - - !type:PopupBehavior - popup: terminator-endoskeleton-burn-popup - popupType: LargeCaution - - !type:GibBehavior - - trigger: - !type:DamageTrigger - damage: 200 - behaviors: - - !type:PopupBehavior - popup: terminator-endoskeleton-gib-popup - popupType: LargeCaution - - !type:GibBehavior - # faster than humans when damaged - - type: SlowOnDamage - speedModifierThresholds: - 70: 0.8 - 90: 0.6 - # arnold is very strong - - type: MeleeWeapon - damage: - types: - Blunt: 10 - Structural: 10 - - type: RandomHumanoidAppearance - - type: Tag - tags: - - CanPilot - - FootstepSound - - DoorBumpOpener - - Unimplantable # no brain to mindshield, no organic body to implant into - -- type: entity - parent: - - BaseMob - - MobCombat - - MobDamageable - - MobSiliconBase - - MobTerminatorBase - id: MobTerminatorEndoskeleton - # you are now valid - name: nt-800 "exterminator" endoskeleton - description: The inner powerhouse of Susnet's infiltrator androids. Ridiculously hard alloy on the inside, unassuming flesh on the outside. - components: - - type: HumanoidAppearance - species: Terminator - - type: MovementSpeedModifier - baseWalkSpeed: 1.5 - baseSprintSpeed: 3.0 - - type: Sprite - sprite: Mobs/Species/Terminator/parts.rsi - - type: Fixtures - fixtures: - fix1: - shape: - !type:PhysShapeCircle - radius: 0.35 - # he heavy - density: 500 - mask: - - MobMask - layer: - - MobLayer - - type: MobThresholds - thresholds: - 0: Alive - # gibbed at 200 so cant go crit - 200: Dead - # incase some weird stuff happens and the crew adopts a terminator - - type: Repairable - doAfterDelay: 15 - allowSelfRepair: false - - type: Body - prototype: TerminatorEndoskeleton - # lets it sit in the terminator flesh's brain slot - - type: Organ - - type: Brain - - type: TypingIndicator - proto: robot # beep boop borp - - type: Speech - speechSounds: Pai - - type: Damageable - damageModifierSet: Cybernetic - - type: Destructible - thresholds: - - trigger: - !type:DamageTrigger - damage: 200 - behaviors: - - !type:PlaySoundBehavior - # endoSKELETON - sound: /Audio/Effects/bone_rattle.ogg - # a keepsake or a gift for cargo - - !type:SpawnEntitiesBehavior - spawn: - HeadTerminator: - min: 1 - max: 1 - - !type:DoActsBehavior - acts: [ "Destruction" ] - # for fire spreading around, the endoskeleton cannot burn - - type: Flammable - fireSpread: true - canResistFire: true - damage: - types: - Heat: 0 - # now his only weapon, but it is stronger - - type: MeleeWeapon - damage: - types: - Blunt: 15 - Structural: 5 - - type: Puller - needsHands: false - - type: Prying - pryPowered: true - force: true - - type: Tag - tags: - - DoorBumpOpener - - ShoesRequiredStepTriggerImmune - # let mind transfer on gib work - - MindTransferTarget - # its just metal so no implants - - Unimplantable diff --git a/Resources/Prototypes/GameRules/events.yml b/Resources/Prototypes/GameRules/events.yml index a5777a7b4d..e744545fd1 100644 --- a/Resources/Prototypes/GameRules/events.yml +++ b/Resources/Prototypes/GameRules/events.yml @@ -283,19 +283,6 @@ lightBreakChancePerSecond: 0.0003 doorToggleChancePerSecond: 0.001 -- type: entity - parent: BaseGameRule - id: TerminatorSpawn - noSpawn: true - components: - - type: StationEvent - weight: 8 - duration: 1 - earliestStart: 30 - minimumPlayers: 20 - - type: RandomSpawnRule - prototype: SpawnPointGhostTerminator - - type: entity id: VentClog parent: BaseGameRule diff --git a/Resources/Prototypes/GameRules/midround.yml b/Resources/Prototypes/GameRules/midround.yml index bb870f6007..7d074f97e4 100644 --- a/Resources/Prototypes/GameRules/midround.yml +++ b/Resources/Prototypes/GameRules/midround.yml @@ -52,13 +52,13 @@ briefing: sound: "/Audio/Misc/thief_greeting.ogg" -- type: entity - noSpawn: true - parent: BaseGameRule - id: Exterminator - components: - - type: GenericAntagRule - agentName: terminator-round-end-agent-name - objectives: - - TerminateObjective - - ShutDownObjective +#- type: entity +# noSpawn: true +# parent: BaseGameRule +# id: Exterminator +# components: +# - type: GenericAntagRule +# agentName: terminator-round-end-agent-name +# objectives: +# - TerminateObjective +# - ShutDownObjective diff --git a/Resources/Prototypes/Objectives/terminator.yml b/Resources/Prototypes/Objectives/terminator.yml deleted file mode 100644 index 1b569599a7..0000000000 --- a/Resources/Prototypes/Objectives/terminator.yml +++ /dev/null @@ -1,40 +0,0 @@ -- type: entity - abstract: true - parent: BaseObjective - id: BaseTerminatorObjective - components: - - type: Objective - difficulty: 1 - issuer: susnet - - type: RoleRequirement - roles: - components: - - TerminatorRole - -- type: entity - noSpawn: true - parent: [BaseTerminatorObjective, BaseKillObjective] - id: TerminateObjective - description: Follow your programming and terminate the target. - components: - - type: Objective - unique: false - - type: TargetObjective - title: objective-terminate-title - - type: PickRandomPerson - - type: TerminatorTargetOverride - - type: KillPersonCondition - requireDead: true - -- type: entity - noSpawn: true - parent: BaseTerminatorObjective - id: ShutDownObjective - name: Shut down - description: Once the mission is complete die to prevent our technology from being stolen. - components: - - type: Objective - icon: - sprite: Mobs/Species/Terminator/parts.rsi - state: skull_icon - - type: DieCondition diff --git a/Resources/Prototypes/Roles/Antags/terminator.yml b/Resources/Prototypes/Roles/Antags/terminator.yml deleted file mode 100644 index ef1f176b8d..0000000000 --- a/Resources/Prototypes/Roles/Antags/terminator.yml +++ /dev/null @@ -1,6 +0,0 @@ -- type: antag - id: Terminator - name: roles-antag-terminator-name - antagonist: true - setPreference: false - objective: roles-antag-terminator-objective diff --git a/Resources/Prototypes/Species/terminator.yml b/Resources/Prototypes/Species/terminator.yml deleted file mode 100644 index cfc5a7107c..0000000000 --- a/Resources/Prototypes/Species/terminator.yml +++ /dev/null @@ -1,110 +0,0 @@ -- type: species - id: Terminator - name: Terminator - roundStart: false - prototype: MobTerminatorEndoskeleton - sprites: MobTerminatorSprites - defaultSkinTone: "#fff9e2" - markingLimits: MobHumanMarkingLimits - maleFirstNames: skeletonNamesFirst - femaleFirstNames: skeletonNamesFirst - dollPrototype: MobSkeletonPersonDummy - skinColoration: TintedHues - -- type: speciesBaseSprites - id: MobTerminatorSprites - sprites: - Head: MobTerminatorHead - Chest: MobTerminatorTorso - LArm: MobTerminatorLArm - RArm: MobTerminatorRArm - LHand: MobTerminatorLHand - RHand: MobTerminatorRHand - LLeg: MobTerminatorLLeg - RLeg: MobTerminatorRLeg - LFoot: MobTerminatorLFoot - RFoot: MobTerminatorRFoot - -- type: humanoidBaseSprite - id: MobTerminatorHead - baseSprite: - sprite: Mobs/Species/Terminator/parts.rsi - state: head_m - -- type: humanoidBaseSprite - id: MobTerminatorHeadMale - baseSprite: - sprite: Mobs/Species/Terminator/parts.rsi - state: head_m - -- type: humanoidBaseSprite - id: MobTerminatorHeadFemale - baseSprite: - sprite: Mobs/Species/Terminator/parts.rsi - state: head_f - -- type: humanoidBaseSprite - id: MobTerminatorTorso - baseSprite: - sprite: Mobs/Species/Terminator/parts.rsi - state: torso_m - -- type: humanoidBaseSprite - id: MobTerminatorTorsoMale - baseSprite: - sprite: Mobs/Species/Terminator/parts.rsi - state: torso_m - -- type: humanoidBaseSprite - id: MobTerminatorTorsoFemale - baseSprite: - sprite: Mobs/Species/Terminator/parts.rsi - state: torso_f - -- type: humanoidBaseSprite - id: MobTerminatorLLeg - baseSprite: - sprite: Mobs/Species/Terminator/parts.rsi - state: l_leg - -- type: humanoidBaseSprite - id: MobTerminatorLArm - baseSprite: - sprite: Mobs/Species/Terminator/parts.rsi - state: l_arm - -- type: humanoidBaseSprite - id: MobTerminatorLHand - baseSprite: - sprite: Mobs/Species/Terminator/parts.rsi - state: l_hand - -- type: humanoidBaseSprite - id: MobTerminatorLFoot - baseSprite: - sprite: Mobs/Species/Terminator/parts.rsi - state: l_foot - -- type: humanoidBaseSprite - id: MobTerminatorRLeg - baseSprite: - sprite: Mobs/Species/Terminator/parts.rsi - state: r_leg - -- type: humanoidBaseSprite - id: MobTerminatorRArm - baseSprite: - sprite: Mobs/Species/Terminator/parts.rsi - state: r_arm - -- type: humanoidBaseSprite - id: MobTerminatorRHand - baseSprite: - sprite: Mobs/Species/Terminator/parts.rsi - state: r_hand - -- type: humanoidBaseSprite - id: MobTerminatorRFoot - baseSprite: - sprite: Mobs/Species/Terminator/parts.rsi - state: r_foot From fe8ad485f274a5ee09f8fd04ffdf9e055095a548 Mon Sep 17 00:00:00 2001 From: Boaz1111 <149967078+Boaz1111@users.noreply.github.com> Date: Sun, 28 Apr 2024 07:46:53 +0200 Subject: [PATCH 053/110] Circuit imprinter now uses less glass (#27310) * moved from 9 sheets of glass to 5 sheets of glass for all circuit recipes * Revert "moved from 9 sheets of glass to 5 sheets of glass for all circuit recipes" This reverts commit 45bb8d40150cddbbe005f5d66d34532b79143f98. * adresses merge conflict * fixed error * parents base computer board to base machine board * Revert "parents base computer board to base machine board" This reverts commit dec3a799a90b4a0cb121b6694ecf65d9a0abd6a3. * other thing was causing errors, guess it's this now --- .../Machine/base_machineboard.yml | 2 +- .../Devices/Circuitboards/computer.yml | 2 +- .../Prototypes/Recipes/Lathes/electronics.yml | 165 +++++++++--------- 3 files changed, 85 insertions(+), 84 deletions(-) diff --git a/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/Machine/base_machineboard.yml b/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/Machine/base_machineboard.yml index 164777284f..360fc5ffaa 100644 --- a/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/Machine/base_machineboard.yml +++ b/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/Machine/base_machineboard.yml @@ -15,7 +15,7 @@ price: 100 - type: PhysicalComposition materialComposition: - Glass: 400 + Glass: 230 chemicalComposition: Silicon: 20 diff --git a/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/computer.yml b/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/computer.yml index afbfdadf91..ba91f6bc53 100644 --- a/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/computer.yml +++ b/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/computer.yml @@ -14,7 +14,7 @@ price: 100 - type: PhysicalComposition materialComposition: - Glass: 400 + Glass: 230 chemicalComposition: Silicon: 20 diff --git a/Resources/Prototypes/Recipes/Lathes/electronics.yml b/Resources/Prototypes/Recipes/Lathes/electronics.yml index a6f3e6cece..03022b627e 100644 --- a/Resources/Prototypes/Recipes/Lathes/electronics.yml +++ b/Resources/Prototypes/Recipes/Lathes/electronics.yml @@ -114,7 +114,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 Gold: 100 - type: latheRecipe @@ -124,7 +124,7 @@ completetime: 4 materials: Steel: 150 - Glass: 900 + Glass: 500 Gold: 50 - type: latheRecipe @@ -134,7 +134,7 @@ completetime: 4 materials: Steel: 150 - Glass: 900 + Glass: 500 Gold: 50 - type: latheRecipe @@ -144,7 +144,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 - type: latheRecipe id: PortableScrubberMachineCircuitBoard @@ -153,7 +153,7 @@ completetime: 4 materials: Steel: 150 - Glass: 900 + Glass: 500 Gold: 50 - type: latheRecipe @@ -163,7 +163,7 @@ completetime: 4 materials: Steel: 150 - Glass: 900 + Glass: 500 Gold: 50 - type: latheRecipe @@ -173,7 +173,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 - type: latheRecipe id: CryoPodMachineCircuitboard @@ -182,7 +182,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 Gold: 100 - type: latheRecipe @@ -192,7 +192,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 - type: latheRecipe id: ChemDispenserMachineCircuitboard @@ -201,7 +201,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 Gold: 100 - type: latheRecipe @@ -211,7 +211,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 Gold: 100 - type: latheRecipe @@ -221,7 +221,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 Gold: 100 - type: latheRecipe @@ -231,7 +231,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 - type: latheRecipe id: AutolatheMachineCircuitboard @@ -240,7 +240,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 - type: latheRecipe id: ProtolatheMachineCircuitboard @@ -249,7 +249,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 - type: latheRecipe id: AutolatheHyperConvectionMachineCircuitboard @@ -258,7 +258,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 Gold: 100 - type: latheRecipe @@ -268,7 +268,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 Gold: 100 - type: latheRecipe @@ -278,7 +278,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 - type: latheRecipe id: ExosuitFabricatorMachineCircuitboard @@ -287,7 +287,7 @@ completetime: 5 materials: Steel: 100 - Glass: 900 + Glass: 500 - type: latheRecipe id: UniformPrinterMachineCircuitboard @@ -296,7 +296,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 - type: latheRecipe id: VaccinatorMachineCircuitboard @@ -305,7 +305,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 Gold: 100 - type: latheRecipe @@ -315,7 +315,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 Gold: 100 - type: latheRecipe @@ -325,7 +325,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 Gold: 100 - type: latheRecipe @@ -335,7 +335,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 Gold: 100 - type: latheRecipe @@ -345,7 +345,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 - type: latheRecipe id: AnomalyVesselExperimentalCircuitboard @@ -354,7 +354,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 Gold: 100 - type: latheRecipe @@ -374,7 +374,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 - type: latheRecipe id: ReagentGrinderMachineCircuitboard @@ -383,7 +383,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 - type: latheRecipe id: HotplateMachineCircuitboard @@ -392,7 +392,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 - type: latheRecipe id: AnalysisComputerCircuitboard @@ -401,7 +401,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 Gold: 100 - type: latheRecipe @@ -411,7 +411,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 Gold: 100 - type: latheRecipe @@ -421,7 +421,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 Gold: 100 - type: latheRecipe @@ -431,7 +431,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 - type: latheRecipe id: DawInstrumentMachineCircuitboard @@ -440,7 +440,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 - type: latheRecipe id: StasisBedMachineCircuitboard @@ -449,7 +449,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 Gold: 100 - type: latheRecipe @@ -459,7 +459,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 - type: latheRecipe id: CentrifugeMachineCircuitboard @@ -468,7 +468,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 - type: latheRecipe id: MaterialReclaimerMachineCircuitboard @@ -477,7 +477,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 - type: latheRecipe id: OreProcessorMachineCircuitboard @@ -486,7 +486,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 - type: latheRecipe id: OreProcessorIndustrialMachineCircuitboard @@ -495,7 +495,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 Gold: 100 - type: latheRecipe @@ -505,7 +505,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 Gold: 100 - type: latheRecipe @@ -515,7 +515,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 Gold: 100 - type: latheRecipe @@ -525,7 +525,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 Bananium: 100 - type: latheRecipe @@ -535,7 +535,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 Bananium: 100 - type: latheRecipe @@ -545,7 +545,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 Bananium: 100 - type: latheRecipe @@ -555,7 +555,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 Gold: 100 - type: latheRecipe @@ -565,7 +565,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 Gold: 100 # Power @@ -603,7 +603,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 - type: latheRecipe id: PortableGeneratorPacmanMachineCircuitboard @@ -657,7 +657,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 - type: latheRecipe id: SolarTrackerElectronics @@ -675,7 +675,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 - type: latheRecipe id: CloningConsoleComputerCircuitboard @@ -684,7 +684,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 - type: latheRecipe id: MicrowaveMachineCircuitboard @@ -693,7 +693,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 - type: latheRecipe id: ElectricGrillMachineCircuitboard @@ -702,7 +702,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 - type: latheRecipe id: FatExtractorMachineCircuitboard @@ -711,7 +711,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 - type: latheRecipe id: FlatpackerMachineCircuitboard @@ -720,7 +720,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 Gold: 100 - type: latheRecipe @@ -730,7 +730,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 - type: latheRecipe id: SurveillanceCameraRouterCircuitboard @@ -739,7 +739,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 - type: latheRecipe id: SurveillanceCameraWirelessRouterCircuitboard @@ -748,7 +748,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 - type: latheRecipe id: SurveillanceWirelessCameraAnchoredCircuitboard @@ -757,7 +757,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 - type: latheRecipe id: SurveillanceWirelessCameraMovableCircuitboard @@ -766,7 +766,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 - type: latheRecipe id: SurveillanceCameraMonitorCircuitboard @@ -775,7 +775,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 - type: latheRecipe id: SurveillanceWirelessCameraMonitorCircuitboard @@ -784,7 +784,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 - type: latheRecipe id: ComputerTelevisionCircuitboard @@ -793,7 +793,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 - type: latheRecipe id: EmitterCircuitboard @@ -802,7 +802,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 - type: latheRecipe id: ThrusterMachineCircuitboard @@ -811,7 +811,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 - type: latheRecipe id: GyroscopeMachineCircuitboard @@ -820,7 +820,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 - type: latheRecipe id: GasRecyclerMachineCircuitboard @@ -829,7 +829,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 - type: latheRecipe id: SeedExtractorMachineCircuitboard @@ -838,7 +838,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 - type: latheRecipe id: BoozeDispenserMachineCircuitboard @@ -847,7 +847,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 - type: latheRecipe id: CargoTelepadMachineCircuitboard @@ -856,7 +856,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 Gold: 100 - type: latheRecipe @@ -866,7 +866,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 - type: latheRecipe id: TelecomServerCircuitboard @@ -875,7 +875,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 - type: latheRecipe id: MassMediaCircuitboard @@ -884,7 +884,7 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 - type: latheRecipe id: MiniGravityGeneratorCircuitboard @@ -893,7 +893,7 @@ completetime: 6 materials: Steel: 100 - Glass: 900 + Glass: 500 Gold: 100 - type: latheRecipe @@ -902,7 +902,7 @@ completetime: 6 materials: Steel: 100 - Glass: 900 + Glass: 500 - type: latheRecipe id: ShuttleGunSvalinnMachineGunCircuitboard @@ -910,7 +910,8 @@ completetime: 6 materials: Steel: 100 - Glass: 900 + + Glass: 500 - type: latheRecipe id: ShuttleGunPerforatorCircuitboard @@ -918,7 +919,7 @@ completetime: 10 materials: Steel: 100 - Glass: 900 + Glass: 500 Gold: 100 - type: latheRecipe @@ -927,7 +928,7 @@ completetime: 6 materials: Steel: 100 - Glass: 900 + Glass: 500 - type: latheRecipe id: ShuttleGunFriendshipCircuitboard @@ -935,7 +936,7 @@ completetime: 8 materials: Steel: 100 - Glass: 900 + Glass: 500 Gold: 50 - type: latheRecipe @@ -944,7 +945,7 @@ completetime: 12 materials: Steel: 100 - Glass: 900 + Glass: 500 Gold: 100 - type: latheRecipe @@ -953,7 +954,7 @@ completetime: 5 materials: Steel: 100 - Glass: 900 + Glass: 500 Gold: 100 - type: latheRecipe @@ -962,4 +963,4 @@ completetime: 4 materials: Steel: 100 - Glass: 900 + Glass: 500 \ No newline at end of file From 47c5f0dba357277b669aa2f3885d6305a1e2765a Mon Sep 17 00:00:00 2001 From: PJBot Date: Sun, 28 Apr 2024 05:47:59 +0000 Subject: [PATCH 054/110] Automatic changelog update --- Resources/Changelog/Changelog.yml | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 288b2e1ab6..7943156cde 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,18 +1,4 @@ Entries: -- author: Golinth - changes: - - message: The mindshield outline now flashes! - type: Tweak - id: 5975 - time: '2024-02-20T22:26:48.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/25409 -- author: landwhale - changes: - - message: Resprited Nettles & Death Nettles. - type: Tweak - id: 5976 - time: '2024-02-20T23:58:08.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/25421 - author: takemysoult changes: - message: Explosive Technology changed to tier 2 arsenal and the cost has increased @@ -3866,3 +3852,17 @@ id: 6474 time: '2024-04-28T05:26:56.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/27431 +- author: SlamBamActionman + changes: + - message: "Removed Exterminators pending redesign. \U0001F525\U0001F44D\U0001F525" + type: Remove + id: 6475 + time: '2024-04-28T05:45:54.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/26978 +- author: Boaz1111 + changes: + - message: Circuit imprinter recipes now cost less glass + type: Tweak + id: 6476 + time: '2024-04-28T05:46:53.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/27310 From a8c297a374366b129a9b8c2859ffcae03a38693f Mon Sep 17 00:00:00 2001 From: Boaz1111 <149967078+Boaz1111@users.noreply.github.com> Date: Sun, 28 Apr 2024 07:49:03 +0200 Subject: [PATCH 055/110] Hyperconvection Circuit Imprinter (#27283) * not done yet * i may be stupid * Update electronics.yml --------- Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> --- .../Circuitboards/Machine/production.yml | 22 ++++++++ .../Entities/Structures/Machines/lathe.yml | 16 ++++++ .../Prototypes/Recipes/Lathes/electronics.yml | 15 ++++- Resources/Prototypes/Research/industrial.yml | 1 + .../building.png | Bin 0 -> 3419 bytes .../circuit_imprinter_hypercon.rsi/icon.png | Bin 0 -> 797 bytes .../circuit_imprinter_hypercon.rsi/meta.json | 52 ++++++++++++++++++ .../circuit_imprinter_hypercon.rsi/panel.png | Bin 0 -> 244 bytes .../circuit_imprinter_hypercon.rsi/unlit.png | Bin 0 -> 4771 bytes 9 files changed, 104 insertions(+), 2 deletions(-) create mode 100644 Resources/Textures/Structures/Machines/circuit_imprinter_hypercon.rsi/building.png create mode 100644 Resources/Textures/Structures/Machines/circuit_imprinter_hypercon.rsi/icon.png create mode 100644 Resources/Textures/Structures/Machines/circuit_imprinter_hypercon.rsi/meta.json create mode 100644 Resources/Textures/Structures/Machines/circuit_imprinter_hypercon.rsi/panel.png create mode 100644 Resources/Textures/Structures/Machines/circuit_imprinter_hypercon.rsi/unlit.png diff --git a/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/Machine/production.yml b/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/Machine/production.yml index 63c7908432..b3fc840aaf 100644 --- a/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/Machine/production.yml +++ b/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/Machine/production.yml @@ -152,6 +152,28 @@ DefaultPrototype: Beaker ExamineName: Glass Beaker +- type: entity + parent: BaseMachineCircuitboard + id: CircuitImprinterHyperConvectionMachineCircuitboard + name: hyper convection circuit imprinter machine board + description: A machine printed circuit board for a hyper convection circuit imprinter. + components: + - type: Sprite + state: science + - type: MachineBoard + prototype: CircuitImprinterHyperConvection + requirements: + MatterBin: 2 + tagRequirements: + GlassBeaker: + Amount: 2 + DefaultPrototype: Beaker + ExamineName: Glass Beaker + Igniter: + Amount: 1 + DefaultPrototype: Igniter + ExamineName: Igniter + - type: entity id: ExosuitFabricatorMachineCircuitboard parent: BaseMachineCircuitboard diff --git a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml index 2a080a85db..b58544b02b 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml @@ -416,6 +416,7 @@ - PowerComputerCircuitboard - AutolatheHyperConvectionMachineCircuitboard - ProtolatheHyperConvectionMachineCircuitboard + - CircuitImprinterHyperConvectionMachineCircuitboard - FatExtractorMachineCircuitboard - FlatpackerMachineCircuitboard - SheetifierMachineCircuitboard @@ -467,6 +468,21 @@ - RawMaterial - Ingot +- type: entity + id: CircuitImprinterHyperConvection + parent: CircuitImprinter + name: hyper convection circuit imprinter + description: A highly-experimental circuit imprinter that harnesses the power of extreme heat to slowly create objects more cost-effectively. + components: + - type: Sprite + sprite: Structures/Machines/circuit_imprinter_hypercon.rsi + - type: Lathe + materialUseMultiplier: 0.5 + timeMultiplier: 1.5 + - type: LatheHeatProducing + - type: Machine + board: CircuitImprinterHyperConvectionMachineCircuitboard + - type: entity id: ExosuitFabricator parent: BaseLathe diff --git a/Resources/Prototypes/Recipes/Lathes/electronics.yml b/Resources/Prototypes/Recipes/Lathes/electronics.yml index 03022b627e..b78703942e 100644 --- a/Resources/Prototypes/Recipes/Lathes/electronics.yml +++ b/Resources/Prototypes/Recipes/Lathes/electronics.yml @@ -277,8 +277,19 @@ category: Circuitry completetime: 4 materials: - Steel: 100 - Glass: 500 + Steel: 100 + Glass: 500 + +- type: latheRecipe + id: CircuitImprinterHyperConvectionMachineCircuitboard + result: CircuitImprinterHyperConvectionMachineCircuitboard + category: Circuitry + completetime: 4 + materials: + Steel: 100 + Glass: 900 + Gold: 100 + - type: latheRecipe id: ExosuitFabricatorMachineCircuitboard diff --git a/Resources/Prototypes/Research/industrial.yml b/Resources/Prototypes/Research/industrial.yml index ccc6e9c0f4..4dc60314c4 100644 --- a/Resources/Prototypes/Research/industrial.yml +++ b/Resources/Prototypes/Research/industrial.yml @@ -53,6 +53,7 @@ recipeUnlocks: - AutolatheHyperConvectionMachineCircuitboard - ProtolatheHyperConvectionMachineCircuitboard + - CircuitImprinterHyperConvectionMachineCircuitboard - SheetifierMachineCircuitboard - type: technology diff --git a/Resources/Textures/Structures/Machines/circuit_imprinter_hypercon.rsi/building.png b/Resources/Textures/Structures/Machines/circuit_imprinter_hypercon.rsi/building.png new file mode 100644 index 0000000000000000000000000000000000000000..7987532f3933df65625e3ea668b7bff4f0b32a22 GIT binary patch literal 3419 zcma)8cUV(d7QacPC{0C05eUc#4qYiCC5coWP+W=>MOaagCLl-|;!8$BV3a0RzyzfU zN>K!quBbS4rKzYf5D7(Ef{?&VvM)3H?f$X*?YHmy?tSmxbMNn+bMN_`bCOORx0Tu? zzX<>!b@YgpBl0d3HgQp;ztQifjm(Q5wL0t^eP-^CSCGOh#ZGnIxB>Aon3UOOd)tEzjI`OeBU+Jt-M+wPXS+^SGMyf@MRv|K}lMoB=Xqn2}l z+`h^{g*|6W#vS(j67=(9V^zy3%ge(d-=FpL_09Lqf9{$8Ok90s;uq4U&tCu3^Zm|3 z#&$_D8|BU|Zs|To_x7VD0s87`TL30aU~w_BxAN$g8qu$m7R#*r6vf@RbK0)w_O$JP zP1_{y4Bvfj>-Ma9=h>RN%Z8>A91&kx3&z1d&MA?_-XxMJD9Fn@hjB1tND>%wB)Ag8 z`K(PVw}@uQwOx`{X5BF7dw_`*hf>p%9#{QE8(W56eK8GB`5ZZGvogOdsj7S{+nZs# zK+6k;Ey3$K>Maw8byE{@ym##7>@QlJ1IO5S9z$z(jOV7q zr9uZfssg<_=fBhs#B?KkPJ%oG(KL!?KRMqhIAz1?%Ow1xQ2{Fe@I6?aHdF~A zSkQ9JpJ4UUgfZ?Vq#uMe$m$L{bBF3fXwMX?>ONC+I!rjshLVFt~gKa`xW1W7LBG?x(MV zoCKVNnt1D@rBiCe^Ef7r`Na=QGOpw~=`q#~5&zZC$Qn-y1Eo*xC!Nx<=BRT@L)#p- zO;q2Bukwlt|5loBbX{ll{p!ibO#X@&l%cma6~b{`qGNHs3D|jhcLgVEDR#-Jb-)&T z$0uhJm&mgV5?bZ4c_fn9;#h74m1~PI*PJqdRV#j?nu;15(-g}QWX?=y?-=|{ z(O@9oQLeTK)Z|`XDs}l^qY)5Ct=yI3)Y}*d#%s>S^RSFCa(KN`5?CrFEKUqS? z+9|QkQ0v)sZV)EdnWT*fxD(7l)YN0X3bKRU-Cu^DYDAQK(a%hv>TV*q{zw(k>*_CS zq~Diy=Y@u03cE+oH+7|UMW$nOf=%&1H)X?Qs&#uBL(IANNHb~|FLck~kj(w=$SiEu z+#bBnSR~{asm)bre*zJPrOE=yqVmHA+ z78bckFP1Eitai~@-fB10u8Jr9?m60;(rX^7687MNs$kTXr$sZ z80nC4vqR0Kdr6Rgyyas1iAX5@f~|nexHGWO?gHc6bU{zHnZP~RC~&Z92DKQXIN$|unBohnvJp2!xDDu?;mpp#7H~ygaKwDd z{Qq>uai=3h2!f*3>e6;;Dcp+-qRs!2u4NRV-;e^KSP)B~!4Wg$dxE#?qd##xPPww3 z{++e6qzPVd#NWU@L1#v^1aH0NiYXc#FUUJrGJmRqDb;qMOOz7*CP=gxou-&1Eo*!F zB>uDl*h6}?@pYBS&V};YI}UR<1Fs23BUirL7gzLI@wNQGZ-g`iOs{ zzxaF3I}GACPr%1F4w%A9q7zaa`0&X7e(hS2F{-dnCO1;_$?g6eO0IkE8FD>);^S8h ze1()dn=TfIt0-;D`a5a9V<##S?dBuv%K;oW563NHY`~GW>)5xg*tcB` z;{l%wC%Akh>@1g!#DD)8Xq|J1{kQ#(QKlg{#tW^#F3(M-t3N?|%i{~AKswDBvUmXU zIP@TNB0Rpnu@aNZNT`)U0?-^{?FsfKve4R-I=ZD4g<8(^&}M|8Vh_a+{mlc74DSKt zya^D2#V${n>FSp?;ObF^A5ljd(V`RAU@`?Sgwt))EAoqPkQ!Z2l?5;QtT<+-tEN@^|7Ml zU%TS4i@z&r|Dm00thmcq`UV3zPdz`p5=lne7Vq_iD|AZas-w5x%1f4(HQ(J5Y}B)zuwCA-ncd&gC{lmnEf1t3>kpVWu1u8I)`lPe0l?td;KLsZLLG0O z6BjPi%=)Ed7Dt-!d5081$aB>CxK)*f_tk#@ Dl6j~p literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/circuit_imprinter_hypercon.rsi/icon.png b/Resources/Textures/Structures/Machines/circuit_imprinter_hypercon.rsi/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..e56878a7adcd3b8f7998efc6e973a3ba711a8566 GIT binary patch literal 797 zcmV+&1LFLNP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0EE%S%hL89sdY0u@030RbL{?w+Y|M=*g!X#~z+ zxQ>G7&RYzXK>(UM00bNzOyL+CV1d#o0AKu(3P90t>GDkmJzaGMBO?>2C<0(O0AKtO z0-*Q>0Z<$xgMa`2L0OmpYY2eAmTkMCEaE{-R3MZE0gQ~0G;W};38v4TJA)AwI2`~2 zE0!&UvIqlv2UjQy0sjC04^Dje0NerC;$28soIz4j3d$o5NJxk?czfDHc@O~N^YQaT zc@O}00Lb#xlz6bf>^TTui-?GTF*#uQiY-tUCV2k*8I*+-0s(;mVA|U|kb#Sn1I&K& z<_!ZYD;tgvHmfe^+9u3x`~l|}~e5ZJJO z1DFOy0Vtl*k|V+VZ{L4_X?y_YbM*KX5D>shfB5hLOoIS8pSXKPqa;9IUr2P23pQ`w z08YH1sK7>pLgM7Htzf&sgrc&+e^@qxDWU`rG6SyzK$5Vaq7?u|0n7ndD8=b8gz^fK+%DY zkpVmxfE)p&{)>rALj(u_PhxacUS=o6SWMmZ?xOwous z815dv&!Cs2&+zNvUxw*rz6?jNzk|!e#9=hD882TwXL$Pf8r{ty^J bfPn!3_rFb(m7|jU00000NkvXXu0mjf@}x*> literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/circuit_imprinter_hypercon.rsi/meta.json b/Resources/Textures/Structures/Machines/circuit_imprinter_hypercon.rsi/meta.json new file mode 100644 index 0000000000..faa9a362b4 --- /dev/null +++ b/Resources/Textures/Structures/Machines/circuit_imprinter_hypercon.rsi/meta.json @@ -0,0 +1,52 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Made by Piksqu for ss14, based on the circuit imprinter sprite taken from tgstation at https://github.com/tgstation/tgstation/commit/40d89d11ea4a5cb81d61dc1018b46f4e7d32c62a", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "panel" + }, + { + "name": "unlit" + }, + { + "name": "building", + "delays": [ + [ + 0.16, + 0.16, + 0.16, + 0.16, + 0.16, + 0.16, + 0.16, + 0.16, + 0.16, + 0.16, + 0.16, + 0.16, + 0.16, + 0.16, + 0.16, + 0.16, + 0.16, + 0.16, + 0.16, + 0.16, + 0.16, + 0.16, + 0.16, + 0.16, + 0.18 + ] + ] + } + ] +} diff --git a/Resources/Textures/Structures/Machines/circuit_imprinter_hypercon.rsi/panel.png b/Resources/Textures/Structures/Machines/circuit_imprinter_hypercon.rsi/panel.png new file mode 100644 index 0000000000000000000000000000000000000000..e9c369c734fec49931f352c25324996cff93b6f4 GIT binary patch literal 244 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJg`O^sArbD$DG~_>EDn4#?y*Wp zX*)3G%EfzKd3@TfUpw!OY)FhJjsTxnV=Ij3rCLKK9PbHiC=X88?T XfNTyR27yb#lR=cHtDnm{r-UW|*AG^P literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/circuit_imprinter_hypercon.rsi/unlit.png b/Resources/Textures/Structures/Machines/circuit_imprinter_hypercon.rsi/unlit.png new file mode 100644 index 0000000000000000000000000000000000000000..9a9e240fbc1d85b37332327522d4669f57d00e57 GIT binary patch literal 4771 zcmeHKX;c$g77ijHsE7*cV2dFxBWfj;jVuz`!V)9_0TmeqE0xMZ$U;((fN0}NBkhV} z3%KCe(kO0>Ev}%lIl?F^(6$P#f-It<4l3=zVO|0%p6NfHGyRVwmAty|-tXS~z58zE zrH6_FM%y{t5eS6QfapPbxHAXu`JBO>uI#6Z;QG*U$zM#Ph}7!fln zqy&QT-t*nUGtIL`ZD=bzn3XzxeYviO+SYBK{QIgaqNg(`%)t5s$qxEa{B0SvHkI~O zrF}IoEhh$SaV-~au?TBJnwY87oXMaKHjtI zWKrTjp4R`~VW9Cfvnt27`UaA8+p8^>vTO=26zSL-M7D3HTb&Ck@$mMFuIO0pWMu3< z+JWWU%zo#5=}ej|D*XicwPQ;PCFY)GhjRA3?ihd3>iV8r(cL@kUb(&R+^6q(ps$=8 zdwoPg$;^bD>&NqA${dvPF}2mVv~#A%<*#jtte>&~DR-G1mhUraS?0LWM;IME_n3bw-u*k=fZ1%%cU$TiG-63pujt&b&zBT&wVEY3t&` z^G4m9XRR+Pl#fV8dF($cHti0Jt@y#|x>Mir_E2T>Oo%xeVkw(~j!vo0&p*yHbT%zG zu`X?tho`@bd&d1w^-JV?6ey}p9 z?y1}mdosImx|}D%sg|&Py4QmV!{*APYYv77UAzWKPr->BXt{M2akV7twH?F;0V{D$ z$ia*UQ{zWwxtx8~wPWPS#+;TC{YpPoA^MX>+(usJy?Je8+S{@@E0?D=7Sno7mHLJFBl&dA7Wt zp>u1Qy>2^du}Hpcxo6MR-WLtCgGEL`-tgKFkJ(epyl#?f3+LTA3c9n$9ADgd3%Sphm)q%fF^YE)!Iq7h?c zqe=@p9)aNDY1AU962pmNOr}utNL?37NkoN&M_R%Z!a}VtCRYR|>#*=-Q3RT-L^%?Y z=X^U4BNqUuFdQKoRdH%P*T^H8ak*e@5>rS-vkI={ks^hmL|=^#BQnSgG7R|{6^S&` zd^@6tP9o)o@%;xNz#Wey$8jx}LNOQ&WCNY7(a9)O4u?a5X%rd_0veD$NsS{$NUfh{ zg6PNKV|rAl(BcY>nrOmA#F_-0MY+@TA}b0yjnlN0^oyUM6?tt8K$UIl))By z+%FM;3+ZDeOF<_bmVq;J^B|VP@xAJNv4V) zsQGX#zW=U&3&bhRQ$(VVAnr|$`Q2;1N(cRpgzhKf3R3mHl2>R z)1(laMP)(^CXAUz?hqgzx!>ll<4FJ1-8E7w{TTwo> zs{zhTH2#UNfwlM(Jpkw-Ctt)R9*i!y6iq5crZ2i z7i0j(nIpu-G2kd)(KJDVtko#&^t6~2MzIhE`5CncA{&AlbYyS%k8WyAg literal 0 HcmV?d00001 From 5c817ddfc13eb5133fb9a6e60d49766523140d8e Mon Sep 17 00:00:00 2001 From: PJBot Date: Sun, 28 Apr 2024 05:50:09 +0000 Subject: [PATCH 056/110] Automatic changelog update --- Resources/Changelog/Changelog.yml | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 7943156cde..5abe4abe99 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,12 +1,4 @@ Entries: -- author: takemysoult - changes: - - message: Explosive Technology changed to tier 2 arsenal and the cost has increased - to 10 000 - type: Tweak - id: 5977 - time: '2024-02-21T00:56:39.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/25397 - author: Callmore changes: - message: Shoving other people is now more consistent. @@ -3866,3 +3858,10 @@ id: 6476 time: '2024-04-28T05:46:53.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/27310 +- author: Piksqu & Boaz1111 + changes: + - message: Added the hyperconvection circuit imprinter + type: Add + id: 6477 + time: '2024-04-28T05:49:03.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/27283 From faa7f3461cec072e2023af3d1a93d647d66f4f78 Mon Sep 17 00:00:00 2001 From: exincore Date: Sun, 28 Apr 2024 01:12:45 -0500 Subject: [PATCH 057/110] feat(fax): Fax machines print, copy, and send paper labels (#25979) * feat(fax): Client fax file-print parses and stores label * feat(fax): Fax machines print, copy, and send paper labels * style(Fax): Comments and formatting * feat(fax): Make fax admin logging more consistent and clear * refactor(fax): Replace ternary with a simpler null coalescing * refactor(fax): Make FaxSystem Send method signature consistent with Copy, PrintFile * refactor(fax): Read entire file and process later instead of peeking first * refactor(fax): Remove local variables only used for style * style(fax): Fix some nearby style errors * fix(fax): Undo an inaccurate change to admin log formatting * refactor(fax): Separate `firstLine` variable * fix(fax): Use Environment.NewLine * bienvenidos --------- Co-authored-by: metalgearsloth --- Content.Client/Fax/UI/FaxBoundUi.cs | 23 ++++++++- Content.Server/Fax/AdminUI/AdminFaxEui.cs | 2 +- Content.Server/Fax/FaxConstants.cs | 1 + Content.Server/Fax/FaxSystem.cs | 51 ++++++++++++++----- Content.Server/Nuke/NukeCodePaperSystem.cs | 1 + .../Fax/Components/FaxMachineComponent.cs | 6 ++- Content.Shared/Fax/SharedFax.cs | 5 +- 7 files changed, 72 insertions(+), 17 deletions(-) diff --git a/Content.Client/Fax/UI/FaxBoundUi.cs b/Content.Client/Fax/UI/FaxBoundUi.cs index 9b57595d7b..a95066a3b5 100644 --- a/Content.Client/Fax/UI/FaxBoundUi.cs +++ b/Content.Client/Fax/UI/FaxBoundUi.cs @@ -40,7 +40,7 @@ public sealed class FaxBoundUi : BoundUserInterface { if (_dialogIsOpen) return; - + _dialogIsOpen = true; var filters = new FileDialogFilters(new FileDialogFilters.Group("txt")); await using var file = await _fileDialogManager.OpenFile(filters); @@ -52,8 +52,27 @@ public sealed class FaxBoundUi : BoundUserInterface } using var reader = new StreamReader(file); + + var firstLine = await reader.ReadLineAsync(); + string? label = null; var content = await reader.ReadToEndAsync(); - SendMessage(new FaxFileMessage(content[..Math.Min(content.Length, FaxFileMessageValidation.MaxContentSize)], _window.OfficePaper)); + + if (firstLine is { }) + { + if (firstLine.StartsWith('#')) + { + label = firstLine[1..].Trim(); + } + else + { + content = firstLine + "\n" + content; + } + } + + SendMessage(new FaxFileMessage( + label?[..Math.Min(label.Length, FaxFileMessageValidation.MaxLabelSize)], + content[..Math.Min(content.Length, FaxFileMessageValidation.MaxContentSize)], + _window.OfficePaper)); } private void OnSendButtonPressed() diff --git a/Content.Server/Fax/AdminUI/AdminFaxEui.cs b/Content.Server/Fax/AdminUI/AdminFaxEui.cs index 5153e62195..452fc593d9 100644 --- a/Content.Server/Fax/AdminUI/AdminFaxEui.cs +++ b/Content.Server/Fax/AdminUI/AdminFaxEui.cs @@ -55,7 +55,7 @@ public sealed class AdminFaxEui : BaseEui } case AdminFaxEuiMsg.Send sendData: { - var printout = new FaxPrintout(sendData.Content, sendData.Title, null, sendData.StampState, + var printout = new FaxPrintout(sendData.Content, sendData.Title, null, null, sendData.StampState, new() { new StampDisplayInfo { StampedName = sendData.From, StampedColor = sendData.StampColor } }); _faxSystem.Receive(_entityManager.GetEntity(sendData.Target), printout); break; diff --git a/Content.Server/Fax/FaxConstants.cs b/Content.Server/Fax/FaxConstants.cs index 102510bd46..24ed7cbcf3 100644 --- a/Content.Server/Fax/FaxConstants.cs +++ b/Content.Server/Fax/FaxConstants.cs @@ -23,6 +23,7 @@ public static class FaxConstants public const string FaxNameData = "fax_data_name"; public const string FaxPaperNameData = "fax_data_title"; + public const string FaxPaperLabelData = "fax_data_label"; public const string FaxPaperPrototypeData = "fax_data_prototype"; public const string FaxPaperContentData = "fax_data_content"; public const string FaxPaperStampStateData = "fax_data_stamp_state"; diff --git a/Content.Server/Fax/FaxSystem.cs b/Content.Server/Fax/FaxSystem.cs index c21e0db20c..e86dbca4a1 100644 --- a/Content.Server/Fax/FaxSystem.cs +++ b/Content.Server/Fax/FaxSystem.cs @@ -4,6 +4,7 @@ using Content.Server.Chat.Managers; using Content.Server.DeviceNetwork; using Content.Server.DeviceNetwork.Components; using Content.Server.DeviceNetwork.Systems; +using Content.Server.Labels; using Content.Server.Paper; using Content.Server.Popups; using Content.Server.Power.Components; @@ -19,6 +20,7 @@ using Content.Shared.Fax; using Content.Shared.Fax.Systems; using Content.Shared.Fax.Components; using Content.Shared.Interaction; +using Content.Shared.Labels.Components; using Content.Shared.Mobs.Components; using Content.Shared.Paper; using Robust.Server.GameObjects; @@ -39,6 +41,7 @@ public sealed class FaxSystem : EntitySystem [Dependency] private readonly PopupSystem _popupSystem = default!; [Dependency] private readonly DeviceNetworkSystem _deviceNetworkSystem = default!; [Dependency] private readonly PaperSystem _paperSystem = default!; + [Dependency] private readonly LabelSystem _labelSystem = default!; [Dependency] private readonly SharedAudioSystem _audioSystem = default!; [Dependency] private readonly ToolSystem _toolSystem = default!; [Dependency] private readonly QuickDialogSystem _quickDialog = default!; @@ -240,7 +243,7 @@ public sealed class FaxSystem : EntitySystem } _adminLogger.Add(LogType.Action, LogImpact.Low, - $"{ToPrettyString(args.User):user} renamed {ToPrettyString(uid)} from \"{component.FaxName}\" to \"{newName}\""); + $"{ToPrettyString(args.User):user} renamed {ToPrettyString(uid):tool} from \"{component.FaxName}\" to \"{newName}\""); component.FaxName = newName; _popupSystem.PopupEntity(Loc.GetString("fax-machine-popup-name-set"), uid); UpdateUserInterface(uid, component); @@ -292,11 +295,12 @@ public sealed class FaxSystem : EntitySystem !args.Data.TryGetValue(FaxConstants.FaxPaperContentData, out string? content)) return; + args.Data.TryGetValue(FaxConstants.FaxPaperLabelData, out string? label); args.Data.TryGetValue(FaxConstants.FaxPaperStampStateData, out string? stampState); args.Data.TryGetValue(FaxConstants.FaxPaperStampedByData, out List? stampedBy); args.Data.TryGetValue(FaxConstants.FaxPaperPrototypeData, out string? prototypeId); - var printout = new FaxPrintout(content, name, prototypeId, stampState, stampedBy); + var printout = new FaxPrintout(content, name, label, prototypeId, stampState, stampedBy); Receive(uid, printout, args.SenderAddress); break; @@ -311,6 +315,7 @@ public sealed class FaxSystem : EntitySystem private void OnFileButtonPressed(EntityUid uid, FaxMachineComponent component, FaxFileMessage args) { + args.Label = args.Label?[..Math.Min(args.Label.Length, FaxFileMessageValidation.MaxLabelSize)]; args.Content = args.Content[..Math.Min(args.Content.Length, FaxFileMessageValidation.MaxContentSize)]; PrintFile(uid, component, args); } @@ -328,7 +333,7 @@ public sealed class FaxSystem : EntitySystem if (HasComp(component.PaperSlot.Item)) _faxecute.Faxecute(uid, component); /// when button pressed it will hurt the mob. else - Send(uid, component, args.Actor); + Send(uid, component, args); } private void OnRefreshButtonPressed(EntityUid uid, FaxMachineComponent component, FaxRefreshMessage args) @@ -425,16 +430,20 @@ public sealed class FaxSystem : EntitySystem else prototype = DefaultPaperPrototypeId; - var name = Loc.GetString("fax-machine-printed-paper-name"); + var name = Loc.GetString("fax-machine-printed-paper-name"); - var printout = new FaxPrintout(args.Content, name, prototype); + var printout = new FaxPrintout(args.Content, name, args.Label, prototype); component.PrintingQueue.Enqueue(printout); component.SendTimeoutRemaining += component.SendTimeout; UpdateUserInterface(uid, component); + // Unfortunately, since a paper entity does not yet exist, we have to emulate what LabelSystem will do. + var nameWithLabel = (args.Label is { } label) ? $"{name} ({label})" : name; _adminLogger.Add(LogType.Action, LogImpact.Low, - $"{ToPrettyString(args.Actor):actor} added print job to {ToPrettyString(uid):tool} with text: {args.Content}"); + $"{ToPrettyString(args.Actor):actor} " + + $"added print job to \"{component.FaxName}\" {ToPrettyString(uid):tool} " + + $"of {nameWithLabel}: {args.Content}"); } /// @@ -454,9 +463,12 @@ public sealed class FaxSystem : EntitySystem !TryComp(sendEntity, out var paper)) return; + TryComp(sendEntity, out var labelComponent); + // TODO: See comment in 'Send()' about not being able to copy whole entities var printout = new FaxPrintout(paper.Content, - metadata.EntityName, + labelComponent?.OriginalName ?? metadata.EntityName, + labelComponent?.CurrentLabel, metadata.EntityPrototype?.ID ?? DefaultPaperPrototypeId, paper.StampState, paper.StampedBy); @@ -470,14 +482,16 @@ public sealed class FaxSystem : EntitySystem UpdateUserInterface(uid, component); _adminLogger.Add(LogType.Action, LogImpact.Low, - $"{ToPrettyString(args.Actor):actor} added copy job to {ToPrettyString(uid):tool} with text: {ToPrettyString(component.PaperSlot.Item):subject}"); + $"{ToPrettyString(args.Actor):actor} " + + $"added copy job to \"{component.FaxName}\" {ToPrettyString(uid):tool} " + + $"of {ToPrettyString(sendEntity):subject}: {printout.Content}"); } /// /// Sends message to addressee if paper is set and a known fax is selected /// A timeout is set after sending, which is shared by the copy button. /// - public void Send(EntityUid uid, FaxMachineComponent? component = null, EntityUid? sender = null) + public void Send(EntityUid uid, FaxMachineComponent? component, FaxSendMessage args) { if (!Resolve(uid, ref component)) return; @@ -496,10 +510,13 @@ public sealed class FaxSystem : EntitySystem !TryComp(sendEntity, out var paper)) return; + TryComp(sendEntity, out var labelComponent); + var payload = new NetworkPayload() { { DeviceNetworkConstants.Command, FaxConstants.FaxPrintCommand }, - { FaxConstants.FaxPaperNameData, metadata.EntityName }, + { FaxConstants.FaxPaperNameData, labelComponent?.OriginalName ?? metadata.EntityName }, + { FaxConstants.FaxPaperLabelData, labelComponent?.CurrentLabel }, { FaxConstants.FaxPaperContentData, paper.Content }, }; @@ -520,7 +537,11 @@ public sealed class FaxSystem : EntitySystem _deviceNetworkSystem.QueuePacket(uid, component.DestinationFaxAddress, payload); - _adminLogger.Add(LogType.Action, LogImpact.Low, $"{(sender != null ? ToPrettyString(sender.Value) : "Unknown"):user} sent fax from \"{component.FaxName}\" {ToPrettyString(uid)} to {faxName} ({component.DestinationFaxAddress}): {paper.Content}"); + _adminLogger.Add(LogType.Action, LogImpact.Low, + $"{ToPrettyString(args.Actor):actor} " + + $"sent fax from \"{component.FaxName}\" {ToPrettyString(uid):tool} " + + $"to \"{faxName}\" ({component.DestinationFaxAddress}) " + + $"of {ToPrettyString(sendEntity):subject}: {paper.Content}"); component.SendTimeoutRemaining += component.SendTimeout; @@ -576,7 +597,13 @@ public sealed class FaxSystem : EntitySystem } _metaData.SetEntityName(printed, printout.Name); - _adminLogger.Add(LogType.Action, LogImpact.Low, $"\"{component.FaxName}\" {ToPrettyString(uid)} printed {ToPrettyString(printed)}: {printout.Content}"); + + if (printout.Label is { } label) + { + _labelSystem.Label(printed, label); + } + + _adminLogger.Add(LogType.Action, LogImpact.Low, $"\"{component.FaxName}\" {ToPrettyString(uid):tool} printed {ToPrettyString(printed):subject}: {printout.Content}"); } private void NotifyAdmins(string faxName) diff --git a/Content.Server/Nuke/NukeCodePaperSystem.cs b/Content.Server/Nuke/NukeCodePaperSystem.cs index c1725536e7..8025e2bbd5 100644 --- a/Content.Server/Nuke/NukeCodePaperSystem.cs +++ b/Content.Server/Nuke/NukeCodePaperSystem.cs @@ -66,6 +66,7 @@ namespace Content.Server.Nuke paperContent, Loc.GetString("nuke-codes-fax-paper-name"), null, + null, "paper_stamp-centcom", new List { diff --git a/Content.Shared/Fax/Components/FaxMachineComponent.cs b/Content.Shared/Fax/Components/FaxMachineComponent.cs index ee9459f508..6664ce023d 100644 --- a/Content.Shared/Fax/Components/FaxMachineComponent.cs +++ b/Content.Shared/Fax/Components/FaxMachineComponent.cs @@ -135,6 +135,9 @@ public sealed partial class FaxPrintout [DataField(required: true)] public string Name { get; private set; } = default!; + [DataField] + public string? Label { get; private set; } + [DataField(required: true)] public string Content { get; private set; } = default!; @@ -151,10 +154,11 @@ public sealed partial class FaxPrintout { } - public FaxPrintout(string content, string name, string? prototypeId = null, string? stampState = null, List? stampedBy = null) + public FaxPrintout(string content, string name, string? label = null, string? prototypeId = null, string? stampState = null, List? stampedBy = null) { Content = content; Name = name; + Label = label; PrototypeId = prototypeId ?? ""; StampState = stampState; StampedBy = stampedBy ?? new List(); diff --git a/Content.Shared/Fax/SharedFax.cs b/Content.Shared/Fax/SharedFax.cs index 15674aef7e..55c928fa95 100644 --- a/Content.Shared/Fax/SharedFax.cs +++ b/Content.Shared/Fax/SharedFax.cs @@ -37,11 +37,13 @@ public sealed class FaxUiState : BoundUserInterfaceState [Serializable, NetSerializable] public sealed class FaxFileMessage : BoundUserInterfaceMessage { + public string? Label; public string Content; public bool OfficePaper; - public FaxFileMessage(string content, bool officePaper) + public FaxFileMessage(string? label, string content, bool officePaper) { + Label = label; Content = content; OfficePaper = officePaper; } @@ -49,6 +51,7 @@ public sealed class FaxFileMessage : BoundUserInterfaceMessage public static class FaxFileMessageValidation { + public const int MaxLabelSize = 50; // parity with Content.Server.Labels.Components.HandLabelerComponent.MaxLabelChars public const int MaxContentSize = 10000; } From cbb2554c94a612e007337a2debf7dde83a1ff310 Mon Sep 17 00:00:00 2001 From: PJBot Date: Sun, 28 Apr 2024 06:13:51 +0000 Subject: [PATCH 058/110] Automatic changelog update --- Resources/Changelog/Changelog.yml | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 5abe4abe99..6374cd9e3e 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: Callmore - changes: - - message: Shoving other people is now more consistent. - type: Fix - id: 5978 - time: '2024-02-21T04:01:45.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/25353 - author: Ubaser changes: - message: A new UI theme, "Ashen", is now available to select in the options menu. @@ -3865,3 +3858,13 @@ id: 6477 time: '2024-04-28T05:49:03.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/27283 +- author: exincore + changes: + - message: Fax machines now copy the labels attached to papers. + type: Add + - message: Fax machine "Print File" functionality now applies the first line of + the file as a label when it begins with `#`. + type: Add + id: 6478 + time: '2024-04-28T06:12:45.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/25979 From db200faf11fc6f3ed3572394c51cc8d011fcb76f Mon Sep 17 00:00:00 2001 From: Plykiya <58439124+Plykiya@users.noreply.github.com> Date: Sat, 27 Apr 2024 23:22:10 -0700 Subject: [PATCH 059/110] yml fix for locker deconstruction (#27430) Actual fix for lockers and deconstruction Co-authored-by: Plykiya --- .../Storage/Closets/Lockers/base_structurelockers.yml | 7 +------ .../Prototypes/Recipes/Crafting/Graphs/storage/tallbox.yml | 2 -- 2 files changed, 1 insertion(+), 8 deletions(-) diff --git a/Resources/Prototypes/Entities/Structures/Storage/Closets/Lockers/base_structurelockers.yml b/Resources/Prototypes/Entities/Structures/Storage/Closets/Lockers/base_structurelockers.yml index 783bec3ba0..7d7bc94bb3 100644 --- a/Resources/Prototypes/Entities/Structures/Storage/Closets/Lockers/base_structurelockers.yml +++ b/Resources/Prototypes/Entities/Structures/Storage/Closets/Lockers/base_structurelockers.yml @@ -45,7 +45,7 @@ min: 1 max: 2 - type: Construction - graph: ClosetSteel + graph: ClosetSteelSecure node: done containers: - entity_storage @@ -66,8 +66,3 @@ behaviors: - !type:DoActsBehavior acts: ["Destruction"] - - type: Construction - graph: ClosetSteelSecure - node: done - containers: - - entity_storage diff --git a/Resources/Prototypes/Recipes/Crafting/Graphs/storage/tallbox.yml b/Resources/Prototypes/Recipes/Crafting/Graphs/storage/tallbox.yml index 7e450513af..e72c56ff44 100644 --- a/Resources/Prototypes/Recipes/Crafting/Graphs/storage/tallbox.yml +++ b/Resources/Prototypes/Recipes/Crafting/Graphs/storage/tallbox.yml @@ -19,8 +19,6 @@ conditions: - !type:StorageWelded welded: false - - !type:Locked - locked: false completed: - !type:SpawnPrototype prototype: SheetSteel1 From 0efcd30ac6d58fe0a24565c3ddd102277997fbba Mon Sep 17 00:00:00 2001 From: Plykiya <58439124+Plykiya@users.noreply.github.com> Date: Sun, 28 Apr 2024 00:11:46 -0700 Subject: [PATCH 060/110] Hardsuits, EVA suits, Firesuits, and others now protect your feet from Glass Shards (#26764) * Hardsuits and softsuits count as having shoes for step triggers * Add softsuit tag prototype * Change to suitEVA tag * Get rid of softsuit tag, found suitEVA tag * Full pass of ShoesRequiredStepTriggerImmune * Adds check to outerClothing for ShoesRequiredStepTriggerImmune * return * fuck Dionas * Convert to comp, space dragons immune as well * Merge conflict * Merge conflict * fix leftover tags * empty spaces * turns out the dragon didn't need it * minor optimization * Add access for system, add comp to baseShoes, check slotflags for every slot besides pockets * fix * fuck it we ball --------- Co-authored-by: Plykiya Co-authored-by: metalgearsloth --- .../Inventory/InventorySystem.Relay.cs | 5 ++ .../Inventory/InventorySystem.Slots.cs | 25 +++++++++ Content.Shared/Inventory/SlotFlags.cs | 2 + .../ClothingRequiredStepTriggerComponent.cs | 10 ++++ ...thingRequiredStepTriggerImmuneComponent.cs | 16 ++++++ .../ShoesRequiredStepTriggerComponent.cs | 11 ---- .../Components/StepTriggerImmuneComponent.cs | 9 +++ .../Systems/ShoesRequiredStepTriggerSystem.cs | 41 -------------- .../Systems/StepTriggerImmuneSystem.cs | 37 ++++++++++++ .../Weapons/Reflect/ReflectSystem.cs | 6 +- .../en-US/step-trigger/shoes-required.ftl | 2 +- .../Entities/Clothing/OuterClothing/armor.yml | 9 +++ .../OuterClothing/base_clothingouter.yml | 4 ++ .../Entities/Clothing/OuterClothing/suits.yml | 56 ++++++++++++------- .../Clothing/Shoes/base_clothingshoes.yml | 1 + .../Mobs/Cyborgs/base_borg_chassis.yml | 2 +- .../Entities/Mobs/NPCs/elemental.yml | 3 +- .../Prototypes/Entities/Mobs/NPCs/silicon.yml | 2 +- .../Entities/Objects/Devices/mousetrap.yml | 2 +- .../Prototypes/Entities/Objects/Fun/dice.yml | 2 +- .../Entities/Objects/Materials/shards.yml | 2 +- Resources/Prototypes/tags.yml | 3 - 22 files changed, 164 insertions(+), 86 deletions(-) create mode 100644 Content.Shared/StepTrigger/Components/ClothingRequiredStepTriggerComponent.cs create mode 100644 Content.Shared/StepTrigger/Components/ClothingRequiredStepTriggerImmuneComponent.cs delete mode 100644 Content.Shared/StepTrigger/Components/ShoesRequiredStepTriggerComponent.cs create mode 100644 Content.Shared/StepTrigger/Components/StepTriggerImmuneComponent.cs delete mode 100644 Content.Shared/StepTrigger/Systems/ShoesRequiredStepTriggerSystem.cs create mode 100644 Content.Shared/StepTrigger/Systems/StepTriggerImmuneSystem.cs diff --git a/Content.Shared/Inventory/InventorySystem.Relay.cs b/Content.Shared/Inventory/InventorySystem.Relay.cs index b418a1d416..6bd65622f1 100644 --- a/Content.Shared/Inventory/InventorySystem.Relay.cs +++ b/Content.Shared/Inventory/InventorySystem.Relay.cs @@ -123,6 +123,11 @@ public sealed class InventoryRelayedEvent : EntityEventArgs } } +public interface IClothingSlots +{ + SlotFlags Slots { get; } +} + /// /// Events that should be relayed to inventory slots should implement this interface. /// diff --git a/Content.Shared/Inventory/InventorySystem.Slots.cs b/Content.Shared/Inventory/InventorySystem.Slots.cs index c634b68e04..1da44155b9 100644 --- a/Content.Shared/Inventory/InventorySystem.Slots.cs +++ b/Content.Shared/Inventory/InventorySystem.Slots.cs @@ -27,6 +27,31 @@ public partial class InventorySystem : EntitySystem .RemoveHandler(HandleViewVariablesSlots, ListViewVariablesSlots); } + /// + /// Tries to find an entity in the specified slot with the specified component. + /// + public bool TryGetInventoryEntity(Entity entity, out EntityUid targetUid) + where T : IComponent, IClothingSlots + { + if (TryGetContainerSlotEnumerator(entity.Owner, out var containerSlotEnumerator)) + { + while (containerSlotEnumerator.NextItem(out var item, out var slot)) + { + if (!TryComp(item, out var required)) + continue; + + if ((((IClothingSlots) required).Slots & slot.SlotFlags) == 0x0) + continue; + + targetUid = item; + return true; + } + } + + targetUid = EntityUid.Invalid; + return false; + } + protected virtual void OnInit(EntityUid uid, InventoryComponent component, ComponentInit args) { if (!_prototypeManager.TryIndex(component.TemplateId, out InventoryTemplatePrototype? invTemplate)) diff --git a/Content.Shared/Inventory/SlotFlags.cs b/Content.Shared/Inventory/SlotFlags.cs index 8d5e33e348..90971d1670 100644 --- a/Content.Shared/Inventory/SlotFlags.cs +++ b/Content.Shared/Inventory/SlotFlags.cs @@ -27,4 +27,6 @@ public enum SlotFlags FEET = 1 << 14, SUITSTORAGE = 1 << 15, All = ~NONE, + + WITHOUT_POCKET = All & ~POCKET } diff --git a/Content.Shared/StepTrigger/Components/ClothingRequiredStepTriggerComponent.cs b/Content.Shared/StepTrigger/Components/ClothingRequiredStepTriggerComponent.cs new file mode 100644 index 0000000000..9efd78d082 --- /dev/null +++ b/Content.Shared/StepTrigger/Components/ClothingRequiredStepTriggerComponent.cs @@ -0,0 +1,10 @@ +using Content.Shared.Inventory; +using Robust.Shared.GameStates; + +namespace Content.Shared.StepTrigger.Components; + +/// +/// This is used for marking step trigger events that require the user to wear shoes, such as for glass shards. +/// +[RegisterComponent, NetworkedComponent] +public sealed partial class ClothingRequiredStepTriggerComponent : Component; diff --git a/Content.Shared/StepTrigger/Components/ClothingRequiredStepTriggerImmuneComponent.cs b/Content.Shared/StepTrigger/Components/ClothingRequiredStepTriggerImmuneComponent.cs new file mode 100644 index 0000000000..dc76207828 --- /dev/null +++ b/Content.Shared/StepTrigger/Components/ClothingRequiredStepTriggerImmuneComponent.cs @@ -0,0 +1,16 @@ +using Content.Shared.Inventory; +using Content.Shared.StepTrigger.Systems; +using Robust.Shared.GameStates; + +namespace Content.Shared.StepTrigger.Components; + +/// +/// This is used for cancelling step trigger events if the user is wearing clothing in a valid slot. +/// +[RegisterComponent, NetworkedComponent] +[Access(typeof(StepTriggerImmuneSystem))] +public sealed partial class ClothingRequiredStepTriggerImmuneComponent : Component, IClothingSlots +{ + [DataField] + public SlotFlags Slots { get; set; } = SlotFlags.FEET; +} diff --git a/Content.Shared/StepTrigger/Components/ShoesRequiredStepTriggerComponent.cs b/Content.Shared/StepTrigger/Components/ShoesRequiredStepTriggerComponent.cs deleted file mode 100644 index dd95b94a7e..0000000000 --- a/Content.Shared/StepTrigger/Components/ShoesRequiredStepTriggerComponent.cs +++ /dev/null @@ -1,11 +0,0 @@ -using Robust.Shared.GameStates; - -namespace Content.Shared.StepTrigger.Components; - -/// -/// This is used for cancelling step trigger events if the user is wearing shoes, such as for glass shards. -/// -[RegisterComponent, NetworkedComponent] -public sealed partial class ShoesRequiredStepTriggerComponent : Component -{ -} diff --git a/Content.Shared/StepTrigger/Components/StepTriggerImmuneComponent.cs b/Content.Shared/StepTrigger/Components/StepTriggerImmuneComponent.cs new file mode 100644 index 0000000000..74e10bafce --- /dev/null +++ b/Content.Shared/StepTrigger/Components/StepTriggerImmuneComponent.cs @@ -0,0 +1,9 @@ +using Robust.Shared.GameStates; + +namespace Content.Shared.StepTrigger.Components; + +/// +/// Grants the attached entity to step triggers. +/// +[RegisterComponent, NetworkedComponent] +public sealed partial class StepTriggerImmuneComponent : Component; diff --git a/Content.Shared/StepTrigger/Systems/ShoesRequiredStepTriggerSystem.cs b/Content.Shared/StepTrigger/Systems/ShoesRequiredStepTriggerSystem.cs deleted file mode 100644 index 5fc9140dfd..0000000000 --- a/Content.Shared/StepTrigger/Systems/ShoesRequiredStepTriggerSystem.cs +++ /dev/null @@ -1,41 +0,0 @@ -using Content.Shared.Examine; -using Content.Shared.Inventory; -using Content.Shared.StepTrigger.Components; -using Content.Shared.Tag; - -namespace Content.Shared.StepTrigger.Systems; - -public sealed class ShoesRequiredStepTriggerSystem : EntitySystem -{ - [Dependency] private readonly InventorySystem _inventory = default!; - [Dependency] private readonly TagSystem _tagSystem = default!; - - /// - public override void Initialize() - { - SubscribeLocalEvent(OnStepTriggerAttempt); - SubscribeLocalEvent(OnExamined); - } - - private void OnStepTriggerAttempt(EntityUid uid, ShoesRequiredStepTriggerComponent component, ref StepTriggerAttemptEvent args) - { - if (_tagSystem.HasTag(args.Tripper, "ShoesRequiredStepTriggerImmune")) - { - args.Cancelled = true; - return; - } - - if (!TryComp(args.Tripper, out var inventory)) - return; - - if (_inventory.TryGetSlotEntity(args.Tripper, "shoes", out _, inventory)) - { - args.Cancelled = true; - } - } - - private void OnExamined(EntityUid uid, ShoesRequiredStepTriggerComponent component, ExaminedEvent args) - { - args.PushMarkup(Loc.GetString("shoes-required-step-trigger-examine")); - } -} diff --git a/Content.Shared/StepTrigger/Systems/StepTriggerImmuneSystem.cs b/Content.Shared/StepTrigger/Systems/StepTriggerImmuneSystem.cs new file mode 100644 index 0000000000..ca72a20ae9 --- /dev/null +++ b/Content.Shared/StepTrigger/Systems/StepTriggerImmuneSystem.cs @@ -0,0 +1,37 @@ +using Content.Shared.Examine; +using Content.Shared.Inventory; +using Content.Shared.StepTrigger.Components; +using Content.Shared.Tag; + +namespace Content.Shared.StepTrigger.Systems; + +public sealed class StepTriggerImmuneSystem : EntitySystem +{ + [Dependency] private readonly InventorySystem _inventory = default!; + + /// + public override void Initialize() + { + SubscribeLocalEvent(OnStepTriggerAttempt); + SubscribeLocalEvent(OnStepTriggerClothingAttempt); + SubscribeLocalEvent(OnExamined); + } + + private void OnStepTriggerAttempt(Entity ent, ref StepTriggerAttemptEvent args) + { + args.Cancelled = true; + } + + private void OnStepTriggerClothingAttempt(EntityUid uid, ClothingRequiredStepTriggerComponent component, ref StepTriggerAttemptEvent args) + { + if (_inventory.TryGetInventoryEntity(args.Tripper, out _)) + { + args.Cancelled = true; + } + } + + private void OnExamined(EntityUid uid, ClothingRequiredStepTriggerComponent component, ExaminedEvent args) + { + args.PushMarkup(Loc.GetString("clothing-required-step-trigger-examine")); + } +} diff --git a/Content.Shared/Weapons/Reflect/ReflectSystem.cs b/Content.Shared/Weapons/Reflect/ReflectSystem.cs index 4a7c2f6b6a..014b3cfe1f 100644 --- a/Content.Shared/Weapons/Reflect/ReflectSystem.cs +++ b/Content.Shared/Weapons/Reflect/ReflectSystem.cs @@ -57,7 +57,7 @@ public sealed class ReflectSystem : EntitySystem if (args.Reflected) return; - foreach (var ent in _inventorySystem.GetHandOrInventoryEntities(uid, SlotFlags.All & ~SlotFlags.POCKET)) + foreach (var ent in _inventorySystem.GetHandOrInventoryEntities(uid, SlotFlags.WITHOUT_POCKET)) { if (!TryReflectHitscan(uid, ent, args.Shooter, args.SourceItem, args.Direction, out var dir)) continue; @@ -70,7 +70,7 @@ public sealed class ReflectSystem : EntitySystem private void OnReflectUserCollide(EntityUid uid, ReflectUserComponent component, ref ProjectileReflectAttemptEvent args) { - foreach (var ent in _inventorySystem.GetHandOrInventoryEntities(uid, SlotFlags.All & ~SlotFlags.POCKET)) + foreach (var ent in _inventorySystem.GetHandOrInventoryEntities(uid, SlotFlags.WITHOUT_POCKET)) { if (!TryReflectProjectile(uid, ent, args.ProjUid)) continue; @@ -222,7 +222,7 @@ public sealed class ReflectSystem : EntitySystem /// private void RefreshReflectUser(EntityUid user) { - foreach (var ent in _inventorySystem.GetHandOrInventoryEntities(user, SlotFlags.All & ~SlotFlags.POCKET)) + foreach (var ent in _inventorySystem.GetHandOrInventoryEntities(user, SlotFlags.WITHOUT_POCKET)) { if (!HasComp(ent)) continue; diff --git a/Resources/Locale/en-US/step-trigger/shoes-required.ftl b/Resources/Locale/en-US/step-trigger/shoes-required.ftl index 8c1369a49f..07a4b8a84f 100644 --- a/Resources/Locale/en-US/step-trigger/shoes-required.ftl +++ b/Resources/Locale/en-US/step-trigger/shoes-required.ftl @@ -1 +1 @@ -shoes-required-step-trigger-examine = You probably shouldn't step on this barefoot. +clothing-required-step-trigger-examine = You probably shouldn't step on this barefoot. diff --git a/Resources/Prototypes/Entities/Clothing/OuterClothing/armor.yml b/Resources/Prototypes/Entities/Clothing/OuterClothing/armor.yml index 9a1f142740..ecc4156aff 100644 --- a/Resources/Prototypes/Entities/Clothing/OuterClothing/armor.yml +++ b/Resources/Prototypes/Entities/Clothing/OuterClothing/armor.yml @@ -138,6 +138,8 @@ Radiation: 0 Caustic: 0.75 - type: GroupExamine + - type: ClothingRequiredStepTriggerImmune + slots: WITHOUT_POCKET - type: entity parent: ClothingOuterArmorHeavy @@ -234,6 +236,8 @@ - type: ExplosionResistance damageCoefficient: 0.5 - type: GroupExamine + - type: ClothingRequiredStepTriggerImmune + slots: WITHOUT_POCKET - type: entity parent: ClothingOuterBaseLarge @@ -260,6 +264,8 @@ - type: Construction graph: BoneArmor node: armor + - type: ClothingRequiredStepTriggerImmune + slots: WITHOUT_POCKET - type: entity parent: ClothingOuterBaseLarge @@ -279,3 +285,6 @@ Piercing: 0.6 Heat: 0.5 - type: GroupExamine + - type: ClothingRequiredStepTriggerImmune + slots: WITHOUT_POCKET + diff --git a/Resources/Prototypes/Entities/Clothing/OuterClothing/base_clothingouter.yml b/Resources/Prototypes/Entities/Clothing/OuterClothing/base_clothingouter.yml index e5067e84c5..16b287917b 100644 --- a/Resources/Prototypes/Entities/Clothing/OuterClothing/base_clothingouter.yml +++ b/Resources/Prototypes/Entities/Clothing/OuterClothing/base_clothingouter.yml @@ -134,6 +134,8 @@ tags: - Hardsuit - WhitelistChameleon + - type: ClothingRequiredStepTriggerImmune + slots: WITHOUT_POCKET - type: entity abstract: true @@ -152,6 +154,8 @@ - type: HeldSpeedModifier - type: Item size: Huge + - type: ClothingRequiredStepTriggerImmune + slots: WITHOUT_POCKET - type: entity parent: ClothingOuterBase diff --git a/Resources/Prototypes/Entities/Clothing/OuterClothing/suits.yml b/Resources/Prototypes/Entities/Clothing/OuterClothing/suits.yml index 5e82959c4e..cc6f0131ad 100644 --- a/Resources/Prototypes/Entities/Clothing/OuterClothing/suits.yml +++ b/Resources/Prototypes/Entities/Clothing/OuterClothing/suits.yml @@ -25,6 +25,8 @@ tags: - Hardsuit - WhitelistChameleon + - type: ClothingRequiredStepTriggerImmune + slots: WITHOUT_POCKET - type: entity parent: ClothingOuterSuitBomb @@ -63,6 +65,8 @@ sprintModifier: 0.7 - type: HeldSpeedModifier - type: GroupExamine + - type: ClothingRequiredStepTriggerImmune + slots: WITHOUT_POCKET - type: entity parent: ClothingOuterBaseLarge @@ -70,26 +74,28 @@ name: atmos fire suit description: An expensive firesuit that protects against even the most deadly of station fires. Designed to protect even if the wearer is set aflame. components: - - type: Sprite - sprite: Clothing/OuterClothing/Suits/atmos_firesuit.rsi - - type: Clothing - sprite: Clothing/OuterClothing/Suits/atmos_firesuit.rsi - - type: PressureProtection - highPressureMultiplier: 0.02 - lowPressureMultiplier: 1000 - - type: TemperatureProtection - coefficient: 0.001 - - type: Armor - modifiers: - coefficients: - Slash: 0.9 - Heat: 0.3 - Cold: 0.2 - - type: ClothingSpeedModifier - walkModifier: 0.8 - sprintModifier: 0.8 - - type: HeldSpeedModifier - - type: GroupExamine + - type: Sprite + sprite: Clothing/OuterClothing/Suits/atmos_firesuit.rsi + - type: Clothing + sprite: Clothing/OuterClothing/Suits/atmos_firesuit.rsi + - type: PressureProtection + highPressureMultiplier: 0.02 + lowPressureMultiplier: 1000 + - type: TemperatureProtection + coefficient: 0.001 + - type: Armor + modifiers: + coefficients: + Slash: 0.9 + Heat: 0.3 + Cold: 0.2 + - type: ClothingSpeedModifier + walkModifier: 0.8 + sprintModifier: 0.8 + - type: HeldSpeedModifier + - type: GroupExamine + - type: ClothingRequiredStepTriggerImmune + slots: WITHOUT_POCKET - type: entity parent: [ClothingOuterBaseLarge, GeigerCounterClothing] @@ -113,7 +119,9 @@ - type: ContainerContainer containers: toggleable-clothing: !type:ContainerSlot {} - + - type: ClothingRequiredStepTriggerImmune + slots: WITHOUT_POCKET + - type: entity parent: ClothingOuterBaseLarge id: ClothingOuterSuitSpaceNinja @@ -164,6 +172,8 @@ sprite: Clothing/OuterClothing/Suits/chicken.rsi - type: Clothing sprite: Clothing/OuterClothing/Suits/chicken.rsi + - type: ClothingRequiredStepTriggerImmune + slots: WITHOUT_POCKET - type: entity parent: ClothingOuterBase @@ -189,6 +199,8 @@ - type: ContainerContainer containers: toggleable-clothing: !type:ContainerSlot {} + - type: ClothingRequiredStepTriggerImmune + slots: WITHOUT_POCKET - type: entity parent: ClothingOuterBase @@ -210,6 +222,8 @@ - type: Construction graph: ClothingOuterSuitIan node: suit + - type: ClothingRequiredStepTriggerImmune + slots: WITHOUT_POCKET - type: entity parent: ClothingOuterBase diff --git a/Resources/Prototypes/Entities/Clothing/Shoes/base_clothingshoes.yml b/Resources/Prototypes/Entities/Clothing/Shoes/base_clothingshoes.yml index 1119d5cda7..a0f56966bb 100644 --- a/Resources/Prototypes/Entities/Clothing/Shoes/base_clothingshoes.yml +++ b/Resources/Prototypes/Entities/Clothing/Shoes/base_clothingshoes.yml @@ -23,6 +23,7 @@ tags: - ClothMade - WhitelistChameleon + - type: ClothingRequiredStepTriggerImmune - type: entity abstract: true diff --git a/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml b/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml index 27a19ab899..cb846c7dde 100644 --- a/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml +++ b/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml @@ -205,13 +205,13 @@ - type: StandingState - type: Tag tags: - - ShoesRequiredStepTriggerImmune - DoorBumpOpener - CanPilot - type: Emoting - type: GuideHelp guides: - Cyborgs + - type: StepTriggerImmune - type: entity id: BaseBorgChassisNT diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/elemental.yml b/Resources/Prototypes/Entities/Mobs/NPCs/elemental.yml index c2380c4027..58d30ccfc0 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/elemental.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/elemental.yml @@ -44,7 +44,6 @@ - type: Tag tags: - DoorBumpOpener - - ShoesRequiredStepTriggerImmune - type: MobState allowedStates: - Alive @@ -73,6 +72,8 @@ - type: InputMover - type: MobMover - type: ZombieImmune + - type: ClothingRequiredStepTriggerImmune + slots: All - type: entity abstract: true diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/silicon.yml b/Resources/Prototypes/Entities/Mobs/NPCs/silicon.yml index c808ed2d21..7a36046a0f 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/silicon.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/silicon.yml @@ -66,7 +66,6 @@ - type: Tag tags: - DoorBumpOpener - - ShoesRequiredStepTriggerImmune - type: MobState allowedStates: - Alive @@ -107,6 +106,7 @@ - type: TypingIndicator proto: robot - type: ZombieImmune + - type: StepTriggerImmune - type: entity parent: MobSiliconBase diff --git a/Resources/Prototypes/Entities/Objects/Devices/mousetrap.yml b/Resources/Prototypes/Entities/Objects/Devices/mousetrap.yml index c3bd74dd75..d97cae2e6d 100644 --- a/Resources/Prototypes/Entities/Objects/Devices/mousetrap.yml +++ b/Resources/Prototypes/Entities/Objects/Devices/mousetrap.yml @@ -15,7 +15,7 @@ requiredTriggeredSpeed: 0 - type: Mousetrap - type: TriggerOnStepTrigger - - type: ShoesRequiredStepTrigger + - type: ClothingRequiredStepTrigger - type: DamageUserOnTrigger damage: types: diff --git a/Resources/Prototypes/Entities/Objects/Fun/dice.yml b/Resources/Prototypes/Entities/Objects/Fun/dice.yml index 852a1c2699..0b534f0879 100644 --- a/Resources/Prototypes/Entities/Objects/Fun/dice.yml +++ b/Resources/Prototypes/Entities/Objects/Fun/dice.yml @@ -121,7 +121,7 @@ - type: StepTrigger intersectRatio: 0.2 - type: TriggerOnStepTrigger - - type: ShoesRequiredStepTrigger + - type: ClothingRequiredStepTrigger - type: Slippery slipSound: path: /Audio/Effects/glass_step.ogg diff --git a/Resources/Prototypes/Entities/Objects/Materials/shards.yml b/Resources/Prototypes/Entities/Objects/Materials/shards.yml index 834a2e7ff0..dfd02b6fcc 100644 --- a/Resources/Prototypes/Entities/Objects/Materials/shards.yml +++ b/Resources/Prototypes/Entities/Objects/Materials/shards.yml @@ -63,7 +63,7 @@ acts: [ "Destruction" ] - type: StepTrigger intersectRatio: 0.2 - - type: ShoesRequiredStepTrigger + - type: ClothingRequiredStepTrigger - type: Slippery slipSound: path: /Audio/Effects/glass_step.ogg diff --git a/Resources/Prototypes/tags.yml b/Resources/Prototypes/tags.yml index 8238bc2d53..f4477a8c85 100644 --- a/Resources/Prototypes/tags.yml +++ b/Resources/Prototypes/tags.yml @@ -1104,9 +1104,6 @@ - type: Tag id: Shiv -- type: Tag - id: ShoesRequiredStepTriggerImmune - - type: Tag id: Shovel From 18fa8bf633c73b7d0914194a4ddd5fed1cf93f0c Mon Sep 17 00:00:00 2001 From: PJBot Date: Sun, 28 Apr 2024 07:12:52 +0000 Subject: [PATCH 061/110] Automatic changelog update --- Resources/Changelog/Changelog.yml | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 6374cd9e3e..34e2e15da0 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: Ubaser - changes: - - message: A new UI theme, "Ashen", is now available to select in the options menu. - type: Add - id: 5979 - time: '2024-02-21T05:26:55.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/25408 - author: Holinka4ever changes: - message: Sunglasses were removed from ClothesMate @@ -3868,3 +3861,11 @@ id: 6478 time: '2024-04-28T06:12:45.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/25979 +- author: Plykiya + changes: + - message: Hardsuits, EVA suits, firesuits and other things now protect your feet + from dangerous glass shards. + type: Tweak + id: 6479 + time: '2024-04-28T07:11:46.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/26764 From 1efdf4a40a434e52a7c909e496c0675fef406ee4 Mon Sep 17 00:00:00 2001 From: FungiFellow <151778459+FungiFellow@users.noreply.github.com> Date: Sun, 28 Apr 2024 03:23:28 -0500 Subject: [PATCH 062/110] Bows fit on Airtank Slot (#27433) Update bow.yml --- Resources/Prototypes/Entities/Objects/Weapons/Guns/Bow/bow.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Bow/bow.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Bow/bow.yml index db98c6eabe..32b4fc6075 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Bow/bow.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Bow/bow.yml @@ -12,7 +12,8 @@ - type: Clothing quickEquip: false slots: - - Back + - Back + - suitStorage - type: Wieldable wieldSound: path: /Audio/Items/bow_pull.ogg From ab66ae9ab0fb163ece839f28b01a007f53221544 Mon Sep 17 00:00:00 2001 From: PJBot Date: Sun, 28 Apr 2024 08:24:34 +0000 Subject: [PATCH 063/110] Automatic changelog update --- Resources/Changelog/Changelog.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 34e2e15da0..9cbf590a52 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: Holinka4ever - changes: - - message: Sunglasses were removed from ClothesMate - type: Remove - id: 5980 - time: '2024-02-21T06:11:02.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/25221 - author: Errant changes: - message: Rotten food is now less lethal to eat, and has a high chance to induce @@ -3869,3 +3862,10 @@ id: 6479 time: '2024-04-28T07:11:46.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/26764 +- author: FungiFellow + changes: + - message: Bows now fit in Exosuit slot. + type: Tweak + id: 6480 + time: '2024-04-28T08:23:28.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/27433 From f3e9db014194d7517bb1ae1188c71553bb49b893 Mon Sep 17 00:00:00 2001 From: osjarw <62134478+osjarw@users.noreply.github.com> Date: Sun, 28 Apr 2024 12:28:16 +0300 Subject: [PATCH 064/110] DelayedForce and Rapid anom behaviors fixed (#27435) --- Resources/Prototypes/Anomaly/behaviours.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Resources/Prototypes/Anomaly/behaviours.yml b/Resources/Prototypes/Anomaly/behaviours.yml index aa9ad2f90d..dea1ddb69c 100644 --- a/Resources/Prototypes/Anomaly/behaviours.yml +++ b/Resources/Prototypes/Anomaly/behaviours.yml @@ -58,14 +58,14 @@ id: DelayedForce earnPointModifier: 1.15 description: anomaly-behavior-delayed-force - pulseFrequencyModifier: 0.5 + pulseFrequencyModifier: 2 pulsePowerModifier: 2 - type: anomalyBehavior id: Rapid earnPointModifier: 1.15 description: anomaly-behavior-rapid - pulseFrequencyModifier: 2 + pulseFrequencyModifier: 0.5 pulsePowerModifier: 0.5 - type: anomalyBehavior From 5476daf64ec8ac16b3e600d3cacfeb2fff3ee6d4 Mon Sep 17 00:00:00 2001 From: PJBot Date: Sun, 28 Apr 2024 09:29:21 +0000 Subject: [PATCH 065/110] Automatic changelog update --- Resources/Changelog/Changelog.yml | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 9cbf590a52..994ff32851 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,12 +1,4 @@ Entries: -- author: Errant - changes: - - message: Rotten food is now less lethal to eat, and has a high chance to induce - vomiting. - type: Tweak - id: 5981 - time: '2024-02-21T06:12:59.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/25418 - author: EdenTheLiznerd changes: - message: Deathnettles no longer penetrate hardsuit armor @@ -3869,3 +3861,10 @@ id: 6480 time: '2024-04-28T08:23:28.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/27433 +- author: osjarw + changes: + - message: Fixed some anomaly behaviours pulsing at wrong rates. + type: Fix + id: 6481 + time: '2024-04-28T09:28:16.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/27435 From 008935f6ec6f9cd5c56e943a5ce02c1f54cec893 Mon Sep 17 00:00:00 2001 From: Ubaser <134914314+UbaserB@users.noreply.github.com> Date: Sun, 28 Apr 2024 21:07:36 +1000 Subject: [PATCH 066/110] New plant mutation: Pyrotton (#27200) * WIP * sprites n stuff * flavour * maybe fix * add stack * fix parent --- .../Locale/en-US/flavors/flavor-profiles.ftl | 1 + Resources/Locale/en-US/seeds/seeds.ftl | 2 + .../Objects/Consumable/Food/produce.yml | 33 +++++++++++ .../Entities/Objects/Materials/materials.yml | 54 +++++++++++++++++- .../Objects/Specific/Hydroponics/seeds.yml | 10 ++++ Resources/Prototypes/Flavors/flavors.yml | 7 ++- Resources/Prototypes/Hydroponics/seeds.yml | 28 +++++++++ .../Prototypes/Stacks/Materials/materials.yml | 10 +++- .../Objects/Materials/materials.rsi/meta.json | 11 +++- .../Materials/materials.rsi/pyrotton.png | Bin 0 -> 1311 bytes .../Materials/materials.rsi/pyrotton_2.png | Bin 0 -> 1394 bytes .../Materials/materials.rsi/pyrotton_3.png | Bin 0 -> 1450 bytes .../Hydroponics/pyrotton.rsi/dead.png | Bin 0 -> 1267 bytes .../Hydroponics/pyrotton.rsi/harvest.png | Bin 0 -> 1514 bytes .../Hydroponics/pyrotton.rsi/meta.json | 32 +++++++++++ .../Hydroponics/pyrotton.rsi/produce.png | Bin 0 -> 1456 bytes .../Hydroponics/pyrotton.rsi/seed.png | Bin 0 -> 1385 bytes .../Hydroponics/pyrotton.rsi/stage-1.png | Bin 0 -> 1132 bytes .../Hydroponics/pyrotton.rsi/stage-2.png | Bin 0 -> 1219 bytes .../Hydroponics/pyrotton.rsi/stage-3.png | Bin 0 -> 1295 bytes 20 files changed, 184 insertions(+), 4 deletions(-) create mode 100644 Resources/Textures/Objects/Materials/materials.rsi/pyrotton.png create mode 100644 Resources/Textures/Objects/Materials/materials.rsi/pyrotton_2.png create mode 100644 Resources/Textures/Objects/Materials/materials.rsi/pyrotton_3.png create mode 100644 Resources/Textures/Objects/Specific/Hydroponics/pyrotton.rsi/dead.png create mode 100644 Resources/Textures/Objects/Specific/Hydroponics/pyrotton.rsi/harvest.png create mode 100644 Resources/Textures/Objects/Specific/Hydroponics/pyrotton.rsi/meta.json create mode 100644 Resources/Textures/Objects/Specific/Hydroponics/pyrotton.rsi/produce.png create mode 100644 Resources/Textures/Objects/Specific/Hydroponics/pyrotton.rsi/seed.png create mode 100644 Resources/Textures/Objects/Specific/Hydroponics/pyrotton.rsi/stage-1.png create mode 100644 Resources/Textures/Objects/Specific/Hydroponics/pyrotton.rsi/stage-2.png create mode 100644 Resources/Textures/Objects/Specific/Hydroponics/pyrotton.rsi/stage-3.png diff --git a/Resources/Locale/en-US/flavors/flavor-profiles.ftl b/Resources/Locale/en-US/flavors/flavor-profiles.ftl index 41b575b7d6..f861624fb6 100644 --- a/Resources/Locale/en-US/flavors/flavor-profiles.ftl +++ b/Resources/Locale/en-US/flavors/flavor-profiles.ftl @@ -168,6 +168,7 @@ flavor-complex-light = like a light gone out flavor-complex-profits = like profits flavor-complex-fishops = like the dreaded fishops flavor-complex-violets = like violets +flavor-complex-pyrotton = like a burning mouth flavor-complex-mothballs = like mothballs flavor-complex-paint-thinner = like paint thinner diff --git a/Resources/Locale/en-US/seeds/seeds.ftl b/Resources/Locale/en-US/seeds/seeds.ftl index bff317a7e6..4a125b1724 100644 --- a/Resources/Locale/en-US/seeds/seeds.ftl +++ b/Resources/Locale/en-US/seeds/seeds.ftl @@ -113,3 +113,5 @@ seeds-pumpkin-name = pumpkin seeds-pumpkin-display-name = pumpkins seeds-cotton-name = cotton seeds-cotton-display-name = cotton plant +seeds-pyrotton-name = pyrotton +seeds-pyrotton-display-name = pyrotton plant diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Food/produce.yml b/Resources/Prototypes/Entities/Objects/Consumable/Food/produce.yml index 302c0d98b6..1bd895829b 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Food/produce.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Food/produce.yml @@ -1869,3 +1869,36 @@ tags: - ClothMade - CottonBoll + +- type: entity + name: pyrotton boll + description: This will probably set you on fire. + id: PyrottonBol + parent: FoodProduceBase + components: + - type: Sprite + sprite: Objects/Specific/Hydroponics/pyrotton.rsi + - type: FlavorProfile + flavors: + - pyrotton + - type: Food + requiresSpecialDigestion: true + - type: SolutionContainerManager + solutions: + food: + reagents: + - ReagentId: Fiber + Quantity: 5 + - ReagentId: Phlogiston + Quantity: 5 + - type: Log + spawnedPrototype: MaterialPyrotton1 + spawnCount: 2 + - type: Produce + seedId: pyrotton + - type: Tag + tags: + - ClothMade + - CottonBoll + - type: Extractable + grindableSolutionName: food diff --git a/Resources/Prototypes/Entities/Objects/Materials/materials.yml b/Resources/Prototypes/Entities/Objects/Materials/materials.yml index d11df5d94e..f4ac9e7ee1 100644 --- a/Resources/Prototypes/Entities/Objects/Materials/materials.yml +++ b/Resources/Prototypes/Entities/Objects/Materials/materials.yml @@ -419,6 +419,58 @@ - type: Stack count: 1 +- type: entity + parent: MaterialBase + id: MaterialPyrotton + name: pyrotton + suffix: Full + components: + - type: Stack + stackType: Pyrotton + baseLayer: base + layerStates: + - pyrotton + - pyrotton_2 + - pyrotton_3 + - type: Sprite + state: pyrotton_3 + layers: + - state: pyrotton_3 + map: ["base"] + - type: Appearance + - type: Food + requiresSpecialDigestion: true + - type: SolutionContainerManager + solutions: + food: + maxVol: 10 + reagents: + - ReagentId: Fiber + Quantity: 5 + - ReagentId: Phlogiston + Quantity: 5 + - type: Extractable + juiceSolution: + reagents: + - ReagentId: Fiber + Quantity: 3 + - ReagentId: Phlogiston + Quantity: 3 + - type: Tag + tags: + - ClothMade + - RawMaterial + +- type: entity + parent: MaterialPyrotton + id: MaterialPyrotton1 + suffix: Single + components: + - type: Sprite + state: pyrotton + - type: Stack + count: 1 + - type: entity parent: MaterialBase id: MaterialBananium @@ -589,4 +641,4 @@ materialComposition: Gunpowder: 100 - type: Item - size: Tiny \ No newline at end of file + size: Tiny diff --git a/Resources/Prototypes/Entities/Objects/Specific/Hydroponics/seeds.yml b/Resources/Prototypes/Entities/Objects/Specific/Hydroponics/seeds.yml index 0a084dc246..6e5adac65b 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Hydroponics/seeds.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Hydroponics/seeds.yml @@ -581,3 +581,13 @@ seedId: cotton - type: Sprite sprite: Objects/Specific/Hydroponics/cotton.rsi + +- type: entity + parent: SeedBase + name: packet of pyrotton seeds + id: PyrottonSeeds + components: + - type: Seed + seedId: pyrotton + - type: Sprite + sprite: Objects/Specific/Hydroponics/pyrotton.rsi diff --git a/Resources/Prototypes/Flavors/flavors.yml b/Resources/Prototypes/Flavors/flavors.yml index 25ed9d3372..47a1bc71aa 100644 --- a/Resources/Prototypes/Flavors/flavors.yml +++ b/Resources/Prototypes/Flavors/flavors.yml @@ -1059,6 +1059,11 @@ flavorType: Complex description: flavor-complex-violets +- type: flavor + id: pyrotton + flavorType: Complex + description: flavor-complex-pyrotton + - type: flavor id: mothballs flavorType: Complex @@ -1067,4 +1072,4 @@ - type: flavor id: paintthinner flavorType: Complex - description: flavor-complex-paint-thinner + description: flavor-complex-paint-thinner \ No newline at end of file diff --git a/Resources/Prototypes/Hydroponics/seeds.yml b/Resources/Prototypes/Hydroponics/seeds.yml index 053300b986..c2a5e943b1 100644 --- a/Resources/Prototypes/Hydroponics/seeds.yml +++ b/Resources/Prototypes/Hydroponics/seeds.yml @@ -1520,6 +1520,8 @@ packetPrototype: CottonSeeds productPrototypes: - CottonBol + mutationPrototypes: + - pyrotton lifespan: 25 maturation: 8 production: 3 @@ -1534,3 +1536,29 @@ Max: 10 PotencyDivisor: 20 +- type: seed + id: pyrotton + name: seeds-pyrotton-name + noun: seeds-noun-seeds + displayName: seeds-pyrotton-display-name + plantRsi: Objects/Specific/Hydroponics/pyrotton.rsi + packetPrototype: PyrottonSeeds + productPrototypes: + - PyrottonBol + lifespan: 25 + maturation: 8 + production: 3 + yield: 2 + potency: 5 + idealLight: 8 + growthStages: 3 + waterConsumption: 0.80 + chemicals: + Fiber: + Min: 5 + Max: 10 + PotencyDivisor: 20 + Phlogiston: + Min: 4 + Max: 8 + PotencyDivisor: 30 diff --git a/Resources/Prototypes/Stacks/Materials/materials.yml b/Resources/Prototypes/Stacks/Materials/materials.yml index d20bb2f347..cc963dde59 100644 --- a/Resources/Prototypes/Stacks/Materials/materials.yml +++ b/Resources/Prototypes/Stacks/Materials/materials.yml @@ -54,6 +54,14 @@ maxCount: 30 itemSize: 1 +- type: stack + id: Pyrotton + name: pyrotton + icon: { sprite: /Textures/Objects/Materials/materials.rsi, state: pyrotton } + spawn: MaterialPyrotton1 + maxCount: 30 + itemSize: 1 + - type: stack id: Bananium name: bananium @@ -92,4 +100,4 @@ icon: { sprite: /Textures/Objects/Misc/reagent_fillings.rsi, state: powderpile } spawn: MaterialGunpowder maxCount: 60 - itemSize: 1 \ No newline at end of file + itemSize: 1 diff --git a/Resources/Textures/Objects/Materials/materials.rsi/meta.json b/Resources/Textures/Objects/Materials/materials.rsi/meta.json index f0307208e9..78f497c0cd 100644 --- a/Resources/Textures/Objects/Materials/materials.rsi/meta.json +++ b/Resources/Textures/Objects/Materials/materials.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/c6e3401f2e7e1e55c57060cdf956a98ef1fefc24 , bear pelt remade by Alekshhh, wood sprite modified by MisterMecky, wood_2 and wood_3 made by MisterMecky based on wood sprite, cardboard sprites made by MisterMecky, bananium, bananium_1 and peel made by brainfood1183 (github) for ss14", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/c6e3401f2e7e1e55c57060cdf956a98ef1fefc24 , bear pelt remade by Alekshhh, wood sprite modified by MisterMecky, wood_2 and wood_3 made by MisterMecky based on wood sprite, cardboard sprites made by MisterMecky, bananium, bananium_1 and peel made by brainfood1183 (github) for ss14. Pyrotton sprites are drawn by Ubaser, using the cotton material sprites as a base.", "size": { "x": 32, "y": 32 @@ -66,6 +66,15 @@ { "name": "cotton_3" }, + { + "name": "pyrotton" + }, + { + "name": "pyrotton_2" + }, + { + "name": "pyrotton_3" + }, { "name": "diamond" }, diff --git a/Resources/Textures/Objects/Materials/materials.rsi/pyrotton.png b/Resources/Textures/Objects/Materials/materials.rsi/pyrotton.png new file mode 100644 index 0000000000000000000000000000000000000000..daa6701c39d5b74c3d003e2604a184e0f6c35b1b GIT binary patch literal 1311 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}e5nzhX}-P; zT0k}j5QD&_;K@Lev%n*=7^q+l2s5%z3BJp~z?_vC5>XQ2>tmIipR1RclAn~SSCLx) z)@4&+1!U%?mLw`v zE(HYzo1&C7s~{IQsCFRFRw<*Tq`*pFzr4I$uiRKKzbIYb(9+UU-@r)U$VeBcLbtdw zuOzWTH?LS3VhGF}m(=3qqRfJl%=|nBkhzIT`K2YcN=hJ$-~i&zlw`O)1*JtfU|Uj> z^;2_Fb5rw5iuDck4E3?;E6GelxG=968XUlY(Fe%@wHaX5=2=jZYyu1^*9xF}p#B3o zG#PAfaY>3kk^+4r0|N_P10!7{OMSTifX=r`NwzA8(5=(PRl3&iXbBVAsQmEX+Rc4*AS4AUy=_@PDPo?o_QsyMFmB`qy@Im2x=W} z73gLm><-P#EU|+bfF_Kj3n^->9E(cI^NX@Wz|jB?L!2t0ra;0IDRn}UJ~-@wY2S{^ zMjxJ!?6_)GgZh9O*2L4rF(iWXZRl;@CIgYZ65mH^)u8wTA50-haW97b_EAjDo zP-^>8fy=CV`CnPh%!{HjJ+_ss!ZV#YvzZvY&sho{2rOCcwm4gx>C+PJMUSQg6{QFT z_8!+dQfPCMKa53X4%^lAUOSgJ%}LW=omf$J!KL@(mM1Wx_^9#(>-thfAEJgfFPPIBWY^>x`jT zw3s^6GR1E0c-B7$!xf^vFMKmnXWHAgM)ZK`*2(|Z^dEP>^K*I0X_jBXa*LlzOgl9} uCH{Z`&&pM+3^V`8t#1fFp#4FftA;UUcg8kp$XQ2>tmIipR1RclAn~SSCLx) z)@4&+1!U%?mLw`v zE(HYzo1&C7s~{IQsCFRFRw<*Tq`*pFzr4I$uiRKKzbIYb(9+UU-@r)U$VeBcLbtdw zuOzWTH?LS3VhGF}m(=3qqRfJl%=|nBkhzIT`K2YcN=hJ$-~i&zlw`O)1*JtfU|Uj> z^;2_Fb5rw5iuDck4E3?;E6GelxG=968XUlY(Fe%@wHaX5=2=jZYyu1^*9xF}p#B3o zG#PAfaY>3kk^+4r0|N_P10!7{OMSTifX=r`NwzA8(5=(PRl3&iXbBVAsQmEX+Rc4*AS4AUy=_@PDPo?o_QsyMFmB`qy@Im2x=W} z73gLm><-P#EU|+bfF_Kj3n^->9E(cI^NX@Wz|jB?L!2t0ra;0IDRn}UJ~-@wY2S{^ zMjxJ!?6_)GgZh9Ow%yakF(iWXZK${3VFLl#fbSZj=?{2L2A-1CirDbJNqWm8o&t8g z2|5;x=?=XS$`ALMe{}IXaXe1xW>9kavzzbteq14VQaM}!1UE9h`}*R?>|5KW%symX zW;%UFm-ffG=WCKa|4rUsuW4R7?dZDPi6-+K+XPm-_@AqI)FI|D>D3ptBo#C1hd;MR zEBejp-2CN^jH(0wZqb$V%Y$SUl3w>ai=Nt4vZjrr&uLEOBbFZ$f`Lp^&Ux5w&v__O z8(`ni^VokM_j=pkYO|PEaa(Pfbor^Ap68l#6PpFB!oKTwutz*QlqUOmO<2Qh&lP;f z^(v)KYCP%IuM>FQsy9)1uU5l?WtmojHH?aPvz_aV8xs4POw#)w-Bi$25cEL0h6g<(;RipUXO@geCy?=H4d& literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Materials/materials.rsi/pyrotton_3.png b/Resources/Textures/Objects/Materials/materials.rsi/pyrotton_3.png new file mode 100644 index 0000000000000000000000000000000000000000..072ba2c6d1412d74431f1bf893c0800861faaf2c GIT binary patch literal 1450 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}e5nzhX}-P; zT0k}j5QD&_;K@Lev%n*=7^q+l2s5%z3BJp~z?_vC5>XQ2>tmIipR1RclAn~SSCLx) z)@4&+1!U%?mLw`v zE(HYzo1&C7s~{IQsCFRFRw<*Tq`*pFzr4I$uiRKKzbIYb(9+UU-@r)U$VeBcLbtdw zuOzWTH?LS3VhGF}m(=3qqRfJl%=|nBkhzIT`K2YcN=hJ$-~i&zlw`O)1*JtfU|Uj> z^;2_Fb5rw5iuDck4E3?;E6GelxG=968XUlY(Fe%@wHaX5=2=jZYyu1^*9xF}p#B3o zG#PAfaY>3kk^+4r0|N_P10!7{OMSTifX=r`NwzA8(5=(PRl3&iXbBVAsQmEX+Rc4*AS4AUy=_@PDPo?o_QsyMFmB`qy@Im2x=W} z73gLm><-P#EU|+bfF_Kj3n^->9E(cI^NX@Wz|jB?L!2t0ra;0IDRn}UJ~-@wY2S{^ zMjxJ!?6_)GgZh9OcE6{KV@L$&+fYZp!v+E|0_9V>%s;e!(R|9w!FR{<1GCmW2UWXC zG8K&Z4!u=wht90o8|d-&h@)-62e018cfX!{Q^Blsw2R5LanS)M);q5^Kh`hH(Goko z{JoB7$4}88RxWl0Kc4Ngw-@ccYIJ|+UY)4#C)fmo7qKs|UzjSaaH49ru%SRSZ^8e! z_aCIso4C0k>#Wj(qw8E|E$>|;@0cWd%CU9VI@zlNj+#Ft)8{GJx4Vcjwi;h((A6&K zvCMeK;AY)b{r%2n`9&d%$`11R7L`?Y>v67`tIVeKCSrGeWBr8FHwq$-TWsd~V8FQb zaN+bdZU#a>pQuTEX1b_Zkak`uA?WtDc`W7(Dc`Louv;Zu`}p8)$gJ7TH?;#AK0G*J z%0J=9CF?p*Ije0ovMzZm*w%B11wTI2{%Kx_(>^o5Zob`W9tN!2Y>R(97G)JuTpPb> z-GNQVnQtaMD6wN$q%HK-`01&g3neA@TUY5RO^`XkaOj<9R)$x~Bku?k=CFu##hScp zhRL=+K2&`uJ@W2e*56JB{@3viYeGXkua}0MpRB;R%IIQc{evs|D$nj+{=dn;clw&= lWw*DdY+wNe`Tr#c_+3oa{xO)QU<4{BJzf1=);T3K0RWbz_XPj| literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Specific/Hydroponics/pyrotton.rsi/dead.png b/Resources/Textures/Objects/Specific/Hydroponics/pyrotton.rsi/dead.png new file mode 100644 index 0000000000000000000000000000000000000000..39d4b40f4c26a995c28769b0621a62449b002553 GIT binary patch literal 1267 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}e5nzhX}-P; zT0k}j5QD&_;K@Lev%n*=7^q+l2s5%z3BJp~z?_vC5>XQ2>tmIipR1RclAn~SSCLx) z)@4&+1!U%?mLw`v zE(HYzo1&C7s~{IQsCFRFRw<*Tq`*pFzr4I$uiRKKzbIYb(9+UU-@r)U$VeBcLbtdw zuOzWTH?LS3VhGF}m(=3qqRfJl%=|nBkhzIT`K2YcN=hJ$-~i&zlw`O)1*JtfU|Uj> z^;2_Fb5rw5iuDck4E3?;E6GelxG=968XUlY(Fe%@wHaX5=2=jZYyu1^*9xF}p#B3o zG#PAfaY>3kk^+4r0|N_P10!7{OMSTifX=r`NwzA8(5=(PRl3&iXbBVAsQmEX+Rc4*AS4AUy=_@PDPo?o_QsyMFmB`qy@Im2x=W} z73gLm><-P#EU|+bfF_Kj3n^->9E(cI^NX@Wz|jB?L!2t0ra;0IDRn}UJ~-@wY2S{^ zMjxJ!?6_)GgZh9Omc!G*wiASa=_x7$tiA~0jf3ACNrOzs{>PPbjzA20Kd@QZxzcXQ2>tmIipR1RclAn~SSCLx) z)@4&+1!U%?mLw`v zE(HYzo1&C7s~{IQsCFRFRw<*Tq`*pFzr4I$uiRKKzbIYb(9+UU-@r)U$VeBcLbtdw zuOzWTH?LS3VhGF}m(=3qqRfJl%=|nBkhzIT`K2YcN=hJ$-~i&zlw`O)1*JtfU|Uj> z^;2_Fb5rw5iuDck4E3?;E6GelxG=968XUlY(Fe%@wHaX5=2=jZYyu1^*9xF}p#B3o zG#PAfaY>3kk^+4r0|N_P10!7{OMSTifX=r`NwzA8(5=(PRl3&iXbBVAsQmEX+Rc4*AS4AUy=_@PDPo?o_QsyMFmB`qy@Im2x=W} z73gLm><-P#EU|+bfF_Kj3n^->9E(cI^NX@Wz|jB?L!2t0ra;0IDRn}UJ~-@wY2S{^ zMjxJ!?6_)GgZh9O_P?i#V@L$&+bO354?FO*T`v)kQ)N({A+&%+PPBkSgu$GPf$suC z3zvk3;xgtop@t>QXZ~mErf>c@_2H&j8<+n5`YXIh$Z4WcBLvpZbND*_@9pKc&9R6p=9`usevWg+lFl|w(%2B)x@+C- zeKUl9$PLudHv{{pfJsSF4>9}%fpXvYDt{(> z@?*oj4;#!?G}gJ8UwX0p`SHR(ZvrnR&&^#BXTqtx_PO#p^<1yFTP!WTwHZD%{CoU5 zEa`sJpKWUU1YK@*+*!Snd-a8L_van&n~~>t$g5aJTbSXCW`gpBqBC#5Ueq}A?DM_n z&u0kUw=COzx8+yj&gZ9CJX9~Xwz2>IeeB-yIef!PBo-*Bw`}vAk}l`rrJF^uzDcyU$hKE}YQ7?sR1G yarvzW*UepWe9`3_B}$n-8&9*G0>V$6f0%NQu&nlI+vx);XFXm0T-G@yGywp$F(PmP literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Specific/Hydroponics/pyrotton.rsi/meta.json b/Resources/Textures/Objects/Specific/Hydroponics/pyrotton.rsi/meta.json new file mode 100644 index 0000000000..4a6e3c94fc --- /dev/null +++ b/Resources/Textures/Objects/Specific/Hydroponics/pyrotton.rsi/meta.json @@ -0,0 +1,32 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Drawn by Ubaser, using the cotton sprites as a base.", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "dead" + }, + { + "name": "harvest" + }, + { + "name": "produce" + }, + { + "name": "seed" + }, + { + "name": "stage-1" + }, + { + "name": "stage-2" + }, + { + "name": "stage-3" + } + ] +} diff --git a/Resources/Textures/Objects/Specific/Hydroponics/pyrotton.rsi/produce.png b/Resources/Textures/Objects/Specific/Hydroponics/pyrotton.rsi/produce.png new file mode 100644 index 0000000000000000000000000000000000000000..72a98653c8fcc301a849c786d6ce0ad7618fb909 GIT binary patch literal 1456 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}e5nzhX}-P; zT0k}j5QD&_;K@Lev%n*=7^q+l2s5%z3BJp~z?_vC5>XQ2>tmIipR1RclAn~SSCLx) z)@4&+1!U%?mLw`v zE(HYzo1&C7s~{IQsCFRFRw<*Tq`*pFzr4I$uiRKKzbIYb(9+UU-@r)U$VeBcLbtdw zuOzWTH?LS3VhGF}m(=3qqRfJl%=|nBkhzIT`K2YcN=hJ$-~i&zlw`O)1*JtfU|Uj> z^;2_Fb5rw5iuDck4E3?;E6GelxG=968XUlY(Fe%@wHaX5=2=jZYyu1^*9xF}p#B3o zG#PAfaY>3kk^+4r0|N_P10!7{OMSTifX=r`NwzA8(5=(PRl3&iXbBVAsQmEX+Rc4*AS4AUy=_@PDPo?o_QsyMFmB`qy@Im2x=W} z73gLm><-P#EU|+bfF_Kj3n^->9E(cI^NX@Wz|jB?L!2t0ra;0IDRn}UJ~-@wY2S{^ zMjxJ!?6_)GgZh9O_Nb?eV@L$&+t7=?hYbWu1-Q2)v6XqaYv^2%4RC+Kt{jqcz+G)Y zQd0_hn!`)Bmg@BRrF}W-ih@j<)1-c%+qe7syz>cXtio8uf)=bkCtDYMSu~hA>G{qN zdvE_VSY{#P{(NtzYR}Igp4yLQVy17TSr3RSPTTYD`P4@y@6Uz)@v%R4b1}n@2$3L# zQ=8r-e7+I%F*xH8&CQnFVzA)qZ1eOQV=RNt$ zX03g&vi}@^yLET5+#DI7Gut`s7q_2@3$uK2!>jT5_40ckue*pji25oE-n3lFuqdD< z@^D6Ovg%FCgy49`AjT_4HYo7?@4TC5wrp?QTee#HZ@>L+*D)v9?VTE%B09mNLEz-k z<>}MxD_FPezM*|#>Yb>03+@+v+T3gUw;*(LT%-RwvHa=YjoAkTejc{l*gm;7X?yeg z1b&v~%5Dr#QmR$UWB-aQ{-67e`KiXQ2>tmIipR1RclAn~SSCLx) z)@4&+1!U%?mLw`v zE(HYzo1&C7s~{IQsCFRFRw<*Tq`*pFzr4I$uiRKKzbIYb(9+UU-@r)U$VeBcLbtdw zuOzWTH?LS3VhGF}m(=3qqRfJl%=|nBkhzIT`K2YcN=hJ$-~i&zlw`O)1*JtfU|Uj> z^;2_Fb5rw5iuDck4E3?;E6GelxG=968XUlY(Fe%@wHaX5=2=jZYyu1^*9xF}p#B3o zG#PAfaY>3kk^+4r0|N_P10!7{OMSTifX=r`NwzA8(5=(PRl3&iXbBVAsQmEX+Rc4*AS4AUy=_@PDPo?o_QsyMFmB`qy@Im2x=W} z73gLm><-P#EU|+bfF_Kj3n^->9E(cI^NX@Wz|jB?L!2t0ra;0IDRn}UJ~-@wY2S{^ zMjxJ!?6_)GgZh9Ow$9VVF(iWXZKz?;VFLjh<1IX$OZOaTJUV5fyF;O>?ymK3$5T$rG}|{PF-Cmztt+-*fA8}BdL54<$35G; zZWWj93pBWH7u_%3Ci~#^@#)ORpEr2ls@D$W zg-P{ivKYlSGT-={R{Z+czc0_;reCm(RB8BqlATw{!A|UUu6fwMjcP&%R`1+iBe$ck z$E;8`JV@%1zT$uJKWsTZ?z`{Kd$mg}u{$m)sN=!MkZF_r6I*sZa41l)_>j(5!)S1+ V&LO>Fo;;|S^K|udS?83{1ONtY)y@C_ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Specific/Hydroponics/pyrotton.rsi/stage-1.png b/Resources/Textures/Objects/Specific/Hydroponics/pyrotton.rsi/stage-1.png new file mode 100644 index 0000000000000000000000000000000000000000..c86f85f0d252529cabfb4387fd7b0b981ca18531 GIT binary patch literal 1132 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}e5nzhX}-P; zT0k}j5QD&_;K@Lev%n*=7^q+l2s5%z3BJp~z?_vC5>XQ2>tmIipR1RclAn~SSCLx) z)@4&+1!U%?mLw`v zE(HYzo1&C7s~{IQsCFRFRw<*Tq`*pFzr4I$uiRKKzbIYb(9+UU-@r)U$VeBcLbtdw zuOzWTH?LS3VhGF}m(=3qqRfJl%=|nBkhzIT`K2YcN=hJ$-~i&zlw`O)1*JtfU|Uj> z^;2_Fb5rw5iuDck4E3?;E6GelxG=968XUlY(Fe%@wHaX5=2=jZYyu1^*9xF}p#B3o zG#PAfaY>3kk^+4r0|N_P10!7{OMSTifX=r`NwzA8(5=(PRl3&iXbBVAsQmEX+Rc4*AS4AUy=_@PDPo?o_QsyMFmB`qy@Im2x=W} z73gLm><-P#EU|+bfF_Kj3n^->9E(cI^NX@Wz|jB?L!2t0ra;0IDRn}UJ~-@wY2S{^ zMjxJ!?6_)GgZhA(tI^ZNF(iWX?SzY*4F)`{i<@`2hpk}V(WJa{nzluQtYc-XgQo5e z?U=ftN#0WDdJZtK88k5RBrq^b95}$vobBb$U;O>~t+ij=dY&EWc>8unwd>U+hr{LP zQafLLTzIeR=?2f8sjr%w1g{_a(7=#fVZC>XlKcL1rmLGdK!)r$_`tO0i01zpr_+Ju P0Rw}ltDnm{r-UW|tvz6h literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Specific/Hydroponics/pyrotton.rsi/stage-2.png b/Resources/Textures/Objects/Specific/Hydroponics/pyrotton.rsi/stage-2.png new file mode 100644 index 0000000000000000000000000000000000000000..7bc634ce83a84fbbcd0d05fa843585a2095f086b GIT binary patch literal 1219 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}e5nzhX}-P; zT0k}j5QD&_;K@Lev%n*=7^q+l2s5%z3BJp~z?_vC5>XQ2>tmIipR1RclAn~SSCLx) z)@4&+1!U%?mLw`v zE(HYzo1&C7s~{IQsCFRFRw<*Tq`*pFzr4I$uiRKKzbIYb(9+UU-@r)U$VeBcLbtdw zuOzWTH?LS3VhGF}m(=3qqRfJl%=|nBkhzIT`K2YcN=hJ$-~i&zlw`O)1*JtfU|Uj> z^;2_Fb5rw5iuDck4E3?;E6GelxG=968XUlY(Fe%@wHaX5=2=jZYyu1^*9xF}p#B3o zG#PAfaY>3kk^+4r0|N_P10!7{OMSTifX=r`NwzA8(5=(PRl3&iXbBVAsQmEX+Rc4*AS4AUy=_@PDPo?o_QsyMFmB`qy@Im2x=W} z73gLm><-P#EU|+bfF_Kj3n^->9E(cI^NX@Wz|jB?L!2t0ra;0IDRn}UJ~-@wY2S{^ zMjxJ!?6_)GgZhA(>xQR`V@L$&+ld=_nGAVcYjX;==s3<6?VF}LqeC@gr|6|kEV|}Q zFQR`<+9;zZbXK&F<=DsX+dm7OoXj%GLCAy2Q-L#Q;(^af`Mal|&wYFU{_bgx=Pv|x z>2c}Wor#`z_xrsQ&kdq>Z|0u6%u~EaEJJ9+qo~&p*zfgy&F19UX#3oK;$MqbSFXQ2>tmIipR1RclAn~SSCLx) z)@4&+1!U%?mLw`v zE(HYzo1&C7s~{IQsCFRFRw<*Tq`*pFzr4I$uiRKKzbIYb(9+UU-@r)U$VeBcLbtdw zuOzWTH?LS3VhGF}m(=3qqRfJl%=|nBkhzIT`K2YcN=hJ$-~i&zlw`O)1*JtfU|Uj> z^;2_Fb5rw5iuDck4E3?;E6GelxG=968XUlY(Fe%@wHaX5=2=jZYyu1^*9xF}p#B3o zG#PAfaY>3kk^+4r0|N_P10!7{OMSTifX=r`NwzA8(5=(PRl3&iXbBVAsQmEX+Rc4*AS4AUy=_@PDPo?o_QsyMFmB`qy@Im2x=W} z73gLm><-P#EU|+bfF_Kj3n^->9E(cI^NX@Wz|jB?L!2t0ra;0IDRn}UJ~-@wY2S{^ zMjxJ!?6_)GgZh9OR>jlBF(iWXZO}&ELk>J85{%mxu)T~_^l=b0J7J)~YU{(Ijj^Xu_P z*IW9-rcj$&Bpne@bVSU3O+~FIZRjWN~+^XHW5iWC>|?^RfwB&#FIAOpcu9 zS@ST*>aD4u|4jR)hQqCQvJT}O(CSl*$k8}9=k(WKd2=lOi?218zQFQk^{zfe$HIo1 z^zOr*lJ;GD7&bGCwKqJn*c7qpq;`njxgN@xNAikPmg literal 0 HcmV?d00001 From f89133b3ad76d59140b19f082e18f1a5c285a61e Mon Sep 17 00:00:00 2001 From: PJBot Date: Sun, 28 Apr 2024 11:08:42 +0000 Subject: [PATCH 067/110] Automatic changelog update --- Resources/Changelog/Changelog.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 994ff32851..de917dac2e 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: EdenTheLiznerd - changes: - - message: Deathnettles no longer penetrate hardsuit armor - type: Tweak - id: 5982 - time: '2024-02-21T06:16:25.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/25286 - author: Tayrtahn changes: - message: Added fill level visuals to all the drinks. Cheers! @@ -3868,3 +3861,10 @@ id: 6481 time: '2024-04-28T09:28:16.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/27435 +- author: Ubaser + changes: + - message: Pyrotton can now be mutated from cotton. + type: Add + id: 6482 + time: '2024-04-28T11:07:37.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/27200 From 2135cbdb23ccd73236a008512ae6d788c88f206b Mon Sep 17 00:00:00 2001 From: beck-thompson <107373427+beck-thompson@users.noreply.github.com> Date: Sun, 28 Apr 2024 17:26:44 -0700 Subject: [PATCH 068/110] Fixed some mop .ftl capitalization (#27447) --- .../en-US/fluids/components/absorbent-component.ftl | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Resources/Locale/en-US/fluids/components/absorbent-component.ftl b/Resources/Locale/en-US/fluids/components/absorbent-component.ftl index 670ac0a36a..8a4d37023f 100644 --- a/Resources/Locale/en-US/fluids/components/absorbent-component.ftl +++ b/Resources/Locale/en-US/fluids/components/absorbent-component.ftl @@ -1,8 +1,8 @@ mopping-system-target-container-empty = { CAPITALIZE(THE($target)) } is empty! mopping-system-target-container-empty-water = { CAPITALIZE(THE($target)) } has no water! -mopping-system-puddle-space = { THE($used) } is full of water -mopping-system-puddle-evaporate = { THE($target) } is evaporating -mopping-system-no-water = { THE($used) } has no water! +mopping-system-puddle-space = { CAPITALIZE(THE($used)) } is full of water +mopping-system-puddle-evaporate = { CAPITALIZE(THE($target)) } is evaporating +mopping-system-no-water = { CAPITALIZE(THE($used)) } has no water! -mopping-system-full = { THE($used) } is full! -mopping-system-empty = { THE($used) } is empty! +mopping-system-full = { CAPITALIZE(THE($used)) } is full! +mopping-system-empty = { CAPITALIZE(THE($used)) } is empty! From 4416a21dd529768472de7f0f76a78a5b39f39b24 Mon Sep 17 00:00:00 2001 From: Plykiya <58439124+Plykiya@users.noreply.github.com> Date: Sun, 28 Apr 2024 19:44:54 -0700 Subject: [PATCH 069/110] Make Smile the Slime grabbable like geras (#27458) Make smile grabbable like geras Co-authored-by: Plykiya --- Resources/Prototypes/Entities/Mobs/NPCs/pets.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/pets.yml b/Resources/Prototypes/Entities/Mobs/NPCs/pets.yml index f6cf36196f..dab2860e28 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/pets.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/pets.yml @@ -745,6 +745,9 @@ types: Blunt: 1 Caustic: 1 + - type: MultiHandedItem + - type: Item + size: Huge - type: SentienceTarget flavorKind: station-event-random-sentience-flavor-slime - type: MobPrice From 757d59cbdd4f8c8e659b617caefbbbdbff667ee3 Mon Sep 17 00:00:00 2001 From: PJBot Date: Mon, 29 Apr 2024 02:46:00 +0000 Subject: [PATCH 070/110] Automatic changelog update --- Resources/Changelog/Changelog.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index de917dac2e..714b6175ed 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: Tayrtahn - changes: - - message: Added fill level visuals to all the drinks. Cheers! - type: Add - id: 5983 - time: '2024-02-21T06:17:56.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/25319 - author: Potato1234_x changes: - message: Happy Honk boxes can now hold normal sized items @@ -3868,3 +3861,10 @@ id: 6482 time: '2024-04-28T11:07:37.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/27200 +- author: Plykiya + changes: + - message: You can now pick up Smile and put them in your bag. + type: Add + id: 6483 + time: '2024-04-29T02:44:54.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/27458 From 405e020bfa1d5990b86a7dfa69d0f70711d54a0d Mon Sep 17 00:00:00 2001 From: Plykiya <58439124+Plykiya@users.noreply.github.com> Date: Sun, 28 Apr 2024 20:02:30 -0700 Subject: [PATCH 071/110] Fix doubled gas mask action message (#27463) Fix doubled message Co-authored-by: Plykiya --- Content.Shared/Clothing/EntitySystems/MaskSystem.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Content.Shared/Clothing/EntitySystems/MaskSystem.cs b/Content.Shared/Clothing/EntitySystems/MaskSystem.cs index d99777929f..2a4383279a 100644 --- a/Content.Shared/Clothing/EntitySystems/MaskSystem.cs +++ b/Content.Shared/Clothing/EntitySystems/MaskSystem.cs @@ -45,7 +45,7 @@ public sealed class MaskSystem : EntitySystem var dir = mask.IsToggled ? "down" : "up"; var msg = $"action-mask-pull-{dir}-popup-message"; - _popupSystem.PopupEntity(Loc.GetString(msg, ("mask", uid)), args.Performer, args.Performer); + _popupSystem.PopupClient(Loc.GetString(msg, ("mask", uid)), args.Performer, args.Performer); ToggleMaskComponents(uid, mask, args.Performer, mask.EquippedPrefix); } From cdd900cef65cda204c34a00d7309656e10bb2d09 Mon Sep 17 00:00:00 2001 From: beck-thompson <107373427+beck-thompson@users.noreply.github.com> Date: Sun, 28 Apr 2024 20:08:41 -0700 Subject: [PATCH 072/110] Infinate chem dupe fixed (Toilet, drain) + dirty water toilet fix (#27446) innital commit --- .../Fluids/EntitySystems/DrainSystem.cs | 28 +++++++++++-------- .../Entities/Structures/Furniture/toilet.yml | 5 +++- 2 files changed, 21 insertions(+), 12 deletions(-) diff --git a/Content.Server/Fluids/EntitySystems/DrainSystem.cs b/Content.Server/Fluids/EntitySystems/DrainSystem.cs index b8fa04b872..5fc406dca5 100644 --- a/Content.Server/Fluids/EntitySystems/DrainSystem.cs +++ b/Content.Server/Fluids/EntitySystems/DrainSystem.cs @@ -87,19 +87,25 @@ public sealed class DrainSystem : SharedDrainSystem // Try to transfer as much solution as possible to the drain - var transferSolution = _solutionContainerSystem.SplitSolution(containerSoln.Value, - FixedPoint2.Min(containerSolution.Volume, drainSolution.AvailableVolume)); + var amountToPutInDrain = drainSolution.AvailableVolume; + var amountToSpillOnGround = containerSolution.Volume - drainSolution.AvailableVolume; - _solutionContainerSystem.TryAddSolution(drain.Solution.Value, transferSolution); - - _audioSystem.PlayPvs(drain.ManualDrainSound, target); - _ambientSoundSystem.SetAmbience(target, true); - - // If drain is full, spill - - if (drainSolution.MaxVolume == drainSolution.Volume) + if (amountToPutInDrain > 0) { - _puddleSystem.TrySpillAt(Transform(target).Coordinates, containerSolution, out _); + var solutionToPutInDrain = _solutionContainerSystem.SplitSolution(containerSoln.Value, amountToPutInDrain); + _solutionContainerSystem.TryAddSolution(drain.Solution.Value, solutionToPutInDrain); + + _audioSystem.PlayPvs(drain.ManualDrainSound, target); + _ambientSoundSystem.SetAmbience(target, true); + } + + + // Spill the remainder. + + if (amountToSpillOnGround > 0) + { + var solutionToSpill = _solutionContainerSystem.SplitSolution(containerSoln.Value, amountToSpillOnGround); + _puddleSystem.TrySpillAt(Transform(target).Coordinates, solutionToSpill, out _); _popupSystem.PopupEntity( Loc.GetString("drain-component-empty-verb-target-is-full-message", ("object", target)), container); diff --git a/Resources/Prototypes/Entities/Structures/Furniture/toilet.yml b/Resources/Prototypes/Entities/Structures/Furniture/toilet.yml index 0824d21ae0..2556b9ddfd 100644 --- a/Resources/Prototypes/Entities/Structures/Furniture/toilet.yml +++ b/Resources/Prototypes/Entities/Structures/Furniture/toilet.yml @@ -104,7 +104,10 @@ components: - type: SolutionContainerManager solutions: - toilet: + drainBuffer: + maxVol: 100 + tank: + maxVol: 500 reagents: - ReagentId: Water Quantity: 180 From a1b12f95a50f146f4b787633252d597f9de9518e Mon Sep 17 00:00:00 2001 From: PJBot Date: Mon, 29 Apr 2024 03:09:47 +0000 Subject: [PATCH 073/110] Automatic changelog update --- Resources/Changelog/Changelog.yml | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 714b6175ed..a99c34b47b 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: Potato1234_x - changes: - - message: Happy Honk boxes can now hold normal sized items - type: Tweak - id: 5984 - time: '2024-02-21T06:21:45.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/25245 - author: Hanzdegloker changes: - message: Standardized amount of huds in vendors and added new diagnostics eyeapatch @@ -3868,3 +3861,12 @@ id: 6483 time: '2024-04-29T02:44:54.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/27458 +- author: Beck Thompson, CoffeePoweredPHD + changes: + - message: Fixed infinite reagent duplication glitch with toilets and drains. + type: Fix + - message: Dirty water toilets now function correctly as toilets. + type: Fix + id: 6484 + time: '2024-04-29T03:08:41.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/27446 From a466b35b275c48294cb465aa7c9ca50b7b4ea75f Mon Sep 17 00:00:00 2001 From: Leon Friedrich <60421075+ElectroJr@users.noreply.github.com> Date: Mon, 29 Apr 2024 15:22:11 +1200 Subject: [PATCH 074/110] Move UnpoweredFlashlight to shared (#27449) --- .../UnpoweredFlashlightSystem.cs | 113 ---------------- .../Light/Events/LightToggleEvent.cs | 12 -- Content.Server/PDA/PdaSystem.cs | 8 +- Content.Shared/Actions/ActionEvents.cs | 5 +- .../UnpoweredFlashlightComponent.cs | 3 +- .../UnpoweredFlashlightSystem.cs | 122 ++++++++++++++++++ Content.Shared/Light/LightToggleEvent.cs | 6 + 7 files changed, 137 insertions(+), 132 deletions(-) delete mode 100644 Content.Server/Light/EntitySystems/UnpoweredFlashlightSystem.cs delete mode 100644 Content.Server/Light/Events/LightToggleEvent.cs create mode 100644 Content.Shared/Light/EntitySystems/UnpoweredFlashlightSystem.cs create mode 100644 Content.Shared/Light/LightToggleEvent.cs diff --git a/Content.Server/Light/EntitySystems/UnpoweredFlashlightSystem.cs b/Content.Server/Light/EntitySystems/UnpoweredFlashlightSystem.cs deleted file mode 100644 index a1ed71ee4c..0000000000 --- a/Content.Server/Light/EntitySystems/UnpoweredFlashlightSystem.cs +++ /dev/null @@ -1,113 +0,0 @@ -using Content.Server.Light.Events; -using Content.Shared.Actions; -using Content.Shared.Decals; -using Content.Shared.Emag.Systems; -using Content.Shared.Light; -using Content.Shared.Light.Components; -using Content.Shared.Mind.Components; -using Content.Shared.Toggleable; -using Content.Shared.Verbs; -using Robust.Shared.Audio; -using Robust.Shared.Audio.Systems; -using Robust.Shared.Prototypes; -using Robust.Shared.Random; -using Robust.Shared.Utility; - -namespace Content.Server.Light.EntitySystems -{ - public sealed class UnpoweredFlashlightSystem : EntitySystem - { - [Dependency] private readonly IPrototypeManager _prototypeManager = default!; - [Dependency] private readonly IRobustRandom _random = default!; - [Dependency] private readonly SharedActionsSystem _actionsSystem = default!; - [Dependency] private readonly ActionContainerSystem _actionContainer = default!; - [Dependency] private readonly SharedAppearanceSystem _appearance = default!; - [Dependency] private readonly SharedAudioSystem _audioSystem = default!; - [Dependency] private readonly SharedPointLightSystem _light = default!; - - public override void Initialize() - { - base.Initialize(); - - SubscribeLocalEvent>(AddToggleLightVerbs); - SubscribeLocalEvent(OnGetActions); - SubscribeLocalEvent(OnToggleAction); - SubscribeLocalEvent(OnMindAdded); - SubscribeLocalEvent(OnGotEmagged); - SubscribeLocalEvent(OnMapInit); - } - - private void OnMapInit(EntityUid uid, UnpoweredFlashlightComponent component, MapInitEvent args) - { - _actionContainer.EnsureAction(uid, ref component.ToggleActionEntity, component.ToggleAction); - Dirty(uid, component); - } - - private void OnToggleAction(EntityUid uid, UnpoweredFlashlightComponent component, ToggleActionEvent args) - { - if (args.Handled) - return; - - ToggleLight(uid, component); - - args.Handled = true; - } - - private void OnGetActions(EntityUid uid, UnpoweredFlashlightComponent component, GetItemActionsEvent args) - { - args.AddAction(ref component.ToggleActionEntity, component.ToggleAction); - } - - private void AddToggleLightVerbs(EntityUid uid, UnpoweredFlashlightComponent component, GetVerbsEvent args) - { - if (!args.CanAccess || !args.CanInteract) - return; - - ActivationVerb verb = new() - { - Text = Loc.GetString("toggle-flashlight-verb-get-data-text"), - Icon = new SpriteSpecifier.Texture(new ("/Textures/Interface/VerbIcons/light.svg.192dpi.png")), - Act = () => ToggleLight(uid, component), - Priority = -1 // For things like PDA's, Open-UI and other verbs that should be higher priority. - }; - - args.Verbs.Add(verb); - } - - private void OnMindAdded(EntityUid uid, UnpoweredFlashlightComponent component, MindAddedMessage args) - { - _actionsSystem.AddAction(uid, ref component.ToggleActionEntity, component.ToggleAction); - } - - private void OnGotEmagged(EntityUid uid, UnpoweredFlashlightComponent component, ref GotEmaggedEvent args) - { - if (!_light.TryGetLight(uid, out var light)) - return; - - if (_prototypeManager.TryIndex(component.EmaggedColorsPrototype, out var possibleColors)) - { - var pick = _random.Pick(possibleColors.Colors.Values); - _light.SetColor(uid, pick, light); - } - - args.Repeatable = true; - args.Handled = true; - } - - public void ToggleLight(EntityUid uid, UnpoweredFlashlightComponent flashlight) - { - if (!_light.TryGetLight(uid, out var light)) - return; - - flashlight.LightOn = !flashlight.LightOn; - _light.SetEnabled(uid, flashlight.LightOn, light); - - _appearance.SetData(uid, UnpoweredFlashlightVisuals.LightOn, flashlight.LightOn); - - _audioSystem.PlayPvs(flashlight.ToggleSound, uid); - - RaiseLocalEvent(uid, new LightToggleEvent(flashlight.LightOn), true); - _actionsSystem.SetToggled(flashlight.ToggleActionEntity, flashlight.LightOn); - } - } -} diff --git a/Content.Server/Light/Events/LightToggleEvent.cs b/Content.Server/Light/Events/LightToggleEvent.cs deleted file mode 100644 index c7e82ce754..0000000000 --- a/Content.Server/Light/Events/LightToggleEvent.cs +++ /dev/null @@ -1,12 +0,0 @@ -namespace Content.Server.Light.Events -{ - public sealed class LightToggleEvent : EntityEventArgs - { - public bool IsOn; - - public LightToggleEvent(bool isOn) - { - IsOn = isOn; - } - } -} diff --git a/Content.Server/PDA/PdaSystem.cs b/Content.Server/PDA/PdaSystem.cs index 0b86fe29ed..d4934ee24e 100644 --- a/Content.Server/PDA/PdaSystem.cs +++ b/Content.Server/PDA/PdaSystem.cs @@ -4,7 +4,6 @@ using Content.Server.Chat.Managers; using Content.Server.DeviceNetwork.Components; using Content.Server.Instruments; using Content.Server.Light.EntitySystems; -using Content.Server.Light.Events; using Content.Server.PDA.Ringer; using Content.Server.Station.Systems; using Content.Server.Store.Components; @@ -12,7 +11,9 @@ using Content.Server.Store.Systems; using Content.Shared.Access.Components; using Content.Shared.CartridgeLoader; using Content.Shared.Chat; +using Content.Shared.Light; using Content.Shared.Light.Components; +using Content.Shared.Light.EntitySystems; using Content.Shared.PDA; using Robust.Server.Containers; using Robust.Server.GameObjects; @@ -207,8 +208,9 @@ namespace Content.Server.PDA if (!PdaUiKey.Key.Equals(msg.UiKey)) return; - if (TryComp(uid, out var flashlight)) - _unpoweredFlashlight.ToggleLight(uid, flashlight); + // TODO PREDICTION + // When moving this to shared, fill in the user field + _unpoweredFlashlight.TryToggleLight(uid, user: null); } private void OnUiMessage(EntityUid uid, PdaComponent pda, PdaShowRingtoneMessage msg) diff --git a/Content.Shared/Actions/ActionEvents.cs b/Content.Shared/Actions/ActionEvents.cs index 72a566b8c8..cddb70f74d 100644 --- a/Content.Shared/Actions/ActionEvents.cs +++ b/Content.Shared/Actions/ActionEvents.cs @@ -68,9 +68,10 @@ public sealed class GetItemActionsEvent : EntityEventArgs AddAction(ref actionId, prototypeId, Provider); } - public void AddAction(EntityUid actionId) + public void AddAction(EntityUid? actionId) { - Actions.Add(actionId); + if (actionId != null) + Actions.Add(actionId.Value); } } diff --git a/Content.Shared/Light/Components/UnpoweredFlashlightComponent.cs b/Content.Shared/Light/Components/UnpoweredFlashlightComponent.cs index 1b0701edd2..2953a01ced 100644 --- a/Content.Shared/Light/Components/UnpoweredFlashlightComponent.cs +++ b/Content.Shared/Light/Components/UnpoweredFlashlightComponent.cs @@ -2,7 +2,6 @@ using Content.Shared.Decals; using Robust.Shared.Audio; using Robust.Shared.GameStates; using Robust.Shared.Prototypes; -using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; namespace Content.Shared.Light.Components; @@ -17,7 +16,7 @@ public sealed partial class UnpoweredFlashlightComponent : Component public SoundSpecifier ToggleSound = new SoundPathSpecifier("/Audio/Items/flashlight_pda.ogg"); [DataField, AutoNetworkedField] - public bool LightOn = false; + public bool LightOn; [DataField] public EntProtoId ToggleAction = "ActionToggleLight"; diff --git a/Content.Shared/Light/EntitySystems/UnpoweredFlashlightSystem.cs b/Content.Shared/Light/EntitySystems/UnpoweredFlashlightSystem.cs new file mode 100644 index 0000000000..42e55bea55 --- /dev/null +++ b/Content.Shared/Light/EntitySystems/UnpoweredFlashlightSystem.cs @@ -0,0 +1,122 @@ +using Content.Shared.Actions; +using Content.Shared.Emag.Systems; +using Content.Shared.Light.Components; +using Content.Shared.Mind.Components; +using Content.Shared.Toggleable; +using Content.Shared.Verbs; +using Robust.Shared.Audio.Systems; +using Robust.Shared.Prototypes; +using Robust.Shared.Random; +using Robust.Shared.Utility; + +namespace Content.Shared.Light.EntitySystems; + +public sealed class UnpoweredFlashlightSystem : EntitySystem +{ + [Dependency] private readonly IPrototypeManager _prototypeManager = default!; + [Dependency] private readonly IRobustRandom _random = default!; + [Dependency] private readonly SharedActionsSystem _actionsSystem = default!; + [Dependency] private readonly ActionContainerSystem _actionContainer = default!; + [Dependency] private readonly SharedAppearanceSystem _appearance = default!; + [Dependency] private readonly SharedAudioSystem _audioSystem = default!; + [Dependency] private readonly SharedPointLightSystem _light = default!; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent>(AddToggleLightVerbs); + SubscribeLocalEvent(OnGetActions); + SubscribeLocalEvent(OnToggleAction); + SubscribeLocalEvent(OnMindAdded); + SubscribeLocalEvent(OnGotEmagged); + SubscribeLocalEvent(OnMapInit); + } + + private void OnMapInit(EntityUid uid, UnpoweredFlashlightComponent component, MapInitEvent args) + { + _actionContainer.EnsureAction(uid, ref component.ToggleActionEntity, component.ToggleAction); + Dirty(uid, component); + } + + private void OnToggleAction(EntityUid uid, UnpoweredFlashlightComponent component, ToggleActionEvent args) + { + if (args.Handled) + return; + + TryToggleLight((uid, component), args.Performer); + args.Handled = true; + } + + private void OnGetActions(EntityUid uid, UnpoweredFlashlightComponent component, GetItemActionsEvent args) + { + args.AddAction(component.ToggleActionEntity); + } + + private void AddToggleLightVerbs(EntityUid uid, UnpoweredFlashlightComponent component, GetVerbsEvent args) + { + if (!args.CanAccess || !args.CanInteract) + return; + + ActivationVerb verb = new() + { + Text = Loc.GetString("toggle-flashlight-verb-get-data-text"), + Icon = new SpriteSpecifier.Texture(new ("/Textures/Interface/VerbIcons/light.svg.192dpi.png")), + Act = () => TryToggleLight((uid, component), args.User), + Priority = -1 // For things like PDA's, Open-UI and other verbs that should be higher priority. + }; + + args.Verbs.Add(verb); + } + + private void OnMindAdded(EntityUid uid, UnpoweredFlashlightComponent component, MindAddedMessage args) + { + _actionsSystem.AddAction(uid, ref component.ToggleActionEntity, component.ToggleAction); + } + + private void OnGotEmagged(EntityUid uid, UnpoweredFlashlightComponent component, ref GotEmaggedEvent args) + { + if (!_light.TryGetLight(uid, out var light)) + return; + + if (_prototypeManager.TryIndex(component.EmaggedColorsPrototype, out var possibleColors)) + { + var pick = _random.Pick(possibleColors.Colors.Values); + _light.SetColor(uid, pick, light); + } + + args.Repeatable = true; + args.Handled = true; + } + + public void TryToggleLight(Entity ent, EntityUid? user = null, bool quiet = false) + { + if (!Resolve(ent, ref ent.Comp, false)) + return; + + SetLight(ent, !ent.Comp.LightOn, user, quiet); + } + + public void SetLight(Entity ent, bool value, EntityUid? user = null, bool quiet = false) + { + if (!Resolve(ent, ref ent.Comp)) + return; + + if (ent.Comp.LightOn == value) + return; + + if (!_light.TryGetLight(ent, out var light)) + return; + + Dirty(ent); + ent.Comp.LightOn = value; + _light.SetEnabled(ent, value, light); + _appearance.SetData(ent, UnpoweredFlashlightVisuals.LightOn, value); + + if (!quiet) + _audioSystem.PlayPredicted(ent.Comp.ToggleSound, ent, user); + + _actionsSystem.SetToggled(ent.Comp.ToggleActionEntity, value); + RaiseLocalEvent(ent, new LightToggleEvent(value)); + } +} diff --git a/Content.Shared/Light/LightToggleEvent.cs b/Content.Shared/Light/LightToggleEvent.cs new file mode 100644 index 0000000000..ac48c09419 --- /dev/null +++ b/Content.Shared/Light/LightToggleEvent.cs @@ -0,0 +1,6 @@ +namespace Content.Shared.Light; + +public sealed class LightToggleEvent(bool isOn) : EntityEventArgs +{ + public bool IsOn = isOn; +} From 1eb81427d38ffd063f823df01853f5e8a1584a0d Mon Sep 17 00:00:00 2001 From: Leon Friedrich <60421075+ElectroJr@users.noreply.github.com> Date: Mon, 29 Apr 2024 15:24:10 +1200 Subject: [PATCH 075/110] Stop admin verb pop-in (#27450) --- .../Administration/Systems/AdminVerbSystem.cs | 23 ++++++++++++++++ .../Verbs/UI/VerbMenuUIController.cs | 25 ++++++++++-------- Content.Client/Verbs/VerbSystem.cs | 16 ++++-------- Content.Shared/Verbs/SharedVerbSystem.cs | 26 ++++++++++++------- Content.Shared/Verbs/VerbEvents.cs | 10 ++++++- Resources/Locale/en-US/verbs/verb-system.ftl | 1 - 6 files changed, 68 insertions(+), 33 deletions(-) diff --git a/Content.Client/Administration/Systems/AdminVerbSystem.cs b/Content.Client/Administration/Systems/AdminVerbSystem.cs index e0f84bc4f0..dced59bbf2 100644 --- a/Content.Client/Administration/Systems/AdminVerbSystem.cs +++ b/Content.Client/Administration/Systems/AdminVerbSystem.cs @@ -1,3 +1,6 @@ +using Content.Shared.Administration; +using Content.Shared.Administration.Managers; +using Content.Shared.Mind.Components; using Content.Shared.Verbs; using Robust.Client.Console; using Robust.Shared.Utility; @@ -11,10 +14,12 @@ namespace Content.Client.Administration.Systems { [Dependency] private readonly IClientConGroupController _clientConGroupController = default!; [Dependency] private readonly IClientConsoleHost _clientConsoleHost = default!; + [Dependency] private readonly ISharedAdminManager _admin = default!; public override void Initialize() { SubscribeLocalEvent>(AddAdminVerbs); + } private void AddAdminVerbs(GetVerbsEvent args) @@ -33,6 +38,24 @@ namespace Content.Client.Administration.Systems }; args.Verbs.Add(verb); } + + if (!_admin.IsAdmin(args.User)) + return; + + if (_admin.HasAdminFlag(args.User, AdminFlags.Admin)) + args.ExtraCategories.Add(VerbCategory.Admin); + + if (_admin.HasAdminFlag(args.User, AdminFlags.Fun) && HasComp(args.Target)) + args.ExtraCategories.Add(VerbCategory.Antag); + + if (_admin.HasAdminFlag(args.User, AdminFlags.Debug)) + args.ExtraCategories.Add(VerbCategory.Debug); + + if (_admin.HasAdminFlag(args.User, AdminFlags.Fun)) + args.ExtraCategories.Add(VerbCategory.Smite); + + if (_admin.HasAdminFlag(args.User, AdminFlags.Admin)) + args.ExtraCategories.Add(VerbCategory.Tricks); } } } diff --git a/Content.Client/Verbs/UI/VerbMenuUIController.cs b/Content.Client/Verbs/UI/VerbMenuUIController.cs index 21eb6becd6..c3fc8c8356 100644 --- a/Content.Client/Verbs/UI/VerbMenuUIController.cs +++ b/Content.Client/Verbs/UI/VerbMenuUIController.cs @@ -31,6 +31,7 @@ namespace Content.Client.Verbs.UI public NetEntity CurrentTarget; public SortedSet CurrentVerbs = new(); + public List ExtraCategories = new(); /// /// Separate from , since we can open a verb menu as a submenu @@ -91,19 +92,12 @@ namespace Content.Client.Verbs.UI menu.MenuBody.DisposeAllChildren(); CurrentTarget = target; - CurrentVerbs = _verbSystem.GetVerbs(target, user, Verb.VerbTypes, force); + CurrentVerbs = _verbSystem.GetVerbs(target, user, Verb.VerbTypes, out ExtraCategories, force); OpenMenu = menu; // Fill in client-side verbs. FillVerbPopup(menu); - // Add indicator that some verbs may be missing. - // I long for the day when verbs will all be predicted and this becomes unnecessary. - if (!target.IsClientSide()) - { - _context.AddElement(menu, new ContextMenuElement(Loc.GetString("verb-system-waiting-on-server-text"))); - } - // if popup isn't null (ie we are opening out of an entity menu element), // assume that that is going to handle opening the submenu properly if (popup != null) @@ -128,11 +122,19 @@ namespace Content.Client.Verbs.UI var element = new VerbMenuElement(verb); _context.AddElement(popup, element); } - else if (listedCategories.Add(verb.Category.Text)) AddVerbCategory(verb.Category, popup); } + if (ExtraCategories != null) + { + foreach (var category in ExtraCategories) + { + if (listedCategories.Add(category.Text)) + AddVerbCategory(category, popup); + } + } + popup.InvalidateMeasure(); } @@ -153,10 +155,11 @@ namespace Content.Client.Verbs.UI } } - if (verbsInCategory.Count == 0) + if (verbsInCategory.Count == 0 && !ExtraCategories.Contains(category)) return; - var element = new VerbMenuElement(category, verbsInCategory[0].TextStyleClass); + var style = verbsInCategory.FirstOrDefault()?.TextStyleClass ?? Verb.DefaultTextStyleClass; + var element = new VerbMenuElement(category, style); _context.AddElement(popup, element); // Create the pop-up that appears when hovering over this element diff --git a/Content.Client/Verbs/VerbSystem.cs b/Content.Client/Verbs/VerbSystem.cs index 77f46a3fc9..49a3785eb2 100644 --- a/Content.Client/Verbs/VerbSystem.cs +++ b/Content.Client/Verbs/VerbSystem.cs @@ -165,29 +165,23 @@ namespace Content.Client.Verbs return true; } - /// - /// Asks the server to send back a list of server-side verbs, for the given verb type. - /// - public SortedSet GetVerbs(EntityUid target, EntityUid user, Type type, bool force = false) - { - return GetVerbs(GetNetEntity(target), user, new List() { type }, force); - } - /// /// Ask the server to send back a list of server-side verbs, and for now return an incomplete list of verbs /// (only those defined locally). /// - public SortedSet GetVerbs(NetEntity target, EntityUid user, List verbTypes, - bool force = false) + public SortedSet GetVerbs(NetEntity target, EntityUid user, List verbTypes, out List extraCategories, bool force = false) { if (!target.IsClientSide()) RaiseNetworkEvent(new RequestServerVerbsEvent(target, verbTypes, adminRequest: force)); // Some admin menu interactions will try get verbs for entities that have not yet been sent to the player. if (!TryGetEntity(target, out var local)) + { + extraCategories = new(); return new(); + } - return GetLocalVerbs(local.Value, user, verbTypes, force); + return GetLocalVerbs(local.Value, user, verbTypes, out extraCategories, force); } diff --git a/Content.Shared/Verbs/SharedVerbSystem.cs b/Content.Shared/Verbs/SharedVerbSystem.cs index 9dda910f3f..60714aea8f 100644 --- a/Content.Shared/Verbs/SharedVerbSystem.cs +++ b/Content.Shared/Verbs/SharedVerbSystem.cs @@ -55,13 +55,21 @@ namespace Content.Shared.Verbs return GetLocalVerbs(target, user, new List() { type }, force); } + /// + public SortedSet GetLocalVerbs(EntityUid target, EntityUid user, List types, bool force = false) + { + return GetLocalVerbs(target, user, types, out _, force); + } + /// /// Raises a number of events in order to get all verbs of the given type(s) defined in local systems. This /// does not request verbs from the server. /// - public SortedSet GetLocalVerbs(EntityUid target, EntityUid user, List types, bool force = false) + public SortedSet GetLocalVerbs(EntityUid target, EntityUid user, List types, + out List extraCategories, bool force = false) { SortedSet verbs = new(); + extraCategories = new(); // accessibility checks bool canAccess = false; @@ -108,7 +116,7 @@ namespace Content.Shared.Verbs // TODO: fix this garbage and use proper generics or reflection or something else, not this. if (types.Contains(typeof(InteractionVerb))) { - var verbEvent = new GetVerbsEvent(user, target, @using, hands, canInteract, canAccess); + var verbEvent = new GetVerbsEvent(user, target, @using, hands, canInteract, canAccess, extraCategories); RaiseLocalEvent(target, verbEvent, true); verbs.UnionWith(verbEvent.Verbs); } @@ -117,35 +125,35 @@ namespace Content.Shared.Verbs && @using != null && @using != target) { - var verbEvent = new GetVerbsEvent(user, target, @using, hands, canInteract, canAccess); + var verbEvent = new GetVerbsEvent(user, target, @using, hands, canInteract, canAccess, extraCategories); RaiseLocalEvent(@using.Value, verbEvent, true); // directed at used, not at target verbs.UnionWith(verbEvent.Verbs); } if (types.Contains(typeof(InnateVerb))) { - var verbEvent = new GetVerbsEvent(user, target, @using, hands, canInteract, canAccess); + var verbEvent = new GetVerbsEvent(user, target, @using, hands, canInteract, canAccess, extraCategories); RaiseLocalEvent(user, verbEvent, true); verbs.UnionWith(verbEvent.Verbs); } if (types.Contains(typeof(AlternativeVerb))) { - var verbEvent = new GetVerbsEvent(user, target, @using, hands, canInteract, canAccess); + var verbEvent = new GetVerbsEvent(user, target, @using, hands, canInteract, canAccess, extraCategories); RaiseLocalEvent(target, verbEvent, true); verbs.UnionWith(verbEvent.Verbs); } if (types.Contains(typeof(ActivationVerb))) { - var verbEvent = new GetVerbsEvent(user, target, @using, hands, canInteract, canAccess); + var verbEvent = new GetVerbsEvent(user, target, @using, hands, canInteract, canAccess, extraCategories); RaiseLocalEvent(target, verbEvent, true); verbs.UnionWith(verbEvent.Verbs); } if (types.Contains(typeof(ExamineVerb))) { - var verbEvent = new GetVerbsEvent(user, target, @using, hands, canInteract, canAccess); + var verbEvent = new GetVerbsEvent(user, target, @using, hands, canInteract, canAccess, extraCategories); RaiseLocalEvent(target, verbEvent, true); verbs.UnionWith(verbEvent.Verbs); } @@ -153,7 +161,7 @@ namespace Content.Shared.Verbs // generic verbs if (types.Contains(typeof(Verb))) { - var verbEvent = new GetVerbsEvent(user, target, @using, hands, canInteract, canAccess); + var verbEvent = new GetVerbsEvent(user, target, @using, hands, canInteract, canAccess, extraCategories); RaiseLocalEvent(target, verbEvent, true); verbs.UnionWith(verbEvent.Verbs); } @@ -161,7 +169,7 @@ namespace Content.Shared.Verbs if (types.Contains(typeof(EquipmentVerb))) { var access = canAccess || _interactionSystem.CanAccessEquipment(user, target); - var verbEvent = new GetVerbsEvent(user, target, @using, hands, canInteract, access); + var verbEvent = new GetVerbsEvent(user, target, @using, hands, canInteract, access, extraCategories); RaiseLocalEvent(target, verbEvent); verbs.UnionWith(verbEvent.Verbs); } diff --git a/Content.Shared/Verbs/VerbEvents.cs b/Content.Shared/Verbs/VerbEvents.cs index 9a09d5d7a1..6b3fd327c9 100644 --- a/Content.Shared/Verbs/VerbEvents.cs +++ b/Content.Shared/Verbs/VerbEvents.cs @@ -77,6 +77,13 @@ namespace Content.Shared.Verbs /// public readonly SortedSet Verbs = new(); + /// + /// Additional verb categories to show in the pop-up menu, even if there are no verbs currently associated + /// with that category. This is mainly useful to prevent verb menu pop-in. E.g., admins will get admin/debug + /// related verbs on entities, even though most of those verbs are all defined server-side. + /// + public readonly List ExtraCategories; + /// /// Can the user physically access the target? /// @@ -123,7 +130,7 @@ namespace Content.Shared.Verbs /// public readonly EntityUid? Using; - public GetVerbsEvent(EntityUid user, EntityUid target, EntityUid? @using, HandsComponent? hands, bool canInteract, bool canAccess) + public GetVerbsEvent(EntityUid user, EntityUid target, EntityUid? @using, HandsComponent? hands, bool canInteract, bool canAccess, List extraCategories) { User = user; Target = target; @@ -131,6 +138,7 @@ namespace Content.Shared.Verbs Hands = hands; CanAccess = canAccess; CanInteract = canInteract; + ExtraCategories = extraCategories; } } } diff --git a/Resources/Locale/en-US/verbs/verb-system.ftl b/Resources/Locale/en-US/verbs/verb-system.ftl index c626e41ce1..64104f796e 100644 --- a/Resources/Locale/en-US/verbs/verb-system.ftl +++ b/Resources/Locale/en-US/verbs/verb-system.ftl @@ -1,4 +1,3 @@ -verb-system-waiting-on-server-text = Waiting on Server... verb-system-null-server-response = Entity not in view. You should not see this. From 5118865d475ee329ea75e4e754d27597ac82edd6 Mon Sep 17 00:00:00 2001 From: Magnus Larsen Date: Mon, 29 Apr 2024 03:36:11 +0000 Subject: [PATCH 076/110] Allow more items to be recycled (#24435) Give more items a PhysicalComposition for recycling --- Resources/Prototypes/Entities/Clothing/Masks/masks.yml | 3 +++ Resources/Prototypes/Entities/Objects/Devices/geiger.yml | 3 +++ .../Prototypes/Entities/Objects/Misc/fire_extinguisher.yml | 3 +++ .../Entities/Objects/Specific/Janitorial/janitor.yml | 6 ++++++ .../Entities/Objects/Specific/Medical/medkits.yml | 3 +++ .../Prototypes/Entities/Objects/Specific/chemistry.yml | 6 ++++++ Resources/Prototypes/Entities/Objects/Tools/appraisal.yml | 3 +++ Resources/Prototypes/Entities/Objects/Tools/cable_coils.yml | 3 +++ Resources/Prototypes/Entities/Objects/Tools/gps.yml | 4 ++++ Resources/Prototypes/Entities/Objects/Tools/t-ray.yml | 4 ++++ .../Entities/Objects/Weapons/Melee/baseball_bat.yml | 3 +++ Resources/Prototypes/Entities/Objects/Weapons/security.yml | 4 ++++ Resources/Prototypes/Recipes/Lathes/janitorial.yml | 2 +- Resources/Prototypes/Recipes/Lathes/medical.yml | 2 +- 14 files changed, 47 insertions(+), 2 deletions(-) diff --git a/Resources/Prototypes/Entities/Clothing/Masks/masks.yml b/Resources/Prototypes/Entities/Clothing/Masks/masks.yml index 3a86464048..1f2ed875a6 100644 --- a/Resources/Prototypes/Entities/Clothing/Masks/masks.yml +++ b/Resources/Prototypes/Entities/Clothing/Masks/masks.yml @@ -281,6 +281,9 @@ size: Tiny - type: IdentityBlocker coverage: MOUTH + - type: PhysicalComposition + materialComposition: + Plastic: 25 - type: entity parent: ClothingMaskBase diff --git a/Resources/Prototypes/Entities/Objects/Devices/geiger.yml b/Resources/Prototypes/Entities/Objects/Devices/geiger.yml index de4178ce7f..f8ee24c5c6 100644 --- a/Resources/Prototypes/Entities/Objects/Devices/geiger.yml +++ b/Resources/Prototypes/Entities/Objects/Devices/geiger.yml @@ -31,4 +31,7 @@ Med: {state: geiger_on_med} High: {state: geiger_on_high} Extreme: {state: geiger_on_ext} + - type: PhysicalComposition + materialComposition: + Plastic: 100 diff --git a/Resources/Prototypes/Entities/Objects/Misc/fire_extinguisher.yml b/Resources/Prototypes/Entities/Objects/Misc/fire_extinguisher.yml index bae33f27f1..112ce99710 100644 --- a/Resources/Prototypes/Entities/Objects/Misc/fire_extinguisher.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/fire_extinguisher.yml @@ -54,6 +54,9 @@ enabled: True: { state: fire_extinguisher_closed } False: { state: fire_extinguisher_open } + - type: PhysicalComposition + materialComposition: + Steel: 100 - type: entity name: extinguisher spray diff --git a/Resources/Prototypes/Entities/Objects/Specific/Janitorial/janitor.yml b/Resources/Prototypes/Entities/Objects/Specific/Janitorial/janitor.yml index b192401c8b..868d012a87 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Janitorial/janitor.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Janitorial/janitor.yml @@ -30,6 +30,9 @@ maxVol: 100 - type: UseDelay delay: 1 + - type: PhysicalComposition + materialComposition: + Plastic: 50 - type: Tag tags: - Mop @@ -103,6 +106,9 @@ coefficients: Blunt: 0.95 Slash: 0.95 + - type: PhysicalComposition + materialComposition: + Plastic: 50 - type: Tag tags: - WetFloorSign diff --git a/Resources/Prototypes/Entities/Objects/Specific/Medical/medkits.yml b/Resources/Prototypes/Entities/Objects/Specific/Medical/medkits.yml index d7f2231ec9..82f91669cd 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Medical/medkits.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Medical/medkits.yml @@ -15,6 +15,9 @@ size: Large sprite: Objects/Specific/Medical/firstaidkits.rsi heldPrefix: firstaid + - type: PhysicalComposition + materialComposition: + Plastic: 150 - type: Tag tags: - Medkit diff --git a/Resources/Prototypes/Entities/Objects/Specific/chemistry.yml b/Resources/Prototypes/Entities/Objects/Specific/chemistry.yml index 4989320e6f..db81ebbe49 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/chemistry.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/chemistry.yml @@ -162,6 +162,9 @@ solution: beaker - type: StaticPrice price: 10 + - type: PhysicalComposition + materialComposition: + Glass: 50 - type: SolutionContainerVisuals maxFillLevels: 6 fillBaseName: beaker @@ -210,6 +213,9 @@ fillBaseName: beakerlarge inHandsMaxFillLevels: 4 inHandsFillBaseName: -fill- + - type: PhysicalComposition + materialComposition: + Glass: 100 - type: StaticPrice price: 20 diff --git a/Resources/Prototypes/Entities/Objects/Tools/appraisal.yml b/Resources/Prototypes/Entities/Objects/Tools/appraisal.yml index 4ec8d28857..3edf26ea78 100644 --- a/Resources/Prototypes/Entities/Objects/Tools/appraisal.yml +++ b/Resources/Prototypes/Entities/Objects/Tools/appraisal.yml @@ -17,6 +17,9 @@ quickEquip: false slots: - Belt + - type: PhysicalComposition + materialComposition: + Steel: 250 - type: Tag tags: - AppraisalTool diff --git a/Resources/Prototypes/Entities/Objects/Tools/cable_coils.yml b/Resources/Prototypes/Entities/Objects/Tools/cable_coils.yml index 8f9fb382f5..3f72fa10fa 100644 --- a/Resources/Prototypes/Entities/Objects/Tools/cable_coils.yml +++ b/Resources/Prototypes/Entities/Objects/Tools/cable_coils.yml @@ -26,6 +26,9 @@ price: 0 - type: StackPrice price: 1 + - type: PhysicalComposition + materialComposition: + Steel: 15 - type: entity id: CableHVStack diff --git a/Resources/Prototypes/Entities/Objects/Tools/gps.yml b/Resources/Prototypes/Entities/Objects/Tools/gps.yml index 8ae34573ff..becbb638f4 100644 --- a/Resources/Prototypes/Entities/Objects/Tools/gps.yml +++ b/Resources/Prototypes/Entities/Objects/Tools/gps.yml @@ -12,6 +12,10 @@ - type: Item sprite: Objects/Devices/gps.rsi - type: HandheldGPS + - type: PhysicalComposition + materialComposition: + Steel: 400 + Glass: 150 - type: Tag tags: - GPS diff --git a/Resources/Prototypes/Entities/Objects/Tools/t-ray.yml b/Resources/Prototypes/Entities/Objects/Tools/t-ray.yml index c467974b74..8872b98c18 100644 --- a/Resources/Prototypes/Entities/Objects/Tools/t-ray.yml +++ b/Resources/Prototypes/Entities/Objects/Tools/t-ray.yml @@ -19,5 +19,9 @@ base: On: { state: tray-on } Off: { state: tray-off } + - type: PhysicalComposition + materialComposition: + Steel: 400 + Glass: 150 - type: StaticPrice price: 60 diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Melee/baseball_bat.yml b/Resources/Prototypes/Entities/Objects/Weapons/Melee/baseball_bat.yml index 834d35a529..5347096bf1 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Melee/baseball_bat.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Melee/baseball_bat.yml @@ -36,6 +36,9 @@ node: bat - type: UseDelay delay: 1 + - type: PhysicalComposition + materialComposition: + Wood: 250 - type: Tag tags: - BaseballBat diff --git a/Resources/Prototypes/Entities/Objects/Weapons/security.yml b/Resources/Prototypes/Entities/Objects/Weapons/security.yml index 101314a1fb..74a42c0774 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/security.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/security.yml @@ -79,6 +79,10 @@ explosionType: Default intensitySlope: 1.5 maxIntensity: 200 + - type: PhysicalComposition + materialComposition: + Steel: 100 + Plastic: 100 - type: GuideHelp guides: - Security diff --git a/Resources/Prototypes/Recipes/Lathes/janitorial.yml b/Resources/Prototypes/Recipes/Lathes/janitorial.yml index a3b968a331..9ba7dfa188 100644 --- a/Resources/Prototypes/Recipes/Lathes/janitorial.yml +++ b/Resources/Prototypes/Recipes/Lathes/janitorial.yml @@ -18,7 +18,7 @@ result: Bucket completetime: 2 materials: - Steel: 100 + Plastic: 100 - type: latheRecipe id: WetFloorSign diff --git a/Resources/Prototypes/Recipes/Lathes/medical.yml b/Resources/Prototypes/Recipes/Lathes/medical.yml index 16cc6d2e86..bebfa4924a 100644 --- a/Resources/Prototypes/Recipes/Lathes/medical.yml +++ b/Resources/Prototypes/Recipes/Lathes/medical.yml @@ -106,7 +106,7 @@ result: ClothingMaskSterile completetime: 2 materials: - Plastic: 100 + Plastic: 50 - type: latheRecipe id: DiseaseSwab From 511d8a7267f1355abf0f9b122a5c2ab14760dc46 Mon Sep 17 00:00:00 2001 From: PJBot Date: Mon, 29 Apr 2024 03:37:17 +0000 Subject: [PATCH 077/110] Automatic changelog update --- Resources/Changelog/Changelog.yml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index a99c34b47b..e2f377460e 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,12 +1,4 @@ Entries: -- author: Hanzdegloker - changes: - - message: Standardized amount of huds in vendors and added new diagnostics eyeapatch - hud - type: Tweak - id: 5985 - time: '2024-02-21T06:22:30.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/25208 - author: DebugOk changes: - message: Drones are now completely removed instead of just being disabled @@ -3870,3 +3862,11 @@ id: 6484 time: '2024-04-29T03:08:41.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/27446 +- author: Nopey + changes: + - message: Many more items can now be recycled, including mops, medkits, and stun + batons. + type: Tweak + id: 6485 + time: '2024-04-29T03:36:11.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/24435 From 33e1752a49ebaad3552385ddcf4f299a1040289b Mon Sep 17 00:00:00 2001 From: Hanz <41141796+Hanzdegloker@users.noreply.github.com> Date: Sun, 28 Apr 2024 23:38:45 -0400 Subject: [PATCH 078/110] HoP and QM Stamps (#25604) the meat and potatoes yup --- Resources/Prototypes/Catalog/Fills/Lockers/heads.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Resources/Prototypes/Catalog/Fills/Lockers/heads.yml b/Resources/Prototypes/Catalog/Fills/Lockers/heads.yml index ae5917bc51..e38d57e6d8 100644 --- a/Resources/Prototypes/Catalog/Fills/Lockers/heads.yml +++ b/Resources/Prototypes/Catalog/Fills/Lockers/heads.yml @@ -15,6 +15,8 @@ prob: 0.50 - id: DoorRemoteCargo - id: RubberStampQm + - id: RubberStampDenied + - id: RubberStampApproved - id: ClothingHeadsetAltCargo - id: BoxEncryptionKeyCargo @@ -118,6 +120,8 @@ - id: DoorRemoteService - id: ClothingNeckGoldmedal - id: RubberStampHop + - id: RubberStampDenied + - id: RubberStampApproved - id: BoxEncryptionKeyPassenger - id: BoxEncryptionKeyService - id: ClothingBackpackIan From 2393ce1ceb60d6234f6182d9f88bed5c00593790 Mon Sep 17 00:00:00 2001 From: PJBot Date: Mon, 29 Apr 2024 03:39:51 +0000 Subject: [PATCH 079/110] Automatic changelog update --- Resources/Changelog/Changelog.yml | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index e2f377460e..f584912f58 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: DebugOk - changes: - - message: Drones are now completely removed instead of just being disabled - type: Remove - id: 5986 - time: '2024-02-21T06:23:05.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/25372 - author: Hanzdegloker changes: - message: Dept. Heads are now guaranteed to have their respective winter coats @@ -3870,3 +3863,11 @@ id: 6485 time: '2024-04-29T03:36:11.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/24435 +- author: Hanzdegloker + changes: + - message: '"Denied" and "Approved" stamps are now guaranteed to appear in the lockers + of the HoP and QM.' + type: Tweak + id: 6486 + time: '2024-04-29T03:38:45.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/25604 From 8f1a44fe05cd20838bcb6eb0f75b139764ef9fcf Mon Sep 17 00:00:00 2001 From: Leon Friedrich <60421075+ElectroJr@users.noreply.github.com> Date: Mon, 29 Apr 2024 16:00:41 +1200 Subject: [PATCH 080/110] Prevent SecretRule from picking invalid presets (#27456) * Prevent SecretRule from picking invalid presets * remove lonely semicolon --------- Co-authored-by: Nemanja <98561806+EmoGarbage404@users.noreply.github.com> --- .../GameTicking/GameTicker.RoundFlow.cs | 22 +++ .../GameTicking/Rules/SecretRuleSystem.cs | 150 +++++++++++++++--- 2 files changed, 150 insertions(+), 22 deletions(-) diff --git a/Content.Server/GameTicking/GameTicker.RoundFlow.cs b/Content.Server/GameTicking/GameTicker.RoundFlow.cs index 83d8390dd4..df597e69b2 100644 --- a/Content.Server/GameTicking/GameTicker.RoundFlow.cs +++ b/Content.Server/GameTicking/GameTicker.RoundFlow.cs @@ -173,6 +173,26 @@ namespace Content.Server.GameTicking return gridUids; } + public int ReadyPlayerCount() + { + var total = 0; + foreach (var (userId, status) in _playerGameStatuses) + { + if (LobbyEnabled && status == PlayerGameStatus.NotReadyToPlay) + continue; + + if (!_playerManager.TryGetSessionById(userId, out _)) + continue; + + if (_banManager.GetRoleBans(userId) == null) + continue; + + total++; + } + + return total; + } + public void StartRound(bool force = false) { #if EXCEPTION_TOLERANCE @@ -228,6 +248,8 @@ namespace Content.Server.GameTicking readyPlayerProfiles.Add(userId, profile); } + DebugTools.AssertEqual(readyPlayers.Count, ReadyPlayerCount()); + // Just in case it hasn't been loaded previously we'll try loading it. LoadMaps(); diff --git a/Content.Server/GameTicking/Rules/SecretRuleSystem.cs b/Content.Server/GameTicking/Rules/SecretRuleSystem.cs index d5adb8fdb7..95bf5986a5 100644 --- a/Content.Server/GameTicking/Rules/SecretRuleSystem.cs +++ b/Content.Server/GameTicking/Rules/SecretRuleSystem.cs @@ -1,15 +1,17 @@ +using System.Diagnostics.CodeAnalysis; +using System.Linq; using Content.Server.Administration.Logs; using Content.Server.GameTicking.Components; using Content.Server.Chat.Managers; using Content.Server.GameTicking.Presets; using Content.Server.GameTicking.Rules.Components; using Content.Shared.Random; -using Content.Shared.Random.Helpers; using Content.Shared.CCVar; using Content.Shared.Database; using Robust.Shared.Prototypes; using Robust.Shared.Random; using Robust.Shared.Configuration; +using Robust.Shared.Utility; namespace Content.Server.GameTicking.Rules; @@ -20,11 +22,46 @@ public sealed class SecretRuleSystem : GameRuleSystem [Dependency] private readonly IConfigurationManager _configurationManager = default!; [Dependency] private readonly IAdminLogManager _adminLogger = default!; [Dependency] private readonly IChatManager _chatManager = default!; + [Dependency] private readonly IComponentFactory _compFact = default!; + + private string _ruleCompName = default!; + + public override void Initialize() + { + base.Initialize(); + _ruleCompName = _compFact.GetComponentName(typeof(GameRuleComponent)); + } protected override void Added(EntityUid uid, SecretRuleComponent component, GameRuleComponent gameRule, GameRuleAddedEvent args) { base.Added(uid, component, gameRule, args); - PickRule(component); + var weights = _configurationManager.GetCVar(CCVars.SecretWeightPrototype); + + if (!TryPickPreset(weights, out var preset)) + { + Log.Error($"{ToPrettyString(uid)} failed to pick any preset. Removing rule."); + Del(uid); + return; + } + + Log.Info($"Selected {preset.ID} as the secret preset."); + _adminLogger.Add(LogType.EventStarted, $"Selected {preset.ID} as the secret preset."); + _chatManager.SendAdminAnnouncement(Loc.GetString("rule-secret-selected-preset", ("preset", preset.ID))); + + foreach (var rule in preset.Rules) + { + EntityUid ruleEnt; + + // if we're pre-round (i.e. will only be added) + // then just add rules. if we're added in the middle of the round (or at any other point really) + // then we want to start them as well + if (GameTicker.RunLevel <= GameRunLevel.InRound) + ruleEnt = GameTicker.AddGameRule(rule); + else + GameTicker.StartGameRule(rule, out ruleEnt); + + component.AdditionalGameRules.Add(ruleEnt); + } } protected override void Ended(EntityUid uid, SecretRuleComponent component, GameRuleComponent gameRule, GameRuleEndedEvent args) @@ -37,32 +74,101 @@ public sealed class SecretRuleSystem : GameRuleSystem } } - private void PickRule(SecretRuleComponent component) + private bool TryPickPreset(ProtoId weights, [NotNullWhen(true)] out GamePresetPrototype? preset) { - // TODO: This doesn't consider what can't start due to minimum player count, - // but currently there's no way to know anyway as they use cvars. - var presetString = _configurationManager.GetCVar(CCVars.SecretWeightPrototype); - var preset = _prototypeManager.Index(presetString).Pick(_random); - Log.Info($"Selected {preset} for secret."); - _adminLogger.Add(LogType.EventStarted, $"Selected {preset} for secret."); - _chatManager.SendAdminAnnouncement(Loc.GetString("rule-secret-selected-preset", ("preset", preset))); + var options = _prototypeManager.Index(weights).Weights.ShallowClone(); + var players = GameTicker.ReadyPlayerCount(); - var rules = _prototypeManager.Index(preset).Rules; - foreach (var rule in rules) + GamePresetPrototype? selectedPreset = null; + var sum = options.Values.Sum(); + while (options.Count > 0) { - EntityUid ruleEnt; - - // if we're pre-round (i.e. will only be added) - // then just add rules. if we're added in the middle of the round (or at any other point really) - // then we want to start them as well - if (GameTicker.RunLevel <= GameRunLevel.InRound) - ruleEnt = GameTicker.AddGameRule(rule); - else + var accumulated = 0f; + var rand = _random.NextFloat(sum); + foreach (var (key, weight) in options) { - GameTicker.StartGameRule(rule, out ruleEnt); + accumulated += weight; + if (accumulated < rand) + continue; + + if (!_prototypeManager.TryIndex(key, out selectedPreset)) + Log.Error($"Invalid preset {selectedPreset} in secret rule weights: {weights}"); + + options.Remove(key); + sum -= weight; + break; } - component.AdditionalGameRules.Add(ruleEnt); + if (CanPick(selectedPreset, players)) + { + preset = selectedPreset; + return true; + } + + if (selectedPreset != null) + Log.Info($"Excluding {selectedPreset.ID} from secret preset selection."); } + + preset = null; + return false; + } + + public bool CanPickAny() + { + var secretPresetId = _configurationManager.GetCVar(CCVars.SecretWeightPrototype); + return CanPickAny(secretPresetId); + } + + /// + /// Can any of the given presets be picked, taking into account the currently available player count? + /// + public bool CanPickAny(ProtoId weightedPresets) + { + var ids = _prototypeManager.Index(weightedPresets).Weights.Keys + .Select(x => new ProtoId(x)); + + return CanPickAny(ids); + } + + /// + /// Can any of the given presets be picked, taking into account the currently available player count? + /// + public bool CanPickAny(IEnumerable> protos) + { + var players = GameTicker.ReadyPlayerCount(); + foreach (var id in protos) + { + if (!_prototypeManager.TryIndex(id, out var selectedPreset)) + Log.Error($"Invalid preset {selectedPreset} in secret rule weights: {id}"); + + if (CanPick(selectedPreset, players)) + return true; + } + + return false; + } + + /// + /// Can the given preset be picked, taking into account the currently available player count? + /// + private bool CanPick([NotNullWhen(true)] GamePresetPrototype? selected, int players) + { + if (selected == null) + return false; + + foreach (var ruleId in selected.Rules) + { + if (!_prototypeManager.TryIndex(ruleId, out EntityPrototype? rule) + || !rule.TryGetComponent(_ruleCompName, out GameRuleComponent? ruleComp)) + { + Log.Error($"Encountered invalid rule {ruleId} in preset {selected.ID}"); + return false; + } + + if (ruleComp.MinPlayers > players) + return false; + } + + return true; } } From 9cb3287de4225eda4debca77c37fdb6602dad5ad Mon Sep 17 00:00:00 2001 From: Kukutis96513 <146854220+Kukutis96513@users.noreply.github.com> Date: Mon, 29 Apr 2024 07:02:46 +0300 Subject: [PATCH 081/110] Senior physician sleeve symmetry (#27016) * weh. * get the weh out of my repository * add best lizard figurine * remove umbra stuff from master * sprite time!! * revert stuff? * newer spritesss --- .../equipped-INNERCLOTHING-monkey.png | Bin 950 -> 864 bytes .../equipped-INNERCLOTHING.png | Bin 1310 -> 1215 bytes .../Jumpskirt/senior_physician.rsi/icon.png | Bin 538 -> 546 bytes .../senior_physician.rsi/inhand-left.png | Bin 619 -> 621 bytes .../senior_physician.rsi/inhand-right.png | Bin 610 -> 595 bytes .../equipped-INNERCLOTHING-monkey.png | Bin 987 -> 929 bytes .../equipped-INNERCLOTHING.png | Bin 1240 -> 1198 bytes .../Jumpsuit/senior_physician.rsi/icon.png | Bin 482 -> 493 bytes .../senior_physician.rsi/inhand-left.png | Bin 619 -> 621 bytes .../senior_physician.rsi/inhand-right.png | Bin 610 -> 595 bytes 10 files changed, 0 insertions(+), 0 deletions(-) diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/senior_physician.rsi/equipped-INNERCLOTHING-monkey.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/senior_physician.rsi/equipped-INNERCLOTHING-monkey.png index 4e98c89cc9331c61b142cc09c68ebe2f7bac76b9..830f482ab8659377458ac7992dde1d8b82b55a89 100644 GIT binary patch delta 822 zcmV-61Ihfh2jB*fBpLy8Qb$4nuFf3k00004XF*Lt006O%3;baPks%j<0`*BmK~#8N z?V3+$Q$Y~MM-TNNRa9y$1S>U{5(WQ&sc9h~NiNlk5kx$B5(CAeH+yI<9<7Czc+5dW zs11lzq^5|`BsPM2u)(4&S}2sX=)od*d-|=rX_`jKF7GAS&hIii^WNKUGH>7JFiQ-> zFbu;mo0Ton)=VrGvzm8*?4j$|dP~pV8XUG(zJJ9v?fG<3`o0rKWrQgI`W>0-Ydrw* zP$(qEQ~9@)9J^1Ea~G)7cTB`msg$EdsMJ@~MZaetVP&&fs~o)fa&R5@$wzFZntnB3 zSAVOtH8HxhTaMOp@y?{Mf4goMmGcignwFzKnCRD3094g;q*Ho-tK_oJOFv%O@m)74 zcb05j1(*->mQ$&#K%P3QKx+joFD}sF?Gei5a>94HTy*bBP>hfNoT2k~JE*Vi8Qnab z5HY*Je3%#WD}CthZEF`6KH|tvmzoN&^l^%EqeJxR<(Sz0u>q+fz~aXves$YraUbrt z6Qz&&l|E3#hmSaa^3&DV-Z3MQh=n(Q(9=Pud%`sS_$kfJexPEpNXcZ#asjI6?_(&i%F=6@r{<;+dTF?a2C*)*O1f$MSORJmu9?nRQC>RcllOpv3 zT8X*U)R7Bv>VJPpMruc^0P5|7{huf4_tF#Ndh?{%BrMJbAP3|!G=GXlf+_7)V6+0N zfkR6;G9z7o$ACucj8}|Rd;DakSDYU(L8}1hyQ?02qftK|yy_kdhyu&%5QK<`S(isNY1%ObaTI5b> z+qMb*uNZwd|EjdpefmafGYrEp48t(YhJol8k4Cx?UFd>w(*OVf07*qoM6N<$f}pjH AoB#j- delta 911 zcmV;A191G{2DS%~B#}WBe*gk_y;6XA{I}%)Cko;D=p&3p{Ch2Y0*N_YSmB*L5X4yO3~Z& zATGwQW|pjizQ4;bv%Bvz^D;Xd^1J{+5ClOG#0AA9`T%2$7hSoIe@?$odo~aZ@vY4b zFvf)A>D6~M)M{hNFW;b7zd%&Hxw#p@?xLeZ1MsxAq0w<~?-p)k687sSk~7-)spz}q zFjo|X?$l)9-J0;>NAp z=x=vIRaFGLd$7Km7LJ|MA-J}fz}jL001z4IGX;VnEyJp+f1++@0iAxI$?NsyG)afMGzkH^C;77Om!?&6W#g%2Oc zkXoKcCX+!l8a4bg==FN}+}s@Ob~_HXy}iB0eg**`{WFGwO*2ZiKjY;{05)q8Hqu*2 zul^McrHkpa)wIFf30}&Zb9oiT`qW9+w_Feg{QR* z;Z*k2B}szoI}?s2lmNFJ=2tCN06@jB2`GvpESL{QGKBzkYXcNTL9n|Acy$v^Q4Y~v zkT-A8(NK&1wz*LRf+5Zx+W|nc$D86lDE9|-#S?Oeck2XzB>)xmRk{T8#opopVCq2# zsYnEoe@H|)j!*)=4)kgM+vSyqeE9uP)^)qxE<6EIQp@u=s0#p-lasoG~-9+VY1g9hQ`Kk{FYyv2R<{muF5_0Q-%;~cX(9~ge;oO|x?`#ZmL z&b=__lEq@NSS%KcfW9hHMMZ@w z5si$Ds1j-Gd+v+@27^H^L(naRz$Bn(G`eMib_+C`o13{jJUqN^(9o`|tmJZMXJ_Uo zp|-8pansk==g4fpqV5L$`Nj+Zf3vf*%KIAQ5)>ny-^^h3N}ldxj~gzIUw!R)7E*!x;YX5yeIE{oldH_7i~7L8 z!0K}W@p@eaJFbA4_MriD>2W*An;$l@w5(or1h{?%G)w1<}ed&-&KORqRFG&LG?znXH zwO$u^6^23~Dl9DII$k;QYC;0AJWad;g|4nHr@Xve)ix7}M5w8$NlRa=bK;5bV7V0( z6ws;QX}VNfLysO0QY`wKrlzKNCKCJ5SOQ8)N}Q^yDjFRfMR}7Q8X7{`OajV&@Hqkh zVG0%i4*FoIiLY8XhQp)uathddphlJ60{Q_-wFVq&!YUY4OZ)|!O{2qXk8r1UY)fR@iI$uT>{)LK|^h`goguuMTsYF4_rj zpS#CmF}C2@;2`BDwuEV*0WCN3JwQ5WC7?9x9hDwCNH=QF^A8UpVK27;v;>I-zmqf1 z`GKs1)=?6Ur7A;LRBer?i5bbu%cIY8uZ$mYPa%dw$ItNBVHaJA5Qf8jX3hp7jDyKk z=kj7reIEc!#Gw5Q_}1{00LeT+hPOi6(GUH(l0i(xptS{HB?ur(PB8g>05B1QcA(p3 o*3`f^vL9lwSS%Kc<*SG2fBruQD$X5r>;M1&07*qoM6N<$f)Rr=Y5)KL delta 1272 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 O0000* diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/senior_physician.rsi/inhand-right.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/senior_physician.rsi/inhand-right.png index a2ecc2b551d3c056ffb5405c3f8b6affa671fce7..3855dc44e1b866e80af62678de17f9ecd5c44128 100644 GIT binary patch delta 551 zcmV+?0@(fH1k(hNBpLy8Qb$4nuFf3k00004XF*Lt006O%3;baPks%j<0q99YK~#8N z?b*Le!$1@V@TY@=#YqelL==ishAfKE)kSm?3dQ2!=;WUuF3t``M?nzkv31tZssI2007*qoM6N;tV1j?%1a<%b delta 568 zcmV-80>}N+1mXmcB#}WBe*zRqL_t(|obB1aYZGA{$MJVc>Chku#iJ1s3&knJErN0x zUBo#M?9@@3|3FasA5^&5v6GO+u{hXCo&!OL8-jxhYAFO06r`l<*Xa(MyE9L6{ED**jpI0TZdTsqyyEk5o%iFlb2Vd(1VI3gFSGP=ST^%-mE_&q*}?aH zX|-Cl#^_fo%FW84ph|#)yarKoA6M?H|!wegJ^%H7cmlPw`FVpC_TRQOwxg=P&RMw3OL-|&b>IfX;mIRQ6_KUE&vck(YbnZT*X}g7R#GE zG8>ImxqAHu&1MtN^XPOs^!t5AqY;C_fa7Zm<1Xy4B%*C^Byfvph zGzS1|Ub(>f$|=Wx=t0U@G;iT7ZZuZKTdM!eb%pKvX&Qc5YMlu}A5 zrIb=GaIIr(qp&qL&9#oPt-{aZ(_HHq+p<~#u62y(Vf_k#dmUpNRs-N#$9NvrE5Nmm zv8}mw0dS{dE^Nzs)?Dit+p^vU!M%>Ljk#t_JFrTr|IH8hre0&Y)*VauYlW_(H29}I}Th8w{*M^22*zT^qst+coUMhR>!l1Ff(Ew~R7K{BMs4r+{ zW`=?c0S4xkG%#s|9NH`9OT9^K`!}Q{~rbE8COF zDGTtNJH%IN>8CG^x~(dv`fFUfBA9g7ffH`8%Ffo^)O&MWwb@R8bw8xiG4eGCm=E*n zcy$@9(cHfUT%8!NOnIOQtm|xfD&7%)Luh9hK zH)cE@ccRfK#S;gA>FANe^yu+ZbrZ_vGL=fDz22b%X06dcW|M=F8u#^o`yDIuO-unDFLVTMvdQ zMiJxF=ZG_WB0=ARTKcSa`OF^2M&IfN@O9&l9*i*1_0dOvV6NPLRq2~xG+=vlUFG-n zL-~7U>~em;X|%o|2!bF8f*=TjAP9mW2&*5fKM?gieKMJB=%0{CiNgk38=zCGCLpk! z{0cN|9Y{TMJpkwI!wv$p^qK_5CM|E27}4tlkdB_ZcT2Sa5~N}AWU)zEPKOU&A0fK2 zg+|gjquKy}V4NBHvbf;3NTsGhB9WkMHmgoXIRXS4xvPDu&FS&|g+Wz6V1sc0KD~XR za`2}*J6undFm3^BaA5|RNDiwtnbrmX>$heqm0EJzV`F2~*47s2n|N++>v>eFJpz z`Mi~`)u5AyS{!dmnlrXG2}%=c)dv9RKgi7+Ya4%21+W0OSs|>=186`CnqF$H?QdA6 z$92NoJhM^|Ofe3CpW=S;FNa`tYI;6iC#>9jqxA(r5ClOGgw+qxPjJJ7(5a0c!2kdN M07*qoM6N<$g2Bh8w*UYD delta 947 zcmV;k15Es(2ipgbB#}WCe~n2*K~#90?V3GI6hRcn|BJ>#V~KdiL{tbdoFs-E7g@+z zoHknVrC?>lS0u!vv@tOnn>%8TtU^PDXrxnPA`~3#-f>W%2oVq?1>poLLomd`v4B~Y z+cWI!-5ycjui4!Ed=dcA5oi_bwfLcF8p;})P0p~wL8~u*9vuJxO!Rk4agUn;e?VSd9yCou>E0tc zFegtzvOWO37+jP9;O?#S%#Oa012`#;8%t*w($)96bJ>I5kG32y)akVAupVWk|Y)5ClOG1VIo4K@bG-_hah^qA^cjQBkq4e?K8rRb_y~wE;#_)dYy<K~YhWqmg)SZjLoJ zHk#~_NW}TvAm{q!d{Z(sogBRgspk?AU zZ7*!4$Bkrj@tkcf2BcRU0oZUrCdD&FI-6i?Dc6kocq7@$&F{B9K@bE%5Crir@Ei0e VDz&nk7~B8=002ovPDHLkV1g}mz)%1H diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/senior_physician.rsi/equipped-INNERCLOTHING.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/senior_physician.rsi/equipped-INNERCLOTHING.png index f67f3c67bf0ded1bbb6f24a4d7ab07935c2290fa..3e68439c78680d0a27ae9614c3fed3523087bb0c 100644 GIT binary patch delta 1157 zcmV;01bX|}39bo{BpLy8Qb$4nuFf3k00004XF*Lt006O%3;baPks%m=LrFwIRCr$P znp;RzK^Vtp3!>8MA=DOxZU&_lMURJzSDSi(=&629D#Uj*Oh7kY$UpRnr^p6X+=(i{wQ&u8_*pWf(O8h+@{V)vW8;1K!8}g2S}` zBCYo<=TT#voWHW8gI~`-R0P*!9twiE??qjLK8L-q+ll^|E1)mh&Fi~IckzRz`a}&Y zKd_gNWn^Tq%exDIc{{vx3a%m?7DI$qR}XeL?Yh)2@%N2$uUBq z5NmI5M?0o&YHC7TN?+>Bxr@`rTw)Jj^d&3+(4P}bF?)=?j}9_>Ushjw3ly%LWfh2v zeZR=coW_g2t%A}S(AE8g7et)ee$w#xBQN&03d)BdEjQGDg1b%2o|ZfMs;fXb0RIa* z0A}r&zwLK_zs>=#^`(9?<_4#Z_!)c`{T7HfW;Q)1+4>rdMx)VaG#ZUYGrpnc^JX{c zsOAKK^z#7Z+bBCE3ac8Rf~ZM10yb@`^foOY1Dr28TR$RQ?spLE&J+8uzcfnD)EOHq z&P&-Ky#msLnY=E$`HCk>ku65_{cxUu7Bry^8xGxndd;?7%4U~;?qsq?xOyhoIFM?# z;wMcLg{am1IhAd>xX?<=Cp-X@c18~V$od7mjXQzj7iXV;xAYDdF0h=hDXbp~fZP)? zr4`^+?q3yqT72_B)sXXb!<|5a12E9j%?qfi?@UUTSkye#*u{SQGKOsW!0no7$ZZ0t z0IZvT@s-zD`cw!%w}7Zsx-QGIW%{HEEM(f~6zLTpI!*X__lbC#dqVTgmUE;w4ARq+ zXJ(tdksv?+r1@$>)8ha(tXR91zZ1~k-*1loAvMq|WrLKlNJ6B~Oc{}r2b7pZme!8| zP%7S@4ML)}_tT(Mazxr#dl39|o`@F&73YCq^cesF2!Uic51>Ww1dt6X&I6_Y0ayWq zUrEt;h}xn}GAIRrNT&0ITN_*j0Qmieh=>>3t^)w*Oz;!0G?fmneyH`l+Cb+gMVZ~P=l|ZD53l_mpin3j3WY+Ue|Ry`L|(j@Ows7* z2x75V&HD_)p!v;hd@=vI(3qn7tQ{R4aqj0gx1F}Ae#j69~ZNf7`n)2jQhw4VhZF3DY#4KSBu3gwKKyf=f5n005?GB0H^N?1GML z#+G#1O*Ug!#+%k)nx?C7;d{$#bk<(-J(tq_r3dbN{E5q0nVEDsoXcjA%Vt_Kpb^c+Va`|MWp_Oq24L&k zZ#+Lv*crfIfAg%auKMyZRBxPS`t|JgqG13U!9@L9>azOnA~aLu`5>ZiO`9O30RheNF-A8e|>!&mSqL=BnSY};en>7 zYW}y!fdwEsJU~zCJT}Jh_sJ`$Pn0)_Dr(M{8e}eE(pL4yo^+qY|k#&7}W{*K(jW#5=3bENw6BW-1s1Lg78qE<1Ab5C-olb36KuJ{{3i~%xKr{;l5#wu_d;)yi<c3K1Z`J(VxZT%*A@2J;ldnHYSqFSq+ngrnhu(WewCxa5j2yrDVgXa3L$Btffbi{G~*}NeL|W6xC_*9G)k;D(2q#7c@q0}sHaye^ ze;nTz8LBPbIKGeAX`t|mJ0Y@Xizi8hXX})Hf)4igI6+`p*|n`lfzLi8Iy^vGodTb# zFCCWg(0(dpgYX&f(0;11D0jnoppq76bpgx<8Rr4X=YYZff3`rUlA>Pl+PqC7wDl<5 zP3Qfxq3!yBPFINdt?f&JL^smYerZY_C|sxX6RxkmGKY^J{9Ei$DE`Ad2W6!d6F#h~ Q<^TWy07*qoM6N<$g77U-Bme*a diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/senior_physician.rsi/icon.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/senior_physician.rsi/icon.png index d5d956c4e51110b0918f403b41318c312b124a97..7a4e5b493fd3ae3e4592c4627796f7f6a8db51ba 100644 GIT binary patch delta 447 zcmV;w0YLuZ1MLHlBpLy8Qb$4nuFf3k00004XF*Lt006O%3;baPks%m=f=NU{R9Hvt zlrc-gKorNH4i1Ww5QvB<6mgJ{MNtEO0Ug9CSo{RZcW`r46oZa}Q(gQ5I!UWkmkxr| zMUlc`M8u(zE%yIh(G+;*9GJ(n>(-x?o;# z7rDQ`KFeCERQTjLwdZ*}MhD|8H&=p|&(-!;E&+HG4K_xDX_6$Y#p6q!FAklu`O-@J zO{k!iz~^hDd)gM&YPDOO??o0YLqKa+j=002ovPDHLkV1lWK)6DW}2jEi4m gRrfVDH8nK=4~jIz(+lZW2LJ#707*qoM6N<$g6WpW8vpAz11nmTnBpLy8Qb$4nuFf3k00004XF*Lt006O%3;baPks%m=0!c(cRCr$P z+ObQ+Kokb>r-OsVNemQ36pB-aE{f3AMRXDh#p2-T`C;?=8Fj9Ik#JF|REnzAsk+4*6UpB#^I&Pjh+0=zYEuc0lazc zP4hbE=8mo?Xx<IlFsXYC-Med>}`!SsyDPU z)$aWDEz6?Q?PWdYb^bbkpI#V1I&Tn>6VR_1x9Fh7O6U0zdkXNC{|9)v^Ds{VzDni! z5!uPP__&&xU!Y_%sgG+mo26p0NVaWLtyZI_`#XAQeGdJ*r1SiUZNOsEqQvwBHJTsJ zDs|?!H9PPINap!}5eZ>jv^5#iyv9|7j=A*fU;`sP`X9s(mb zfM1VG^$-|)0;GBfjD8C6HEIumv2R(WdI*f(0Er#~V>f^sp@#sXBKiUm)0VMsME|4! O0000Az31nUHlB#}WCe;r9gK~#90?b@+x6Hy!o@b8tg@e^w8^ zpDA}2zV~?djyK#FAR;0nA|fIpA|fAA6p3?A&N}a#H-64JC%$=;f6QovL{TKh7$iyZ z$2DWj)RU0rjZ2cmD=*KiM#!5%2_FZG*j!(SF-EG@YLH&DA8MF+*YnC7<(w01E%4&T z)OmR>y#gLR-_4qm3ynr2n3VB1^UkBP0(Lgm&KyiS=xGP5otH;#7XW}bj(20V>u9&z==b~RcDpz{*u&@E>4op5otH;te;WjVrMa(IIQ@=&cY|zHK8#$ov_l{w5(Gg2_;m;hxdO&J2_hoRW>b7R1cjV{)M$sG)9Jvc zLr};G(CiQtHgW<0y$(TPCqS!1P}r}mS{;JIZi9eMhoG=40APoJH2eghS!8NwaR~$f O0000* diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/senior_physician.rsi/inhand-right.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/senior_physician.rsi/inhand-right.png index a2ecc2b551d3c056ffb5405c3f8b6affa671fce7..3855dc44e1b866e80af62678de17f9ecd5c44128 100644 GIT binary patch delta 551 zcmV+?0@(fH1k(hNBpLy8Qb$4nuFf3k00004XF*Lt006O%3;baPks%j<0q99YK~#8N z?b*Le!$1@V@TY@=#YqelL==ishAfKE)kSm?3dQ2!=;WUuF3t``M?nzkv31tZssI2007*qoM6N;tV1j?%1a<%b delta 568 zcmV-80>}N+1mXmcB#}WBe*zRqL_t(|obB1aYZGA{$MJVc>Chku#iJ1s3&knJErN0x zUBo#M?9@@3|3FasA5^&5v6GO+u{hXCo&!OL8-jxhYAFO06r`l<*Xa(MyE9L6{ED**jpI0TZdTsqyyEk5o%iFlb2Vd(1VI3gFSGP=ST^%-mE_&q*}?aH zX|-Cl#^_fo%FW84ph|#)yarKoA6M?H|!wegJ^%H7cmlPw`FVpC_TRQOwxg=P&RMw3OL-|&b>IfX;mIRQ6_KUE&vck(YbnZT*X}g7R#GE zG8>ImxqAHu&1MtN^XPOs^!t5AqY;C_fa7Zm<1Xy4B%*C^Byfvph zGzS1|Ub(>f$|=Wx=t0U@G;iT7ZZuZKTdM!eb%pKvX&Qc5YMlu}A5 zrIb=GaIIr(qp&qL&9#oPt-{aZ(_HHq+p<~#u62y(Vf_k#dmUpNRs-N#$9NvrE5Nmm zv8}mw0dS{dE^Nzs)?Dit+p^vU!M%>Ljk#t_JFrTr|IH8hre0 Date: Mon, 29 Apr 2024 14:06:27 +1000 Subject: [PATCH 082/110] Rainbow Weed (#25759) * rainbow weed * Lipolicide * psicodine + mannitol * happiness * ground + dried + smokables * damn you notepad++ * fix WHY NOT TELL ME ALL THE PROBLEMS AT THE SAME TIME!!! * work * work i beg you * recipe good * possibly fix merge conflict * remove reagents --- Resources/Locale/en-US/reagents/meta/fun.ftl | 2 +- Resources/Locale/en-US/seeds/seeds.ftl | 3 + .../Smokeables/Cigarettes/joints.yml | 56 ++++++ .../Consumable/Smokeables/Pipes/pipe.yml | 23 +++ .../Objects/Specific/Hydroponics/leaves.yml | 94 ++++++++++ .../Objects/Specific/Hydroponics/seeds.yml | 11 ++ Resources/Prototypes/Hydroponics/seeds.yml | 47 +++++ .../Recipes/Cooking/meal_recipes.yml | 8 + .../Recipes/Crafting/Graphs/smokeables.yml | 43 +++++ .../Recipes/Crafting/smokeables.yml | 33 ++++ .../Prototypes/Recipes/Reactions/medicine.yml | 2 +- .../Prototypes/Stacks/consumable_stacks.yml | 16 ++ .../Hydroponics/rainbow_cannabis.rsi/dead.png | Bin 0 -> 281 bytes .../rainbow_cannabis.rsi/dried.png | Bin 0 -> 484 bytes .../rainbow_cannabis.rsi/harvest.png | Bin 0 -> 48775 bytes .../rainbow_cannabis.rsi/meta.json | 173 ++++++++++++++++++ .../powderpile_rainbow.png | Bin 0 -> 521 bytes .../rainbow_cannabis.rsi/produce.png | Bin 0 -> 17259 bytes .../Hydroponics/rainbow_cannabis.rsi/seed.png | Bin 0 -> 493 bytes .../rainbow_cannabis.rsi/stage-1.png | Bin 0 -> 25186 bytes .../rainbow_cannabis.rsi/stage-2.png | Bin 0 -> 26288 bytes .../rainbow_cannabis.rsi/stage-3.png | Bin 0 -> 31374 bytes 22 files changed, 509 insertions(+), 2 deletions(-) create mode 100644 Resources/Textures/Objects/Specific/Hydroponics/rainbow_cannabis.rsi/dead.png create mode 100644 Resources/Textures/Objects/Specific/Hydroponics/rainbow_cannabis.rsi/dried.png create mode 100644 Resources/Textures/Objects/Specific/Hydroponics/rainbow_cannabis.rsi/harvest.png create mode 100644 Resources/Textures/Objects/Specific/Hydroponics/rainbow_cannabis.rsi/meta.json create mode 100644 Resources/Textures/Objects/Specific/Hydroponics/rainbow_cannabis.rsi/powderpile_rainbow.png create mode 100644 Resources/Textures/Objects/Specific/Hydroponics/rainbow_cannabis.rsi/produce.png create mode 100644 Resources/Textures/Objects/Specific/Hydroponics/rainbow_cannabis.rsi/seed.png create mode 100644 Resources/Textures/Objects/Specific/Hydroponics/rainbow_cannabis.rsi/stage-1.png create mode 100644 Resources/Textures/Objects/Specific/Hydroponics/rainbow_cannabis.rsi/stage-2.png create mode 100644 Resources/Textures/Objects/Specific/Hydroponics/rainbow_cannabis.rsi/stage-3.png diff --git a/Resources/Locale/en-US/reagents/meta/fun.ftl b/Resources/Locale/en-US/reagents/meta/fun.ftl index 8764a3d28a..a4a8c0f150 100644 --- a/Resources/Locale/en-US/reagents/meta/fun.ftl +++ b/Resources/Locale/en-US/reagents/meta/fun.ftl @@ -22,7 +22,7 @@ reagent-desc-razorium = A strange, non-newtonian chemical. It is produced when t reagent-name-fresium = Fresium reagent-desc-fresium = A mysterious compound that slows the vibration of atoms and molecules... somehow. In layman's terms, it makes things cold... REALLY cold. Can cause long-lasting movement issues if ingested. -reagent-name-laughter = Laughter +reagent-name-laughter = laughter reagent-desc-laughter = Some say that this is the best medicine, but recent studies have proven that to be untrue. reagent-name-weh = juice that makes you Weh diff --git a/Resources/Locale/en-US/seeds/seeds.ftl b/Resources/Locale/en-US/seeds/seeds.ftl index 4a125b1724..2dc0b88c74 100644 --- a/Resources/Locale/en-US/seeds/seeds.ftl +++ b/Resources/Locale/en-US/seeds/seeds.ftl @@ -1,4 +1,5 @@ # Nouns +# Nouns seeds-noun-seeds = seeds seeds-noun-spores = spores @@ -59,6 +60,8 @@ seeds-eggy-name = egg-plant seeds-eggy-display-name = egg-plants seeds-cannabis-name = cannabis seeds-cannabis-display-name = cannabis +seeds-rainbow-cannabis-name = rainbow cannabis +seeds-rainbow-cannabis-display-name = rainbow cannabis seeds-tobacco-name = tobacco seeds-tobacco-display-name = tobacco plant seeds-nettle-name = nettle diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Smokeables/Cigarettes/joints.yml b/Resources/Prototypes/Entities/Objects/Consumable/Smokeables/Cigarettes/joints.yml index e3ae06ec9f..9a0d96e89e 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Smokeables/Cigarettes/joints.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Smokeables/Cigarettes/joints.yml @@ -28,6 +28,34 @@ reagents: - ReagentId: THC Quantity: 20 + +- type: entity + id: JointRainbow + parent: Joint + name: joint + suffix: Rainbow + description: A roll of dried plant matter wrapped in thin paper. Seems to be colorful inside. + components: + - type: Construction + graph: smokeableJointRainbow + node: jointRainbow + - type: SolutionContainerManager + solutions: + smokable: + maxVol: 20 + reagents: + - ReagentId: SpaceDrugs + Quantity: 4 + - ReagentId: Lipolicide + Quantity: 4 + - ReagentId: MindbreakerToxin + Quantity: 2.66 + - ReagentId: Happiness + Quantity: 2.66 +# - ReagentId: ColorfulReagent +# Quantity: 1.33 + - ReagentId: Psicodine + Quantity: 0.8 - type: entity id: Blunt @@ -59,3 +87,31 @@ reagents: - ReagentId: THC Quantity: 20 + +- type: entity + id: BluntRainbow + parent: Blunt + name: blunt + suffix: Rainbow + description: A roll of dried plant matter wrapped in a dried tobacco leaf. Seems to be colorful inside. + components: + - type: Construction + graph: smokeableBluntRainbow + node: bluntRainbow + - type: SolutionContainerManager + solutions: + smokable: + maxVol: 20 + reagents: + - ReagentId: SpaceDrugs + Quantity: 4 + - ReagentId: Lipolicide + Quantity: 4 + - ReagentId: MindbreakerToxin + Quantity: 2.66 + - ReagentId: Happiness + Quantity: 2.66 +# - ReagentId: ColorfulReagent +# Quantity: 1.33 + - ReagentId: Psicodine + Quantity: 0.8 diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Smokeables/Pipes/pipe.yml b/Resources/Prototypes/Entities/Objects/Consumable/Smokeables/Pipes/pipe.yml index c3f13d80b7..79c568802c 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Smokeables/Pipes/pipe.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Smokeables/Pipes/pipe.yml @@ -63,3 +63,26 @@ path: /Audio/Weapons/Guns/Empty/empty.ogg ejectSound: path: /Audio/Weapons/Guns/Empty/empty.ogg + +- type: entity + id: SmokingPipeFilledCannabisRainbow + parent: SmokingPipe + name: pipe + suffix: Rainbow Cannabis + description: Just like grandpappy used to smoke. + components: + - type: ContainerContainer + containers: + bowl_slot: !type:ContainerSlot + - type: ItemSlots + - type: SmokingPipe + bowl_slot: + name: smoking-pipe-slot-component-slot-name-bowl + startingItem: GroundCannabisRainbow + whitelist: + tags: + - Smokable + insertSound: + path: /Audio/Weapons/Guns/Empty/empty.ogg + ejectSound: + path: /Audio/Weapons/Guns/Empty/empty.ogg diff --git a/Resources/Prototypes/Entities/Objects/Specific/Hydroponics/leaves.yml b/Resources/Prototypes/Entities/Objects/Specific/Hydroponics/leaves.yml index b847416211..c26ba925e0 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Hydroponics/leaves.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Hydroponics/leaves.yml @@ -65,7 +65,101 @@ - Smokable - type: Item size: Tiny + +- type: entity + name: rainbow cannabis leaves + parent: LeavesCannabis + id: LeavesCannabisRainbow + description: "Is it supposed to be glowing like that...?" + components: + - type: Sprite + sprite: Objects/Specific/Hydroponics/rainbow_cannabis.rsi + - type: Produce + seedId: rainbowCannabis + - type: PointLight + radius: 1.5 + energy: 2 + - type: RgbLightController + cycleRate: 0.6 + - type: SolutionContainerManager + solutions: + food: + reagents: + - ReagentId: SpaceDrugs + Quantity: 3 + - ReagentId: Lipolicide + Quantity: 3 + - ReagentId: MindbreakerToxin + Quantity: 2 + - ReagentId: Happiness + Quantity: 2 +# - ReagentId: ColorfulReagent +# Quantity: 1 + - ReagentId: Psicodine + Quantity: 0.6 +- type: entity + name: dried rainbow cannabis leaves + parent: LeavesCannabisDried + id: LeavesCannabisRainbowDried + description: "Dried rainbow cannabis leaves, ready to be ground." + components: + - type: Stack + stackType: LeavesCannabisRainbowDried + count: 1 + - type: SolutionContainerManager + solutions: + food: + maxVol: 8.5 #fuck you saveload test fail + reagents: + - ReagentId: SpaceDrugs + Quantity: 2.4 + - ReagentId: Lipolicide + Quantity: 2.4 + - ReagentId: MindbreakerToxin + Quantity: 1.6 + - ReagentId: Happiness + Quantity: 1.6 +# - ReagentId: ColorfulReagent +# Quantity: 0.8 + - ReagentId: Psicodine + Quantity: 0.48 + - type: Sprite + sprite: Objects/Specific/Hydroponics/rainbow_cannabis.rsi + state: dried + +- type: entity + name: ground rainbow cannabis + parent: GroundCannabis + id: GroundCannabisRainbow + description: "Ground rainbow cannabis, ready to take you on a trip." + components: + - type: Stack + stackType: GroundCannabisRainbow + count: 1 + - type: SolutionContainerManager + solutions: + food: + reagents: + - ReagentId: SpaceDrugs + Quantity: 4 + - ReagentId: Lipolicide + Quantity: 4 + - ReagentId: MindbreakerToxin + Quantity: 2.66 + - ReagentId: Happiness + Quantity: 2.66 +# - ReagentId: ColorfulReagent +# Quantity: 1.33 + - ReagentId: Psicodine + Quantity: 0.8 + - type: Sprite + sprite: Objects/Specific/Hydroponics/rainbow_cannabis.rsi + state: powderpile_rainbow + color: white + - type: Construction + graph: smokeableGroundCannabisRainbow + node: groundRainbow - type: entity name: tobacco leaves diff --git a/Resources/Prototypes/Entities/Objects/Specific/Hydroponics/seeds.yml b/Resources/Prototypes/Entities/Objects/Specific/Hydroponics/seeds.yml index 6e5adac65b..abde52d406 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Hydroponics/seeds.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Hydroponics/seeds.yml @@ -295,6 +295,17 @@ - type: Sprite sprite: Objects/Specific/Hydroponics/cannabis.rsi +- type: entity + parent: SeedBase + name: packet of rainbow cannabis seeds + description: "These seeds grow into rainbow weed. Groovy... and also highly addictive." + id: RainbowCannabisSeeds + components: + - type: Seed + seedId: rainbowCannabis + - type: Sprite + sprite: Objects/Specific/Hydroponics/rainbow_cannabis.rsi + - type: entity parent: SeedBase name: packet of nettle seeds diff --git a/Resources/Prototypes/Hydroponics/seeds.yml b/Resources/Prototypes/Hydroponics/seeds.yml index c2a5e943b1..5aef050fec 100644 --- a/Resources/Prototypes/Hydroponics/seeds.yml +++ b/Resources/Prototypes/Hydroponics/seeds.yml @@ -794,6 +794,8 @@ packetPrototype: CannabisSeeds productPrototypes: - LeavesCannabis + mutationPrototypes: + - rainbowCannabis harvestRepeat: Repeat lifespan: 75 maturation: 8 @@ -810,6 +812,51 @@ Max: 10 PotencyDivisor: 10 +- type: seed + id: rainbowCannabis + name: seeds-rainbow-cannabis-name + noun: seeds-noun-seeds + displayName: seeds-rainbow-cannabis-display-name + plantRsi: Objects/Specific/Hydroponics/rainbow_cannabis.rsi + packetPrototype: RainbowCannabisSeeds + productPrototypes: + - LeavesCannabisRainbow + harvestRepeat: Repeat + lifespan: 75 + maturation: 8 + production: 12 + yield: 2 + potency: 20 + growthStages: 3 + waterConsumption: 0.40 + idealLight: 9 + idealHeat: 298 + chemicals: + SpaceDrugs: + Min: 1 + Max: 15 + PotencyDivisor: 10 + Lipolicide: + Min: 1 + Max: 15 + PotencyDivisor: 10 + MindbreakerToxin: + Min: 1 + Max: 5 + PotencyDivisor: 20 + Happiness: + Min: 1 + Max: 5 +# PotencyDivisor: 20 +# ColorfulReagent: +# Min: 0 +# Max: 5 +# PotencyDivisor: 20 + Psicodine: + Min: 0 + Max: 5 + PotencyDivisor: 33 + - type: seed id: tobacco name: seeds-tobacco-name diff --git a/Resources/Prototypes/Recipes/Cooking/meal_recipes.yml b/Resources/Prototypes/Recipes/Cooking/meal_recipes.yml index 47a2841b6d..8cb4c55146 100644 --- a/Resources/Prototypes/Recipes/Cooking/meal_recipes.yml +++ b/Resources/Prototypes/Recipes/Cooking/meal_recipes.yml @@ -1703,6 +1703,14 @@ solids: LeavesCannabis: 1 +- type: microwaveMealRecipe + id: RecipeDriedCannabisRainbow + name: dried rainbow cannabis leaves recipe + result: LeavesCannabisRainbowDried + time: 10 + solids: + LeavesCannabisRainbow: 1 + - type: microwaveMealRecipe id: RecipeTrashBakedBananaPeel name: baked banana peel recipe diff --git a/Resources/Prototypes/Recipes/Crafting/Graphs/smokeables.yml b/Resources/Prototypes/Recipes/Crafting/Graphs/smokeables.yml index 00900a95ef..419d7bff33 100644 --- a/Resources/Prototypes/Recipes/Crafting/Graphs/smokeables.yml +++ b/Resources/Prototypes/Recipes/Crafting/Graphs/smokeables.yml @@ -12,6 +12,21 @@ doAfter: 2 - node: joint entity: Joint + +- type: constructionGraph + id: smokeableJointRainbow + start: start + graph: + - node: start + edges: + - to: jointRainbow + steps: + - material: PaperRolling + - material: CigaretteFilter + - material: GroundCannabisRainbow + doAfter: 2 + - node: jointRainbow + entity: JointRainbow - type: constructionGraph id: smokeableBlunt @@ -27,6 +42,20 @@ - node: blunt entity: Blunt +- type: constructionGraph + id: smokeableBluntRainbow + start: start + graph: + - node: start + edges: + - to: bluntRainbow + steps: + - material: LeavesTobaccoDried + - material: GroundCannabisRainbow + doAfter: 2 + - node: bluntRainbow + entity: BluntRainbow + - type: constructionGraph id: smokeableCigarette start: start @@ -56,6 +85,20 @@ - node: ground entity: GroundCannabis +- type: constructionGraph + id: smokeableGroundCannabisRainbow + start: start + graph: + - node: start + edges: + - to: groundRainbow + steps: + - material: LeavesCannabisRainbowDried + amount: 2 + doAfter: 5 + - node: groundRainbow + entity: GroundCannabisRainbow + - type: constructionGraph id: smokeableGroundTobacco start: start diff --git a/Resources/Prototypes/Recipes/Crafting/smokeables.yml b/Resources/Prototypes/Recipes/Crafting/smokeables.yml index 6d7d4e30bc..e4280f6d66 100644 --- a/Resources/Prototypes/Recipes/Crafting/smokeables.yml +++ b/Resources/Prototypes/Recipes/Crafting/smokeables.yml @@ -8,6 +8,17 @@ description: "A roll of dried plant matter wrapped in thin paper." icon: { sprite: Objects/Consumable/Smokeables/Cannabis/joint.rsi, state: unlit-icon } objectType: Item + +- type: construction + name: rainbow joint + id: smokeableJointRainbow + graph: smokeableJointRainbow + startNode: start + targetNode: jointRainbow + category: construction-category-misc + description: "A roll of dried plant matter wrapped in thin paper." + icon: { sprite: Objects/Consumable/Smokeables/Cannabis/joint.rsi, state: unlit-icon } + objectType: Item - type: construction name: blunt @@ -20,6 +31,17 @@ icon: { sprite: Objects/Consumable/Smokeables/Cannabis/blunt.rsi, state: unlit-icon } objectType: Item +- type: construction + name: rainbow blunt + id: smokeableBluntRainbow + graph: smokeableBluntRainbow + startNode: start + targetNode: bluntRainbow + category: construction-category-misc + description: "A roll of dried plant matter wrapped in a dried tobacco leaf." + icon: { sprite: Objects/Consumable/Smokeables/Cannabis/blunt.rsi, state: unlit-icon } + objectType: Item + - type: construction name: cigarette id: smokeableCigarette @@ -45,6 +67,17 @@ # color: darkgreen objectType: Item +- type: construction + name: ground rainbow cannabis + id: smokeableGroundCannabisRainbow + graph: smokeableGroundCannabisRainbow + startNode: start + targetNode: groundRainbow + category: construction-category-misc + description: "Ground rainbow cannabis, ready to take you on a trip." + icon: { sprite: Objects/Specific/Hydroponics/rainbow_cannabis.rsi, state: powderpile_rainbow } + objectType: Item + - type: construction name: ground tobacco id: smokeableGroundTobacco diff --git a/Resources/Prototypes/Recipes/Reactions/medicine.yml b/Resources/Prototypes/Recipes/Reactions/medicine.yml index b13c6bb71b..0a36f869b3 100644 --- a/Resources/Prototypes/Recipes/Reactions/medicine.yml +++ b/Resources/Prototypes/Recipes/Reactions/medicine.yml @@ -582,7 +582,7 @@ Sigynate: amount: 2 products: - Aloxadone: 4 + Aloxadone: 4 - type: reaction id: Psicodine diff --git a/Resources/Prototypes/Stacks/consumable_stacks.yml b/Resources/Prototypes/Stacks/consumable_stacks.yml index e9f0cab7e4..2936772f08 100644 --- a/Resources/Prototypes/Stacks/consumable_stacks.yml +++ b/Resources/Prototypes/Stacks/consumable_stacks.yml @@ -51,6 +51,14 @@ maxCount: itemSize: 1 +- type: stack + id: GroundCannabisRainbow + name: ground rainbow cannabis + icon: { sprite: /Textures/Objects/Specific/Hydroponics/rainbow_cannabis.rsi, state: powderpile_rainbow } + spawn: GroundCannabisRainbow + maxCount: + itemSize: 1 + - type: stack id: LeavesTobaccoDried name: dried tobacco leaves @@ -66,3 +74,11 @@ spawn: LeavesCannabisDried maxCount: 5 itemSize: 5 + +- type: stack + id: LeavesCannabisRainbowDried + name: dried rainbow cannabis leaves + icon: { sprite: /Textures/Objects/Specific/Hydroponics/rainbow_cannabis.rsi, state: dried } + spawn: LeavesCannabisRainbowDried + maxCount: 5 + itemSize: 5 diff --git a/Resources/Textures/Objects/Specific/Hydroponics/rainbow_cannabis.rsi/dead.png b/Resources/Textures/Objects/Specific/Hydroponics/rainbow_cannabis.rsi/dead.png new file mode 100644 index 0000000000000000000000000000000000000000..2eb3c64ca9ed40942554c4bc7a090ddee77041ec GIT binary patch literal 281 zcmV+!0p|XRP)(%UG>Rn>q;L3%B@6izfhGL6 ffLcI?VHgSzuN_L3zE32b00000NkvXXu0mjf?Wb+b literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Specific/Hydroponics/rainbow_cannabis.rsi/dried.png b/Resources/Textures/Objects/Specific/Hydroponics/rainbow_cannabis.rsi/dried.png new file mode 100644 index 0000000000000000000000000000000000000000..77f23e938c59d291e423f804f9a2fc810ef69a50 GIT binary patch literal 484 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∈jw4#8Xo@a&f)5>M-r4n3H_C#vF8TT z#(KmAPMVQg`6&0$Fnq?+qr2c^(%x5)7)LXJe*ymLw@y7Lfz8=A|DO%-eXOwaNJd|8t6mg3*yV*T<$|gnnb`bmEnsE%V7f!p~#4KR^Vm(=eKY zLmwTmfPou4xt{Qisl%_AW7|Z4Ap+E!q_@gu6=X&4IP`%d@$R1bhj-sH^u?J*^;e~V zZTMKX*kLCbf_r`w3%GRZ?#Pv;&YQ-Mx>hQl-n5J}SjPYR!6}hHeNE)YDXKg5#QDTym23BwEH=a~ii4S&JS1esrLe9aHX`gHFbvL+X$ra4qA6{$BXc0H`w z<@iFWX+uYEv)5z@NXgh>rkaLN6tN#??s?pRr>Hmcq44!tsx7`*VbEU3g{()Bt<+)H z5aF*JnfTHG))#v&m#Xmb1=ZJkgCY1LOBEZz_nTE)3#)QDuF3M205`cf5;QdN1q14p z{BZbOngceAiu4iB6d#BF@=NqK|H5n}`Qhl}suQ>K!!hjMdgIvLerzY3`H_2f?%37J z54Ugc7CE59Gv{bc0y(-P95?7?+R3#4UL(Jb zZ{bJviVdQ&ZOFP^6HS-iYUNhhjDi4tLP1R!6>Gk`Rq4UODmpS&?tge<-~NB2D@`2S zbN}$W#y(saAG;lyE+E1(W~1Q{V;Ccg13lw=Vg!&>+jgKZ=B z!`3B`>(BkMjL$u(t8bM}C}#BQpD{)+@-#6~s6PBD=oM4XOSop7#!{SWtVKC#_=Qwd z?aWH0BV{TDN9s3JO?1;5v1=fn)%_MzA+n^7EsKzy*o71E$}MXWh1)|uvY%0_ZB4()X4+Zlq>^H{&-h$tcs>2mBQ z)-NQ8Zsn)L8v0H3$LxADuqzD5i;U@up^274W0z6U8WCrWs<*fC(N?PZd~=rhr8gcU z4EUmaGcB>168I9>Y4OdB_04(eGUTeg!gt`iCdp67hgAJKd>qV16MiI%fw7CBBTJ}F zlgPst_;5{;m$g+kw>Zf}hF*}W{<^u6AI_{u?6mX4A)HXkjMUXIuuaXmrJ24| zwnlTqxmuIk)FQuTqh>=iomqp^X0{%>?2DV^ zXlwJWCJ0QNF~k@SuA9-M-9a2lfYsBilaY@Tr#Y>$hKb!m zczPFy^-@N2yxYpEwfJC33Qo0#h^tGN#f#VOo!${w{!cX$k zwfMXfAiOa4oyazw7%Qmv`L_8CqB@PJe734C#kNs}AGW+&1Q-V%`|RpX&54=k%uz_| z8xXBqWpj(!{f*D?n~q2-U6iB~AbePx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0iH=jK~z{r?US)< zQ&AL$zZW#cih&3jMCnU|A?;A4&=e`scJ(i)f}mYGIJxQMEIMkZA{3e$I;iQA(k`__ zJ2 zgiKr-ot6nS=GIxw3#E`20k+))7}}C(OQ0jWCJd$EQdw6w==FssE(Gq_ZnAhN6^KGKeq>lUel<#QD_cQQbw_V$$nom**zX5-gpx@2Y61*%s z6bCf?9Q2Ihn8EfQ=N~*%nf|B>jfkAr+Ig@d@mur?XNThQ@BFo}cyM(%gGH+_N<|1M_gG~Ckie*-@Oy$hPwv=teX00000 LNkvXXu0mjf*(B&X literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Specific/Hydroponics/rainbow_cannabis.rsi/produce.png b/Resources/Textures/Objects/Specific/Hydroponics/rainbow_cannabis.rsi/produce.png new file mode 100644 index 0000000000000000000000000000000000000000..400fed1b21d5ff857de07d10cadafd5262cb5642 GIT binary patch literal 17259 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Specific/Hydroponics/rainbow_cannabis.rsi/seed.png b/Resources/Textures/Objects/Specific/Hydroponics/rainbow_cannabis.rsi/seed.png new file mode 100644 index 0000000000000000000000000000000000000000..fa194148f3a5cb6029197870c30c45b466f903de GIT binary patch literal 493 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Specific/Hydroponics/rainbow_cannabis.rsi/stage-2.png b/Resources/Textures/Objects/Specific/Hydroponics/rainbow_cannabis.rsi/stage-2.png new file mode 100644 index 0000000000000000000000000000000000000000..d30ed1ed2640e5d531d546226763563991f6b638 GIT binary patch literal 26288 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

5_Tx5tRbpX=Z$aelaR~GLjKTwdbC)Y$ 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 M8EKZ>eHixt0Cg*Af&c&j literal 0 HcmV?d00001 From 7c7d8eb645010f02faccd6394f1229ce130e81dc Mon Sep 17 00:00:00 2001 From: Leon Friedrich <60421075+ElectroJr@users.noreply.github.com> Date: Mon, 29 Apr 2024 16:06:43 +1200 Subject: [PATCH 083/110] ActivatableUI tweaks (#27448) * ActivatableUI tweaks * EntGotRemovedFromContainerMessage * A --- .../Hands/EntitySystems/SharedHandsSystem.cs | 48 +++- .../UserInterface/ActivatableUIComponent.cs | 44 ++-- .../ActivatableUISystem.Power.cs | 23 +- .../UserInterface/ActivatableUISystem.cs | 205 +++++++++++++----- .../Entities/Clothing/Hands/gloves.yml | 3 +- .../Objects/Devices/Electronics/door.yml | 2 +- .../Syndicate_Gadgets/war_declarator.yml | 2 +- .../Objects/Devices/forensic_scanner.yml | 2 +- .../Entities/Objects/Devices/pda.yml | 1 - .../Entities/Objects/Misc/books.yml | 1 - .../Entities/Objects/Misc/paper.yml | 1 - .../Medical/handheld_crew_monitor.yml | 1 - .../Specific/Medical/healthanalyzer.yml | 1 - .../Objects/Specific/Research/anomaly.yml | 2 +- .../Objects/Specific/Service/barber.yml | 3 +- .../Entities/Objects/Specific/atmos.yml | 2 +- .../Objects/Tools/access_configurator.yml | 2 +- 17 files changed, 244 insertions(+), 99 deletions(-) diff --git a/Content.Shared/Hands/EntitySystems/SharedHandsSystem.cs b/Content.Shared/Hands/EntitySystems/SharedHandsSystem.cs index b72a7c4eb3..fd732009e9 100644 --- a/Content.Shared/Hands/EntitySystems/SharedHandsSystem.cs +++ b/Content.Shared/Hands/EntitySystems/SharedHandsSystem.cs @@ -87,7 +87,6 @@ public abstract partial class SharedHandsSystem ///

/// /// - public void RemoveHands(EntityUid uid, HandsComponent? handsComp = null) { if (!Resolve(uid, ref handsComp)) @@ -137,6 +136,43 @@ public abstract partial class SharedHandsSystem return false; } + public bool TryGetActiveHand(Entity entity, [NotNullWhen(true)] out Hand? hand) + { + if (!Resolve(entity, ref entity.Comp, false)) + { + hand = null; + return false; + } + + hand = entity.Comp.ActiveHand; + return hand != null; + } + + public bool TryGetActiveItem(Entity entity, [NotNullWhen(true)] out EntityUid? item) + { + if (!TryGetActiveHand(entity, out var hand)) + { + item = null; + return false; + } + + item = hand.HeldEntity; + return item != null; + } + + public Hand? GetActiveHand(Entity entity) + { + if (!Resolve(entity, ref entity.Comp)) + return null; + + return entity.Comp.ActiveHand; + } + + public EntityUid? GetActiveItem(Entity entity) + { + return GetActiveHand(entity)?.HeldEntity; + } + /// /// Enumerate over hands, starting with the currently active hand. /// @@ -227,9 +263,17 @@ public abstract partial class SharedHandsSystem return true; } - public bool IsHolding(EntityUid uid, EntityUid? entity, [NotNullWhen(true)] out Hand? inHand, HandsComponent? handsComp = null) + public bool IsHolding(Entity entity, [NotNullWhen(true)] EntityUid? item) + { + return IsHolding(entity, item, out _, entity); + } + + public bool IsHolding(EntityUid uid, [NotNullWhen(true)] EntityUid? entity, [NotNullWhen(true)] out Hand? inHand, HandsComponent? handsComp = null) { inHand = null; + if (entity == null) + return false; + if (!Resolve(uid, ref handsComp, false)) return false; diff --git a/Content.Shared/UserInterface/ActivatableUIComponent.cs b/Content.Shared/UserInterface/ActivatableUIComponent.cs index 136a1f82cf..3f83816b7d 100644 --- a/Content.Shared/UserInterface/ActivatableUIComponent.cs +++ b/Content.Shared/UserInterface/ActivatableUIComponent.cs @@ -4,22 +4,26 @@ using Robust.Shared.Serialization.TypeSerializers.Implementations; namespace Content.Shared.UserInterface { - [RegisterComponent, NetworkedComponent] + [RegisterComponent, NetworkedComponent, AutoGenerateComponentState] public sealed partial class ActivatableUIComponent : Component { [DataField(required: true, customTypeSerializer: typeof(EnumSerializer))] - public Enum? Key { get; set; } = default!; + public Enum? Key; + + /// + /// Whether the item must be held in one of the user's hands to work. + /// This is ignored unless is true. + /// + [ViewVariables(VVAccess.ReadWrite)] + [DataField] + public bool InHandsOnly; + + [DataField] + public bool SingleUser; [ViewVariables(VVAccess.ReadWrite)] [DataField] - public bool InHandsOnly { get; set; } = false; - - [DataField] - public bool SingleUser { get; set; } = false; - - [ViewVariables(VVAccess.ReadWrite)] - [DataField] - public bool AdminOnly { get; set; } = false; + public bool AdminOnly; [DataField] public LocId VerbText = "ui-verb-toggle-open"; @@ -38,16 +42,15 @@ namespace Content.Shared.UserInterface /// /// Entities that are required to open this UI. /// - [DataField("allowedItems")] - [ViewVariables(VVAccess.ReadWrite)] - public EntityWhitelist? AllowedItems = null; + [DataField, ViewVariables(VVAccess.ReadWrite)] + public EntityWhitelist? RequiredItems; /// - /// Whether you can activate this ui with activateinhand or not + /// If true, then this UI can only be opened via verbs. I.e., normal interactions/activations will not open + /// the UI. /// - [ViewVariables(VVAccess.ReadWrite)] - [DataField] - public bool RightClickOnly; + [DataField, ViewVariables(VVAccess.ReadWrite)] + public bool VerbOnly; /// /// Whether spectators (non-admin ghosts) should be allowed to view this UI. @@ -57,17 +60,18 @@ namespace Content.Shared.UserInterface public bool AllowSpectator = true; /// - /// Whether the UI should close when the item is deselected due to a hand swap or drop + /// Whether the item must be in the user's currently selected/active hand. + /// This is ignored unless is true. /// [ViewVariables(VVAccess.ReadWrite)] [DataField] - public bool CloseOnHandDeselect = true; + public bool RequireActiveHand = true; /// /// The client channel currently using the object, or null if there's none/not single user. /// NOTE: DO NOT DIRECTLY SET, USE ActivatableUISystem.SetCurrentSingleUser /// - [ViewVariables] + [DataField, AutoNetworkedField] public EntityUid? CurrentSingleUser; } } diff --git a/Content.Shared/UserInterface/ActivatableUISystem.Power.cs b/Content.Shared/UserInterface/ActivatableUISystem.Power.cs index 64099c9573..b8a815c7a8 100644 --- a/Content.Shared/UserInterface/ActivatableUISystem.Power.cs +++ b/Content.Shared/UserInterface/ActivatableUISystem.Power.cs @@ -20,12 +20,19 @@ public sealed partial class ActivatableUISystem { _cell.SetPowerCellDrawEnabled(uid, false); - if (HasComp(uid) && - TryComp(uid, out var activatable) && - activatable.Key != null) + if (!HasComp(uid) || + !TryComp(uid, out ActivatableUIComponent? activatable)) { - _uiSystem.CloseUi(uid, activatable.Key); + return; } + + if (activatable.Key == null) + { + Log.Error($"Encountered null key in activatable ui on entity {ToPrettyString(uid)}"); + return; + } + + _uiSystem.CloseUi(uid, activatable.Key); } private void OnBatteryOpened(EntityUid uid, ActivatableUIRequiresPowerCellComponent component, BoundUIOpenedEvent args) @@ -55,9 +62,15 @@ public sealed partial class ActivatableUISystem /// public void CheckUsage(EntityUid uid, ActivatableUIComponent? active = null, ActivatableUIRequiresPowerCellComponent? component = null, PowerCellDrawComponent? draw = null) { - if (!Resolve(uid, ref component, ref draw, ref active, false) || active.Key == null) + if (!Resolve(uid, ref component, ref draw, ref active, false)) return; + if (active.Key == null) + { + Log.Error($"Encountered null key in activatable ui on entity {ToPrettyString(uid)}"); + return; + } + if (_cell.HasActivatableCharge(uid)) return; diff --git a/Content.Shared/UserInterface/ActivatableUISystem.cs b/Content.Shared/UserInterface/ActivatableUISystem.cs index 94271cc681..5d408012bd 100644 --- a/Content.Shared/UserInterface/ActivatableUISystem.cs +++ b/Content.Shared/UserInterface/ActivatableUISystem.cs @@ -3,11 +3,11 @@ using Content.Shared.Administration.Managers; using Content.Shared.Ghost; using Content.Shared.Hands; using Content.Shared.Hands.Components; +using Content.Shared.Hands.EntitySystems; using Content.Shared.Interaction; -using Content.Shared.Interaction.Events; using Content.Shared.Popups; using Content.Shared.Verbs; -using Robust.Shared.Player; +using Robust.Shared.Containers; namespace Content.Shared.UserInterface; @@ -17,23 +17,31 @@ public sealed partial class ActivatableUISystem : EntitySystem [Dependency] private readonly ActionBlockerSystem _blockerSystem = default!; [Dependency] private readonly SharedUserInterfaceSystem _uiSystem = default!; [Dependency] private readonly SharedPopupSystem _popupSystem = default!; + [Dependency] private readonly SharedHandsSystem _hands = default!; + [Dependency] private readonly SharedContainerSystem _container = default!; + [Dependency] private readonly SharedInteractionSystem _interaction = default!; + + private readonly List _toClose = new(); public override void Initialize() { base.Initialize(); SubscribeLocalEvent(OnActivate); - SubscribeLocalEvent(OnUseInHand); SubscribeLocalEvent(OnInteractUsing); SubscribeLocalEvent(OnHandDeselected); - SubscribeLocalEvent((uid, aui, _) => CloseAll(uid, aui)); - // *THIS IS A BLATANT WORKAROUND!* RATIONALE: Microwaves need it - SubscribeLocalEvent(OnParentChanged); + SubscribeLocalEvent(OnHandUnequipped); SubscribeLocalEvent(OnUIClose); + SubscribeLocalEvent>(GetActivationVerb); + SubscribeLocalEvent>(GetVerb); + + // TODO ActivatableUI + // Add UI-user component, and listen for user container changes. + // I.e., should lose a computer UI if a player gets shut into a locker. + SubscribeLocalEvent(OnGotInserted); + SubscribeLocalEvent(OnGotRemoved); + SubscribeLocalEvent(OnBoundInterfaceInteractAttempt); - - SubscribeLocalEvent>(AddOpenUiVerb); - SubscribeLocalEvent(OnActionPerform); InitializePower(); @@ -59,25 +67,54 @@ public sealed partial class ActivatableUISystem : EntitySystem args.Handled = _uiSystem.TryToggleUi(uid, args.Key, args.Performer); } - private void AddOpenUiVerb(EntityUid uid, ActivatableUIComponent component, GetVerbsEvent args) + + private void GetActivationVerb(EntityUid uid, ActivatableUIComponent component, GetVerbsEvent args) + { + if (component.VerbOnly || !ShouldAddVerb(uid, component, args)) + return; + + args.Verbs.Add(new ActivationVerb + { + // TODO VERBS add "open UI" icon + Act = () => InteractUI(args.User, uid, component), + Text = Loc.GetString(component.VerbText) + }); + } + + private void GetVerb(EntityUid uid, ActivatableUIComponent component, GetVerbsEvent args) + { + if (!component.VerbOnly || !ShouldAddVerb(uid, component, args)) + return; + + args.Verbs.Add(new Verb + { + // TODO VERBS add "open UI" icon + Act = () => InteractUI(args.User, uid, component), + Text = Loc.GetString(component.VerbText) + }); + } + + private bool ShouldAddVerb(EntityUid uid, ActivatableUIComponent component, GetVerbsEvent args) where T : Verb { if (!args.CanAccess) - return; + return false; - if (component.RequireHands && args.Hands == null) - return; + if (component.RequireHands) + { + if (args.Hands == null) + return false; - if (component.InHandsOnly && args.Using != uid) - return; + if (component.InHandsOnly) + { + if (!_hands.IsHolding(args.User, uid, out var hand, args.Hands)) + return false; - if (!args.CanInteract && (!component.AllowSpectator || !HasComp(args.User))) - return; + if (component.RequireActiveHand && args.Hands.ActiveHand != hand) + return false; + } + } - ActivationVerb verb = new(); - verb.Act = () => InteractUI(args.User, uid, component); - verb.Text = Loc.GetString(component.VerbText); - // TODO VERBS add "open UI" icon? - args.Verbs.Add(verb); + return args.CanInteract || component.AllowSpectator && HasComp(args.User); } private void OnActivate(EntityUid uid, ActivatableUIComponent component, ActivateInWorldEvent args) @@ -85,24 +122,10 @@ public sealed partial class ActivatableUISystem : EntitySystem if (args.Handled) return; - if (component.InHandsOnly) + if (component.VerbOnly) return; - if (component.AllowedItems != null) - return; - - args.Handled = InteractUI(args.User, uid, component); - } - - private void OnUseInHand(EntityUid uid, ActivatableUIComponent component, UseInHandEvent args) - { - if (args.Handled) - return; - - if (component.RightClickOnly) - return; - - if (component.AllowedItems != null) + if (component.RequiredItems != null) return; args.Handled = InteractUI(args.User, uid, component); @@ -110,15 +133,19 @@ public sealed partial class ActivatableUISystem : EntitySystem private void OnInteractUsing(EntityUid uid, ActivatableUIComponent component, InteractUsingEvent args) { - if (args.Handled) return; - if (component.AllowedItems == null) return; - if (!component.AllowedItems.IsValid(args.Used, EntityManager)) return; - args.Handled = InteractUI(args.User, uid, component); - } + if (args.Handled) + return; - private void OnParentChanged(EntityUid uid, ActivatableUIComponent aui, ref EntParentChangedMessage args) - { - CloseAll(uid, aui); + if (component.VerbOnly) + return; + + if (component.RequiredItems == null) + return; + + if (!component.RequiredItems.IsValid(args.Used, EntityManager)) + return; + + args.Handled = InteractUI(args.User, uid, component); } private void OnUIClose(EntityUid uid, ActivatableUIComponent component, BoundUIClosedEvent args) @@ -148,22 +175,33 @@ public sealed partial class ActivatableUISystem : EntitySystem if (!_blockerSystem.CanInteract(user, uiEntity) && (!aui.AllowSpectator || !HasComp(user))) return false; - if (aui.RequireHands && !HasComp(user)) - return false; + if (aui.RequireHands) + { + if (!TryComp(user, out HandsComponent? hands)) + return false; + + if (aui.InHandsOnly) + { + if (!_hands.IsHolding(user, uiEntity, out var hand, hands)) + return false; + + if (aui.RequireActiveHand && hands.ActiveHand != hand) + return false; + } + } if (aui.AdminOnly && !_adminManager.IsAdmin(user)) return false; if (aui.SingleUser && aui.CurrentSingleUser != null && user != aui.CurrentSingleUser) { - string message = Loc.GetString("machine-already-in-use", ("machine", uiEntity)); + var message = Loc.GetString("machine-already-in-use", ("machine", uiEntity)); _popupSystem.PopupEntity(message, uiEntity, user); - // If we get here, supposedly, the object is in use. - // Check with BUI that it's ACTUALLY in use just in case. - // Since this could brick the object if it goes wrong. if (_uiSystem.IsUiOpen(uiEntity, aui.Key)) - return false; + return true; + + Log.Error($"Activatable UI has user without being opened? Entity: {ToPrettyString(uiEntity)}. User: {aui.CurrentSingleUser}, Key: {aui.Key}"); } // If we've gotten this far, fire a cancellable event that indicates someone is about to activate this. @@ -199,26 +237,77 @@ public sealed partial class ActivatableUISystem : EntitySystem return; aui.CurrentSingleUser = user; + Dirty(uid, aui); RaiseLocalEvent(uid, new ActivatableUIPlayerChangedEvent()); } public void CloseAll(EntityUid uid, ActivatableUIComponent? aui = null) { - if (!Resolve(uid, ref aui, false) || aui.Key == null) + if (!Resolve(uid, ref aui, false)) return; + if (aui.Key == null) + { + Log.Error($"Encountered null key in activatable ui on entity {ToPrettyString(uid)}"); + return; + } + _uiSystem.CloseUi(uid, aui.Key); } - private void OnHandDeselected(EntityUid uid, ActivatableUIComponent? aui, HandDeselectedEvent args) + private void OnHandDeselected(Entity ent, ref HandDeselectedEvent args) { - if (!Resolve(uid, ref aui, false)) + if (ent.Comp.RequireHands && ent.Comp.InHandsOnly && ent.Comp.RequireActiveHand) + CloseAll(ent, ent); + } + + private void OnHandUnequipped(Entity ent, ref GotUnequippedHandEvent args) + { + if (ent.Comp.RequireHands && ent.Comp.InHandsOnly) + CloseAll(ent, ent); + } + + private void OnGotInserted(Entity ent, ref EntGotInsertedIntoContainerMessage args) + { + CheckAccess((ent, ent)); + } + + private void OnGotRemoved(Entity ent, ref EntGotRemovedFromContainerMessage args) + { + CheckAccess((ent, ent)); + } + + public void CheckAccess(Entity ent) + { + if (!Resolve(ent, ref ent.Comp)) return; - if (!aui.CloseOnHandDeselect) + if (ent.Comp.Key == null) + { + Log.Error($"Encountered null key in activatable ui on entity {ToPrettyString(ent)}"); return; + } - CloseAll(uid, aui); + foreach (var user in _uiSystem.GetActors(ent.Owner, ent.Comp.Key)) + { + if (!_container.IsInSameOrParentContainer(user, ent) + && !_interaction.CanAccessViaStorage(user, ent)) + { + _toClose.Add(user); + continue; + + } + + if (!_interaction.InRangeUnobstructed(user, ent)) + _toClose.Add(user); + } + + foreach (var user in _toClose) + { + _uiSystem.CloseUi(ent.Owner, ent.Comp.Key, user); + } + + _toClose.Clear(); } } diff --git a/Resources/Prototypes/Entities/Clothing/Hands/gloves.yml b/Resources/Prototypes/Entities/Clothing/Hands/gloves.yml index 02ec58bd67..0c2ded620e 100644 --- a/Resources/Prototypes/Entities/Clothing/Hands/gloves.yml +++ b/Resources/Prototypes/Entities/Clothing/Hands/gloves.yml @@ -372,8 +372,7 @@ - type: MeleeSpeech - type: ActivatableUI key: enum.MeleeSpeechUiKey.Key - closeOnHandDeselect: false - rightClickOnly: true + verbOnly: true - type: Actions - type: UserInterface interfaces: diff --git a/Resources/Prototypes/Entities/Objects/Devices/Electronics/door.yml b/Resources/Prototypes/Entities/Objects/Devices/Electronics/door.yml index ada46c5d02..a832bea741 100644 --- a/Resources/Prototypes/Entities/Objects/Devices/Electronics/door.yml +++ b/Resources/Prototypes/Entities/Objects/Devices/Electronics/door.yml @@ -16,7 +16,7 @@ - type: AccessReader - type: ActivatableUI key: enum.DoorElectronicsConfigurationUiKey.Key - allowedItems: + requiredItems: tags: - DoorElectronicsConfigurator - type: UserInterface diff --git a/Resources/Prototypes/Entities/Objects/Devices/Syndicate_Gadgets/war_declarator.yml b/Resources/Prototypes/Entities/Objects/Devices/Syndicate_Gadgets/war_declarator.yml index c0ce4cba18..78009f1042 100644 --- a/Resources/Prototypes/Entities/Objects/Devices/Syndicate_Gadgets/war_declarator.yml +++ b/Resources/Prototypes/Entities/Objects/Devices/Syndicate_Gadgets/war_declarator.yml @@ -14,7 +14,7 @@ - type: ActivatableUI inHandsOnly: true singleUser: true - closeOnHandDeselect: false + requireActiveHand: false key: enum.WarDeclaratorUiKey.Key - type: UserInterface interfaces: diff --git a/Resources/Prototypes/Entities/Objects/Devices/forensic_scanner.yml b/Resources/Prototypes/Entities/Objects/Devices/forensic_scanner.yml index e7c0b14beb..170751766b 100644 --- a/Resources/Prototypes/Entities/Objects/Devices/forensic_scanner.yml +++ b/Resources/Prototypes/Entities/Objects/Devices/forensic_scanner.yml @@ -17,7 +17,7 @@ - type: ActivatableUI key: enum.ForensicScannerUiKey.Key inHandsOnly: true - closeOnHandDeselect: false + requireActiveHand: false - type: UserInterface interfaces: enum.ForensicScannerUiKey.Key: diff --git a/Resources/Prototypes/Entities/Objects/Devices/pda.yml b/Resources/Prototypes/Entities/Objects/Devices/pda.yml index e1efc03993..472d0ecbe1 100644 --- a/Resources/Prototypes/Entities/Objects/Devices/pda.yml +++ b/Resources/Prototypes/Entities/Objects/Devices/pda.yml @@ -86,7 +86,6 @@ - type: ActivatableUI key: enum.PdaUiKey.Key singleUser: true - closeOnHandDeselect: false - type: UserInterface interfaces: enum.PdaUiKey.Key: diff --git a/Resources/Prototypes/Entities/Objects/Misc/books.yml b/Resources/Prototypes/Entities/Objects/Misc/books.yml index e44e981a6c..25e6bb9f94 100644 --- a/Resources/Prototypes/Entities/Objects/Misc/books.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/books.yml @@ -22,7 +22,6 @@ contentSize: 12000 - type: ActivatableUI key: enum.PaperUiKey.Key - closeOnHandDeselect: false - type: UserInterface interfaces: enum.PaperUiKey.Key: diff --git a/Resources/Prototypes/Entities/Objects/Misc/paper.yml b/Resources/Prototypes/Entities/Objects/Misc/paper.yml index 0c87459164..5fa341c976 100644 --- a/Resources/Prototypes/Entities/Objects/Misc/paper.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/paper.yml @@ -18,7 +18,6 @@ - type: PaperLabelType - type: ActivatableUI key: enum.PaperUiKey.Key - closeOnHandDeselect: false requireHands: false - type: UserInterface interfaces: diff --git a/Resources/Prototypes/Entities/Objects/Specific/Medical/handheld_crew_monitor.yml b/Resources/Prototypes/Entities/Objects/Specific/Medical/handheld_crew_monitor.yml index f30e1cf633..19a0b36ee9 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Medical/handheld_crew_monitor.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Medical/handheld_crew_monitor.yml @@ -17,7 +17,6 @@ - type: ActivatableUIRequiresPowerCell - type: ActivatableUI key: enum.CrewMonitoringUIKey.Key - closeOnHandDeselect: false - type: UserInterface interfaces: enum.CrewMonitoringUIKey.Key: diff --git a/Resources/Prototypes/Entities/Objects/Specific/Medical/healthanalyzer.yml b/Resources/Prototypes/Entities/Objects/Specific/Medical/healthanalyzer.yml index 4f8b6f2936..c01aaa84a9 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Medical/healthanalyzer.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Medical/healthanalyzer.yml @@ -17,7 +17,6 @@ storedRotation: -90 - type: ActivatableUI key: enum.HealthAnalyzerUiKey.Key - closeOnHandDeselect: false - type: UserInterface interfaces: enum.HealthAnalyzerUiKey.Key: diff --git a/Resources/Prototypes/Entities/Objects/Specific/Research/anomaly.yml b/Resources/Prototypes/Entities/Objects/Specific/Research/anomaly.yml index 4250d9ccdd..bf0a3be4e5 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Research/anomaly.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Research/anomaly.yml @@ -9,7 +9,7 @@ state: icon - type: ActivatableUI key: enum.AnomalyScannerUiKey.Key - closeOnHandDeselect: false + requireActiveHand: false inHandsOnly: true - type: UserInterface interfaces: diff --git a/Resources/Prototypes/Entities/Objects/Specific/Service/barber.yml b/Resources/Prototypes/Entities/Objects/Specific/Service/barber.yml index d7b0a566e1..251331919e 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Service/barber.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Service/barber.yml @@ -10,7 +10,8 @@ - type: MagicMirror - type: ActivatableUI key: enum.MagicMirrorUiKey.Key - closeOnHandDeselect: true + inHandsOnly: true + requireActiveHand: true - type: UserInterface interfaces: enum.MagicMirrorUiKey.Key: diff --git a/Resources/Prototypes/Entities/Objects/Specific/atmos.yml b/Resources/Prototypes/Entities/Objects/Specific/atmos.yml index acf5f6f240..c67e7ff8c3 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/atmos.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/atmos.yml @@ -13,7 +13,7 @@ - type: ActivatableUI inHandsOnly: true singleUser: true - closeOnHandDeselect: false + requireActiveHand: false key: enum.GasAnalyzerUiKey.Key - type: UserInterface interfaces: diff --git a/Resources/Prototypes/Entities/Objects/Tools/access_configurator.yml b/Resources/Prototypes/Entities/Objects/Tools/access_configurator.yml index b6c7c49855..d63e1f0aa9 100644 --- a/Resources/Prototypes/Entities/Objects/Tools/access_configurator.yml +++ b/Resources/Prototypes/Entities/Objects/Tools/access_configurator.yml @@ -67,7 +67,7 @@ - type: ActivatableUI key: enum.AccessOverriderUiKey.Key requireHands: true - closeOnHandDeselect: false + requireActiveHand: false singleUser: true - type: ItemSlots - type: ContainerContainer From 5f216ef1eefb288a290356f7e665c87bac0610c2 Mon Sep 17 00:00:00 2001 From: PJBot Date: Mon, 29 Apr 2024 04:07:33 +0000 Subject: [PATCH 084/110] Automatic changelog update --- Resources/Changelog/Changelog.yml | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index f584912f58..3804636665 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,14 +1,4 @@ Entries: -- author: Hanzdegloker - changes: - - message: Dept. Heads are now guaranteed to have their respective winter coats - in their dressers - type: Tweak - - message: Standardized the contents of Dept. Heads dressers and lockers - type: Tweak - id: 5987 - time: '2024-02-21T06:26:24.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/25206 - author: deltanedas changes: - message: Added Conducting Gloves to the uplink, they make shocks much worse rather @@ -3871,3 +3861,10 @@ id: 6486 time: '2024-04-29T03:38:45.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/25604 +- author: Potato1234_x + changes: + - message: Added rainbow weed. It is obtained by mutating regular weed. + type: Add + id: 6487 + time: '2024-04-29T04:06:27.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/25759 From eb41f1da5fd6cf5aec3e596dd1b6f381e037836c Mon Sep 17 00:00:00 2001 From: Gotimanga <127038462+Gotimanga@users.noreply.github.com> Date: Mon, 29 Apr 2024 05:13:14 +0100 Subject: [PATCH 085/110] Adding new Cryogenics Reagent - Opporozidone (Attempt 2) (#24074) * Fixing mistakes * How did I make the same mistake twice --------- Co-authored-by: Kara --- Content.Server/Atmos/Rotting/RottingSystem.cs | 23 ++++++++++++++ .../Chemistry/ReagentEffects/ReduceRotting.cs | 31 +++++++++++++++++++ .../en-US/guidebook/chemistry/effects.ftl | 6 ++++ .../Locale/en-US/reagents/meta/medicine.ftl | 3 ++ Resources/Prototypes/Reagents/medicine.yml | 21 +++++++++++++ .../Prototypes/Recipes/Reactions/medicine.yml | 13 ++++++++ 6 files changed, 97 insertions(+) create mode 100644 Content.Server/Chemistry/ReagentEffects/ReduceRotting.cs diff --git a/Content.Server/Atmos/Rotting/RottingSystem.cs b/Content.Server/Atmos/Rotting/RottingSystem.cs index 47bac84e0c..dd6387ff44 100644 --- a/Content.Server/Atmos/Rotting/RottingSystem.cs +++ b/Content.Server/Atmos/Rotting/RottingSystem.cs @@ -149,6 +149,29 @@ public sealed class RottingSystem : SharedRottingSystem args.Handled = component.CurrentTemperature < Atmospherics.T0C + 0.85f; } + + public void ReduceAccumulator(EntityUid uid, TimeSpan time) + { + if (!TryComp(uid, out var perishable)) + return; + + if (!TryComp(uid, out var rotting)) + { + perishable.RotAccumulator -= time; + return; + } + var total = (rotting.TotalRotTime + perishable.RotAccumulator) - time; + + if (total < perishable.RotAfter) + { + RemCompDeferred(uid, rotting); + perishable.RotAccumulator = total; + } + + else + rotting.TotalRotTime = total - perishable.RotAfter; + } + /// -[Prototype("emoteSounds")] -public sealed partial class EmoteSoundsPrototype : IPrototype +[Prototype("emoteSounds"), Serializable, NetSerializable] +public sealed class EmoteSoundsPrototype : IPrototype { [IdDataField] public string ID { get; private set; } = default!; diff --git a/Content.Shared/Input/ContentKeyFunctions.cs b/Content.Shared/Input/ContentKeyFunctions.cs index 886a0d5d3a..2dd671816f 100644 --- a/Content.Shared/Input/ContentKeyFunctions.cs +++ b/Content.Shared/Input/ContentKeyFunctions.cs @@ -25,6 +25,7 @@ namespace Content.Shared.Input public static readonly BoundKeyFunction CycleChatChannelBackward = "CycleChatChannelBackward"; public static readonly BoundKeyFunction EscapeContext = "EscapeContext"; public static readonly BoundKeyFunction OpenCharacterMenu = "OpenCharacterMenu"; + public static readonly BoundKeyFunction OpenEmotesMenu = "OpenEmotesMenu"; public static readonly BoundKeyFunction OpenCraftingMenu = "OpenCraftingMenu"; public static readonly BoundKeyFunction OpenGuidebook = "OpenGuidebook"; public static readonly BoundKeyFunction OpenInventoryMenu = "OpenInventoryMenu"; diff --git a/Content.Server/Speech/Components/VocalComponent.cs b/Content.Shared/Speech/Components/VocalComponent.cs similarity index 83% rename from Content.Server/Speech/Components/VocalComponent.cs rename to Content.Shared/Speech/Components/VocalComponent.cs index 029d638a66..e5d2c9997f 100644 --- a/Content.Server/Speech/Components/VocalComponent.cs +++ b/Content.Shared/Speech/Components/VocalComponent.cs @@ -1,18 +1,18 @@ -using Content.Server.Speech.EntitySystems; using Content.Shared.Chat.Prototypes; using Content.Shared.Humanoid; using Robust.Shared.Audio; +using Robust.Shared.GameStates; using Robust.Shared.Prototypes; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.Dictionary; -namespace Content.Server.Speech.Components; +namespace Content.Shared.Speech.Components; /// /// Component required for entities to be able to do vocal emotions. /// -[RegisterComponent] -[Access(typeof(VocalSystem))] +[RegisterComponent, NetworkedComponent] +[AutoGenerateComponentState] public sealed partial class VocalComponent : Component { /// @@ -20,21 +20,27 @@ public sealed partial class VocalComponent : Component /// Entities without considered to be . /// [DataField("sounds", customTypeSerializer: typeof(PrototypeIdValueDictionarySerializer))] + [AutoNetworkedField] public Dictionary? Sounds; [DataField("screamId", customTypeSerializer: typeof(PrototypeIdSerializer))] + [AutoNetworkedField] public string ScreamId = "Scream"; [DataField("wilhelm")] + [AutoNetworkedField] public SoundSpecifier Wilhelm = new SoundPathSpecifier("/Audio/Voice/Human/wilhelm_scream.ogg"); [DataField("wilhelmProbability")] + [AutoNetworkedField] public float WilhelmProbability = 0.0002f; [DataField("screamAction", customTypeSerializer: typeof(PrototypeIdSerializer))] + [AutoNetworkedField] public string ScreamAction = "ActionScream"; [DataField("screamActionEntity")] + [AutoNetworkedField] public EntityUid? ScreamActionEntity; /// @@ -42,5 +48,6 @@ public sealed partial class VocalComponent : Component /// Null if no valid prototype for entity sex was found. /// [ViewVariables] + [AutoNetworkedField] public EmoteSoundsPrototype? EmoteSounds = null; } diff --git a/Content.Shared/Speech/SpeechComponent.cs b/Content.Shared/Speech/SpeechComponent.cs index 272d9ef8ca..0882120718 100644 --- a/Content.Shared/Speech/SpeechComponent.cs +++ b/Content.Shared/Speech/SpeechComponent.cs @@ -1,3 +1,4 @@ +using Content.Shared.Chat.Prototypes; using Robust.Shared.Audio; using Robust.Shared.GameStates; using Robust.Shared.Prototypes; @@ -26,6 +27,13 @@ namespace Content.Shared.Speech [DataField] public ProtoId SpeechVerb = "Default"; + /// + /// What emotes allowed to use event if emote is false + /// + [ViewVariables(VVAccess.ReadWrite)] + [DataField] + public List> AllowedEmotes = new(); + /// private void ResetTimer(BasicStationEventSchedulerComponent component) { - // 5 - 25 minutes. TG does 3-10 but that's pretty frequent - component.TimeUntilNextEvent = _random.Next(300, 1500); + component.TimeUntilNextEvent = _random.Next(3 * 60, 10 * 60); } } From 7dae58c9f84e3ebaeaebaa09e51626f35675e55d Mon Sep 17 00:00:00 2001 From: Plykiya <58439124+Plykiya@users.noreply.github.com> Date: Sun, 28 Apr 2024 23:38:38 -0700 Subject: [PATCH 098/110] Late join thieves! (#27466) Co-authored-by: Plykiya --- Resources/Prototypes/GameRules/midround.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/Resources/Prototypes/GameRules/midround.yml b/Resources/Prototypes/GameRules/midround.yml index 7d074f97e4..428735709f 100644 --- a/Resources/Prototypes/GameRules/midround.yml +++ b/Resources/Prototypes/GameRules/midround.yml @@ -41,6 +41,7 @@ min: 1 max: 3 playerRatio: 1 + lateJoinAdditional: true allowNonHumans: true multiAntagSetting: All startingGear: ThiefGear From 0ab5696391652a5d5aeba37a15baf4c61d7780a8 Mon Sep 17 00:00:00 2001 From: PJBot Date: Mon, 29 Apr 2024 06:39:45 +0000 Subject: [PATCH 099/110] Automatic changelog update --- Resources/Changelog/Changelog.yml | 32 ++++++++++++++----------------- 1 file changed, 14 insertions(+), 18 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index b45bf64216..5b62261360 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,22 +1,4 @@ Entries: -- author: EdenTheLiznerd - changes: - - message: Nettles are now weaker than their deathnettle counterparts - type: Tweak - id: 5993 - time: '2024-02-21T06:42:52.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/25177 -- author: potato1234x - changes: - - message: Added spaceman's trumpets which come from mutated lilies and can be ground - up into Polypyrylium Oligomers which are is just slightly better bic. - type: Add - - message: Added lilies which are mutated from poppies and are used to create spaceman's - trumpets. - type: Add - id: 5994 - time: '2024-02-21T06:49:39.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/25090 - author: FungiFellow changes: - message: Death Acidifer Price 2->4 @@ -3869,3 +3851,17 @@ id: 6492 time: '2024-04-29T04:52:35.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/27441 +- author: mirrorcult + changes: + - message: Random events should now occur much more frequently + type: Tweak + id: 6493 + time: '2024-04-29T06:38:15.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/27469 +- author: Plykiya + changes: + - message: Latejoin players now have a chance to roll thief. + type: Add + id: 6494 + time: '2024-04-29T06:38:38.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/27466 From 6471f55a49c2548e437a1a101f92c3416c676893 Mon Sep 17 00:00:00 2001 From: Leon Friedrich <60421075+ElectroJr@users.noreply.github.com> Date: Mon, 29 Apr 2024 20:36:18 +1200 Subject: [PATCH 100/110] Action UI fixes (#27468) --- .../Systems/Actions/ActionUIController.cs | 108 +++++++++--------- .../Systems/Actions/Controls/ActionButton.cs | 30 +++-- 2 files changed, 70 insertions(+), 68 deletions(-) diff --git a/Content.Client/UserInterface/Systems/Actions/ActionUIController.cs b/Content.Client/UserInterface/Systems/Actions/ActionUIController.cs index c79f0f80f9..5d9706452c 100644 --- a/Content.Client/UserInterface/Systems/Actions/ActionUIController.cs +++ b/Content.Client/UserInterface/Systems/Actions/ActionUIController.cs @@ -15,6 +15,7 @@ using Content.Shared.Actions; using Content.Shared.Input; using Robust.Client.GameObjects; using Robust.Client.Graphics; +using Robust.Client.Input; using Robust.Client.Player; using Robust.Client.UserInterface; using Robust.Client.UserInterface.Controllers; @@ -42,6 +43,7 @@ public sealed class ActionUIController : UIController, IOnStateChanged position && position >= 0) + _actions.RemoveAt(position); } } else if (button.TryReplaceWith(actionId.Value, _actionsSystem) && @@ -539,23 +546,22 @@ public sealed class ActionUIController : UIController, IOnStateChanged - { - Depress(args, true); - OnPressed(args); - }; - OnKeyBindUp += args => - { - Depress(args, false); - OnUnpressed(args); - }; + OnKeyBindDown += OnPressed; + OnKeyBindUp += OnUnpressed; TooltipSupplier = SupplyTooltip; } @@ -175,11 +167,23 @@ public sealed class ActionButton : Control, IEntityControl private void OnPressed(GUIBoundKeyEventArgs args) { + if (args.Function != EngineKeyFunctions.UIClick && args.Function != EngineKeyFunctions.UIRightClick) + return; + + if (args.Function == EngineKeyFunctions.UIRightClick) + Depress(args, true); + ActionPressed?.Invoke(args, this); } private void OnUnpressed(GUIBoundKeyEventArgs args) { + if (args.Function != EngineKeyFunctions.UIClick && args.Function != EngineKeyFunctions.UIRightClick) + return; + + if (args.Function == EngineKeyFunctions.UIRightClick) + Depress(args, false); + ActionUnpressed?.Invoke(args, this); } @@ -378,12 +382,6 @@ public sealed class ActionButton : Control, IEntityControl if (_action is not {Enabled: true}) return; - if (_depressed && !depress) - { - // fire the action - OnUnpressed(args); - } - _depressed = depress; DrawModeChanged(); } From 5aece1679a89d25c0a2a4c5214eb4b1f53cad33c Mon Sep 17 00:00:00 2001 From: PJBot Date: Mon, 29 Apr 2024 08:37:24 +0000 Subject: [PATCH 101/110] Automatic changelog update --- Resources/Changelog/Changelog.yml | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 5b62261360..9ee620bd79 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,13 +1,4 @@ Entries: -- author: FungiFellow - changes: - - message: Death Acidifer Price 2->4 - type: Tweak - - message: Removed Acidifier from Syndie Uplink - type: Remove - id: 5995 - time: '2024-02-21T06:51:11.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/25039 - author: Aquif changes: - message: Admins can now disable the bwoink sound if they don't want to scare players. @@ -3865,3 +3856,10 @@ id: 6494 time: '2024-04-29T06:38:38.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/27466 +- author: ElectroJr + changes: + - message: Fixed actions sometimes disappearing from the hotbar when double clicking + type: Fix + id: 6495 + time: '2024-04-29T08:36:18.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/27468 From 6d619c942071390243d101d02f492ae038152305 Mon Sep 17 00:00:00 2001 From: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> Date: Mon, 29 Apr 2024 18:41:58 +1000 Subject: [PATCH 102/110] Tippy fixes (#27475) How does that UISystemDependency not crash. --- Content.Client/Tips/TippyUIController.cs | 11 ++++------- Content.Client/Tips/TipsSystem.cs | 20 -------------------- Content.Server/Tips/TipsSystem.cs | 1 - 3 files changed, 4 insertions(+), 28 deletions(-) delete mode 100644 Content.Client/Tips/TipsSystem.cs diff --git a/Content.Client/Tips/TippyUIController.cs b/Content.Client/Tips/TippyUIController.cs index ad5a3fbcfb..67c3ee45a7 100644 --- a/Content.Client/Tips/TippyUIController.cs +++ b/Content.Client/Tips/TippyUIController.cs @@ -23,13 +23,9 @@ namespace Content.Client.Tips; public sealed class TippyUIController : UIController { - [Dependency] private readonly IStateManager _state = default!; - [Dependency] private readonly IConsoleHost _conHost = default!; - [Dependency] private readonly IPrototypeManager _protoMan = default!; [Dependency] private readonly IConfigurationManager _cfg = default!; [Dependency] private readonly IResourceCache _resCache = default!; [UISystemDependency] private readonly AudioSystem _audio = default!; - [UISystemDependency] private readonly EntityManager _entSys = default!; public const float Padding = 50; public static Angle WaddleRotation = Angle.FromDegrees(10); @@ -44,11 +40,12 @@ public sealed class TippyUIController : UIController { base.Initialize(); UIManager.OnScreenChanged += OnScreenChanged; + SubscribeNetworkEvent(OnTippyEvent); } - public void AddMessage(TippyEvent ev) + private void OnTippyEvent(TippyEvent msg, EntitySessionEventArgs args) { - _queuedMessages.Enqueue(ev); + _queuedMessages.Enqueue(msg); } public override void FrameUpdate(FrameEventArgs args) @@ -146,7 +143,7 @@ public sealed class TippyUIController : UIController return; if (!EntityManager.HasComponent(_entity)) { - var paper = EntityManager.AddComponent(_entity); + var paper = EntityManager.AddComponent(_entity); paper.BackgroundImagePath = "/Textures/Interface/Paper/paper_background_default.svg.96dpi.png"; paper.BackgroundPatchMargin = new(16f, 16f, 16f, 16f); paper.BackgroundModulate = new(255, 255, 204); diff --git a/Content.Client/Tips/TipsSystem.cs b/Content.Client/Tips/TipsSystem.cs deleted file mode 100644 index f9376a7005..0000000000 --- a/Content.Client/Tips/TipsSystem.cs +++ /dev/null @@ -1,20 +0,0 @@ -using Content.Shared.Tips; -using Robust.Client.UserInterface; - -namespace Content.Client.Tips; - -public sealed class TipsSystem : EntitySystem -{ - [Dependency] private readonly IUserInterfaceManager _uiMan = default!; - public override void Initialize() - { - base.Initialize(); - - SubscribeNetworkEvent(OnClippyEv); - } - - private void OnClippyEv(TippyEvent ev) - { - _uiMan.GetUIController().AddMessage(ev); - } -} diff --git a/Content.Server/Tips/TipsSystem.cs b/Content.Server/Tips/TipsSystem.cs index ccc732623b..168f11de8f 100644 --- a/Content.Server/Tips/TipsSystem.cs +++ b/Content.Server/Tips/TipsSystem.cs @@ -115,7 +115,6 @@ public sealed class TipsSystem : EntitySystem var ev = new TippyEvent(args[1]); - string proto; if (args.Length > 2) { ev.Proto = args[2]; From 3c154abb5bd9a1e21e3d2f3efb61c338bb6cd608 Mon Sep 17 00:00:00 2001 From: Leon Friedrich <60421075+ElectroJr@users.noreply.github.com> Date: Mon, 29 Apr 2024 20:43:15 +1200 Subject: [PATCH 103/110] Content changes for engine exception tolerance PR (#27455) * Content changes for engine exception tolerance PR * Poke tests --- Content.Client/Eye/EyeLerpingSystem.cs | 2 +- .../ReplaySpectatorSystem.Position.cs | 2 +- .../Atmos/EntitySystems/AirtightSystem.cs | 35 +++++++------------ .../Systems/SharedMoverController.Input.cs | 2 +- Content.Shared/Stealth/SharedStealthSystem.cs | 2 +- 5 files changed, 17 insertions(+), 26 deletions(-) diff --git a/Content.Client/Eye/EyeLerpingSystem.cs b/Content.Client/Eye/EyeLerpingSystem.cs index 78e1b851fc..ac32299dca 100644 --- a/Content.Client/Eye/EyeLerpingSystem.cs +++ b/Content.Client/Eye/EyeLerpingSystem.cs @@ -86,7 +86,7 @@ public sealed class EyeLerpingSystem : EntitySystem private void HandleMapChange(EntityUid uid, LerpingEyeComponent component, ref EntParentChangedMessage args) { // Is this actually a map change? If yes, stop any lerps - if (args.OldMapId != args.Transform.MapID) + if (args.OldMapId != args.Transform.MapUid) component.LastRotation = GetRotation(uid, args.Transform); } diff --git a/Content.Client/Replay/Spectator/ReplaySpectatorSystem.Position.cs b/Content.Client/Replay/Spectator/ReplaySpectatorSystem.Position.cs index 24f0e8a1d3..d00e319eed 100644 --- a/Content.Client/Replay/Spectator/ReplaySpectatorSystem.Position.cs +++ b/Content.Client/Replay/Spectator/ReplaySpectatorSystem.Position.cs @@ -195,7 +195,7 @@ public sealed partial class ReplaySpectatorSystem if (uid != _player.LocalEntity) return; - if (args.Transform.MapUid != null || args.OldMapId == MapId.Nullspace) + if (args.Transform.MapUid != null || args.OldMapId == null) return; if (_spectatorData != null) diff --git a/Content.Server/Atmos/EntitySystems/AirtightSystem.cs b/Content.Server/Atmos/EntitySystems/AirtightSystem.cs index 60d90e1e60..5a9134e3b4 100644 --- a/Content.Server/Atmos/EntitySystems/AirtightSystem.cs +++ b/Content.Server/Atmos/EntitySystems/AirtightSystem.cs @@ -25,16 +25,19 @@ namespace Content.Server.Atmos.EntitySystems private void OnAirtightInit(Entity airtight, ref ComponentInit args) { - var xform = EntityManager.GetComponent(airtight); - - if (airtight.Comp.FixAirBlockedDirectionInitialize) + // TODO AIRTIGHT what FixAirBlockedDirectionInitialize even for? + if (!airtight.Comp.FixAirBlockedDirectionInitialize) { - var moveEvent = new MoveEvent(airtight, default, default, Angle.Zero, xform.LocalRotation, xform, false); - if (AirtightMove(airtight, ref moveEvent)) - return; + UpdatePosition(airtight); + return; } - UpdatePosition(airtight); + var xform = Transform(airtight); + airtight.Comp.CurrentAirBlockedDirection = + (int) Rotate((AtmosDirection) airtight.Comp.InitialAirBlockedDirection, xform.LocalRotation); + UpdatePosition(airtight, xform); + var airtightEv = new AirtightChanged(airtight, airtight, default); + RaiseLocalEvent(airtight, ref airtightEv, true); } private void OnAirtightShutdown(Entity airtight, ref ComponentShutdown args) @@ -42,13 +45,8 @@ namespace Content.Server.Atmos.EntitySystems var xform = Transform(airtight); // If the grid is deleting no point updating atmos. - if (HasComp(xform.GridUid) && - MetaData(xform.GridUid.Value).EntityLifeStage > EntityLifeStage.MapInitialized) - { - return; - } - - SetAirblocked(airtight, false, xform); + if (xform.GridUid != null && LifeStage(xform.GridUid.Value) <= EntityLifeStage.MapInitialized) + SetAirblocked(airtight, false, xform); } private void OnAirtightPositionChanged(EntityUid uid, AirtightComponent airtight, ref AnchorStateChangedEvent args) @@ -83,21 +81,14 @@ namespace Content.Server.Atmos.EntitySystems } } - private void OnAirtightMoved(Entity airtight, ref MoveEvent ev) - { - AirtightMove(airtight, ref ev); - } - - private bool AirtightMove(Entity ent, ref MoveEvent ev) + private void OnAirtightMoved(Entity ent, ref MoveEvent ev) { var (owner, airtight) = ent; - airtight.CurrentAirBlockedDirection = (int) Rotate((AtmosDirection)airtight.InitialAirBlockedDirection, ev.NewRotation); var pos = airtight.LastPosition; UpdatePosition(ent, ev.Component); var airtightEv = new AirtightChanged(owner, airtight, pos); RaiseLocalEvent(owner, ref airtightEv, true); - return true; } public void SetAirblocked(Entity airtight, bool airblocked, TransformComponent? xform = null) diff --git a/Content.Shared/Movement/Systems/SharedMoverController.Input.cs b/Content.Shared/Movement/Systems/SharedMoverController.Input.cs index bce3aeff52..ba175b345f 100644 --- a/Content.Shared/Movement/Systems/SharedMoverController.Input.cs +++ b/Content.Shared/Movement/Systems/SharedMoverController.Input.cs @@ -259,7 +259,7 @@ namespace Content.Shared.Movement.Systems } var oldMapId = args.OldMapId; - var mapId = args.Transform.MapID; + var mapId = args.Transform.MapUid; // If we change maps then reset eye rotation entirely. if (oldMapId != mapId) diff --git a/Content.Shared/Stealth/SharedStealthSystem.cs b/Content.Shared/Stealth/SharedStealthSystem.cs index d0ea804534..1bab55589f 100644 --- a/Content.Shared/Stealth/SharedStealthSystem.cs +++ b/Content.Shared/Stealth/SharedStealthSystem.cs @@ -113,7 +113,7 @@ public abstract class SharedStealthSystem : EntitySystem private void OnMove(EntityUid uid, StealthOnMoveComponent component, ref MoveEvent args) { - if (args.FromStateHandling) + if (_timing.ApplyingState) return; if (args.NewPosition.EntityId != args.OldPosition.EntityId) From 569253940ff12a827f30062399b3c0475dc25b50 Mon Sep 17 00:00:00 2001 From: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> Date: Mon, 29 Apr 2024 19:09:43 +1000 Subject: [PATCH 104/110] Update submodule to 221.0.0 (#27477) --- RobustToolbox | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/RobustToolbox b/RobustToolbox index 3330d96177..8550056e68 160000 --- a/RobustToolbox +++ b/RobustToolbox @@ -1 +1 @@ -Subproject commit 3330d9617728534bfef313201de0327c4e7f0627 +Subproject commit 8550056e685e6b758f460c18f5863b37787d3093 From e2087115af9a5d4a2062fd640886dfcee9e5814e Mon Sep 17 00:00:00 2001 From: Nemanja <98561806+EmoGarbage404@users.noreply.github.com> Date: Mon, 29 Apr 2024 05:11:07 -0400 Subject: [PATCH 105/110] Fix position swapping with QSI and artifacts (#26364) --- .../Effects/Systems/PortalArtifactSystem.cs | 3 +-- .../Effects/Systems/ShuffleArtifactSystem.cs | 11 ++++++----- .../Teleportation/Systems/SwapTeleporterSystem.cs | 15 +-------------- 3 files changed, 8 insertions(+), 21 deletions(-) diff --git a/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Systems/PortalArtifactSystem.cs b/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Systems/PortalArtifactSystem.cs index e2d2172355..e44ee6baa1 100644 --- a/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Systems/PortalArtifactSystem.cs +++ b/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Systems/PortalArtifactSystem.cs @@ -35,8 +35,7 @@ public sealed class PortalArtifactSystem : EntitySystem var secondPortal = Spawn(artifact.Comp.PortalProto, _transform.GetMapCoordinates(target)); //Manual position swapping, because the portal that opens doesn't trigger a collision, and doesn't teleport targets the first time. - _transform.SetCoordinates(artifact, Transform(secondPortal).Coordinates); - _transform.SetCoordinates(target, Transform(firstPortal).Coordinates); + _transform.SwapPositions(target, secondPortal); _link.TryLink(firstPortal, secondPortal, true); } diff --git a/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Systems/ShuffleArtifactSystem.cs b/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Systems/ShuffleArtifactSystem.cs index b977cb038c..c39627818a 100644 --- a/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Systems/ShuffleArtifactSystem.cs +++ b/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Systems/ShuffleArtifactSystem.cs @@ -22,7 +22,6 @@ public sealed class ShuffleArtifactSystem : EntitySystem { var mobState = GetEntityQuery(); - List allCoords = new(); List> toShuffle = new(); foreach (var ent in _lookup.GetEntitiesInRange(uid, component.Radius, LookupFlags.Dynamic | LookupFlags.Sundries)) @@ -33,13 +32,15 @@ public sealed class ShuffleArtifactSystem : EntitySystem var xform = Transform(ent); toShuffle.Add((ent, xform)); - allCoords.Add(xform.Coordinates); } - foreach (var xform in toShuffle) + _random.Shuffle(toShuffle); + + while (toShuffle.Count > 1) { - var xformUid = xform.Owner; - _xform.SetCoordinates(xformUid, xform, _random.PickAndTake(allCoords)); + var ent1 = _random.PickAndTake(toShuffle); + var ent2 = _random.PickAndTake(toShuffle); + _xform.SwapPositions((ent1, ent1), (ent2, ent2)); } } } diff --git a/Content.Shared/Teleportation/Systems/SwapTeleporterSystem.cs b/Content.Shared/Teleportation/Systems/SwapTeleporterSystem.cs index e69a31a1d4..62c0b0f44e 100644 --- a/Content.Shared/Teleportation/Systems/SwapTeleporterSystem.cs +++ b/Content.Shared/Teleportation/Systems/SwapTeleporterSystem.cs @@ -145,27 +145,14 @@ public sealed class SwapTeleporterSystem : EntitySystem } var teleEnt = GetTeleportingEntity((uid, xform)); - var teleEntXform = Transform(teleEnt); var otherTeleEnt = GetTeleportingEntity((linkedEnt, Transform(linkedEnt))); - var otherTeleEntXform = Transform(otherTeleEnt); _popup.PopupEntity(Loc.GetString("swap-teleporter-popup-teleport-other", ("entity", Identity.Entity(linkedEnt, EntityManager))), otherTeleEnt, otherTeleEnt, PopupType.MediumCaution); - var pos = teleEntXform.Coordinates; - var otherPos = otherTeleEntXform.Coordinates; - - if (_transform.ContainsEntity(teleEnt, (otherTeleEnt, otherTeleEntXform)) || - _transform.ContainsEntity(otherTeleEnt, (teleEnt, teleEntXform))) - { - Log.Error($"Invalid teleport swap attempt between {ToPrettyString(teleEnt)} and {ToPrettyString(otherTeleEnt)}"); - return; - } - - _transform.SetCoordinates(teleEnt, otherPos); - _transform.SetCoordinates(otherTeleEnt, pos); + _transform.SwapPositions(teleEnt, otherTeleEnt); } /// From 386454706b71bd047dc14abd869b9c0dea2a8e18 Mon Sep 17 00:00:00 2001 From: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> Date: Mon, 29 Apr 2024 19:54:40 +1000 Subject: [PATCH 106/110] Fix snappop (#27264) * Fix snappop Bunch of stuff slipped through. * name --- .../Entities/Objects/Fun/snap_pops.yml | 7 +-- .../Entities/Objects/Tools/decoys.yml | 47 ++++--------------- Resources/Prototypes/tags.yml | 3 -- 3 files changed, 11 insertions(+), 46 deletions(-) diff --git a/Resources/Prototypes/Entities/Objects/Fun/snap_pops.yml b/Resources/Prototypes/Entities/Objects/Fun/snap_pops.yml index a39c2f881a..88f0758874 100644 --- a/Resources/Prototypes/Entities/Objects/Fun/snap_pops.yml +++ b/Resources/Prototypes/Entities/Objects/Fun/snap_pops.yml @@ -33,15 +33,12 @@ maxIntensity: 0.01 intensitySlope: 1 totalIntensity: 0.01 - - type: Tag - tags: - - SnapPop - type: entity parent: BaseStorageItem id: SnapPopBox name: snap pop box - description: Contains twenty snap pops for a few minutes of popping fun! + description: Contains snap pops for a few minutes of popping fun! components: - type: Item size: Normal @@ -56,6 +53,6 @@ - type: StorageFill contents: - id: SnapPop - amount: 20 + amount: 5 - type: Dumpable diff --git a/Resources/Prototypes/Entities/Objects/Tools/decoys.yml b/Resources/Prototypes/Entities/Objects/Tools/decoys.yml index 0074fe517d..d399b77d02 100644 --- a/Resources/Prototypes/Entities/Objects/Tools/decoys.yml +++ b/Resources/Prototypes/Entities/Objects/Tools/decoys.yml @@ -48,6 +48,15 @@ - type: ContainerContainer containers: cell_slot: !type:ContainerSlot + - type: HandheldLight + addPrefix: false + - type: PointLight # Just like the real thing... + autoRot: true + radius: 1.5 + energy: 2.3 + offset: 0, -1 + color: green + netsync: false - type: Tag tags: - Balloon @@ -59,8 +68,6 @@ name: operative balloon description: Upon closer inspection, this Syndicate operative is actually a balloon. components: - - type: HandheldLight - addPrefix: false - type: Sprite sprite: Objects/Tools/Decoys/operative_decoy.rsi layers: @@ -69,13 +76,6 @@ - state: folded map: ["foldedLayer"] visible: false - - type: PointLight # Just like the real thing... - autoRot: true - radius: 1.5 - energy: 2.3 - offset: 0, -1 - color: green - netsync: false - type: entity parent: BaseDecoy @@ -83,8 +83,6 @@ name: agent balloon description: Upon closer inspection, this Syndicate agent is actually a balloon. components: - - type: HandheldLight - addPrefix: false - type: Sprite sprite: Objects/Tools/Decoys/agent_decoy.rsi layers: @@ -93,12 +91,6 @@ - state: folded map: ["foldedLayer"] visible: false - - type: PointLight - radius: 1.5 - energy: 2.3 - offset: 0, -1 - color: green - netsync: false - type: entity parent: BaseDecoy @@ -106,8 +98,6 @@ name: elite operative balloon description: Upon closer inspection, this Syndicate elite operative is actually a balloon. components: - - type: HandheldLight - addPrefix: false - type: Sprite sprite: Objects/Tools/Decoys/elite_decoy.rsi layers: @@ -117,11 +107,7 @@ map: ["foldedLayer"] visible: false - type: PointLight - radius: 1.5 - energy: 2.3 - offset: 0, -1 color: red - netsync: false - type: entity parent: BaseDecoy @@ -129,8 +115,6 @@ name: juggernaut balloon description: Upon closer inspection, this Syndicate juggernaut is actually a balloon. components: - - type: HandheldLight - addPrefix: false - type: Sprite sprite: Objects/Tools/Decoys/juggernaut_decoy.rsi layers: @@ -139,11 +123,6 @@ - state: folded map: ["foldedLayer"] visible: false - - type: PointLight # Inbuilt flashlight, I guess? - radius: 1.5 - energy: 2.3 - offset: 0, -1 - netsync: false - type: entity parent: BaseDecoy @@ -151,8 +130,6 @@ name: commander balloon description: Upon closer inspection, this Syndicate commander is actually a balloon. components: - - type: HandheldLight - addPrefix: false - type: Sprite sprite: Objects/Tools/Decoys/commander_decoy.rsi layers: @@ -161,9 +138,3 @@ - state: folded map: ["foldedLayer"] visible: false - - type: PointLight - radius: 1.5 - energy: 2.3 - offset: 0, -1 - color: green - netsync: false diff --git a/Resources/Prototypes/tags.yml b/Resources/Prototypes/tags.yml index f4477a8c85..f947332764 100644 --- a/Resources/Prototypes/tags.yml +++ b/Resources/Prototypes/tags.yml @@ -1128,9 +1128,6 @@ - type: Tag id: Smokable -- type: Tag - id: SnapPop - - type: Tag id: SnowyLabs From 6b5e99f5eb885faae202078167d8402350446f5a Mon Sep 17 00:00:00 2001 From: DrSmugleaf <10968691+DrSmugleaf@users.noreply.github.com> Date: Mon, 29 Apr 2024 06:12:29 -0700 Subject: [PATCH 107/110] Make bullets inherit the velocity of the grid, not the gun or player (#27484) --- Content.Server/Weapons/Ranged/Systems/GunSystem.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Content.Server/Weapons/Ranged/Systems/GunSystem.cs b/Content.Server/Weapons/Ranged/Systems/GunSystem.cs index f5f4e3f199..7449b0c59e 100644 --- a/Content.Server/Weapons/Ranged/Systems/GunSystem.cs +++ b/Content.Server/Weapons/Ranged/Systems/GunSystem.cs @@ -105,7 +105,7 @@ public sealed partial class GunSystem : SharedGunSystem // Update shot based on the recoil toMap = fromMap.Position + angle.ToVec() * mapDirection.Length(); mapDirection = toMap - fromMap.Position; - var gunVelocity = Physics.GetMapLinearVelocity(gunUid); + var gunVelocity = Physics.GetMapLinearVelocity(fromEnt); // I must be high because this was getting tripped even when true. // DebugTools.Assert(direction != Vector2.Zero); From bf8002569cb47dfb7e84376b7050dc11dd2a70ee Mon Sep 17 00:00:00 2001 From: Ed <96445749+TheShuEd@users.noreply.github.com> Date: Mon, 29 Apr 2024 16:12:42 +0300 Subject: [PATCH 108/110] Throwing into disposals logic splitting (#27487) * wtf * fix --- .../ThrowInsertContainerComponent.cs | 35 ++++++++++++ .../Containers/ThrowInsertContainerSystem.cs | 53 +++++++++++++++++++ .../Unit/EntitySystems/DisposalUnitSystem.cs | 36 ------------- .../Components/SharedDisposalUnitComponent.cs | 7 --- .../Locale/en-US/containers/containers.ftl | 3 ++ .../components/disposal-unit-component.ftl | 3 -- .../Structures/Piping/Disposal/units.yml | 2 + 7 files changed, 93 insertions(+), 46 deletions(-) create mode 100644 Content.Server/Containers/ThrowInsertContainerComponent.cs create mode 100644 Content.Server/Containers/ThrowInsertContainerSystem.cs diff --git a/Content.Server/Containers/ThrowInsertContainerComponent.cs b/Content.Server/Containers/ThrowInsertContainerComponent.cs new file mode 100644 index 0000000000..8aa2927773 --- /dev/null +++ b/Content.Server/Containers/ThrowInsertContainerComponent.cs @@ -0,0 +1,35 @@ +using Robust.Shared.Audio; + +namespace Content.Server.Containers; + +/// +/// Allows objects to fall inside the Container when thrown +/// +[RegisterComponent] +[Access(typeof(ThrowInsertContainerSystem))] +public sealed partial class ThrowInsertContainerComponent : Component +{ + [DataField(required: true)] + public string? ContainerId; + + /// + /// Throw chance of hitting into the container + /// + [DataField] + public float Probability = 0.75f; + + /// + /// Sound played when an object is throw into the container. + /// + [DataField] + public SoundSpecifier? InsertSound = new SoundPathSpecifier("/Audio/Effects/trashbag1.ogg"); + + /// + /// Sound played when an item is thrown and misses the container. + /// + [DataField] + public SoundSpecifier? MissSound = new SoundPathSpecifier("/Audio/Effects/thudswoosh.ogg"); + + [DataField] + public LocId MissLocString = "container-thrown-missed"; +} diff --git a/Content.Server/Containers/ThrowInsertContainerSystem.cs b/Content.Server/Containers/ThrowInsertContainerSystem.cs new file mode 100644 index 0000000000..781b808ef9 --- /dev/null +++ b/Content.Server/Containers/ThrowInsertContainerSystem.cs @@ -0,0 +1,53 @@ +using Content.Server.Administration.Logs; +using Content.Shared.Database; +using Content.Shared.Popups; +using Content.Shared.Throwing; +using Robust.Shared.Audio.Systems; +using Robust.Shared.Containers; +using Robust.Shared.Random; + +namespace Content.Server.Containers; + +public sealed class ThrowInsertContainerSystem : EntitySystem +{ + [Dependency] private readonly IAdminLogManager _adminLogger = default!; + [Dependency] private readonly SharedAudioSystem _audio = default!; + [Dependency] private readonly SharedContainerSystem _containerSystem = default!; + [Dependency] private readonly SharedPopupSystem _popup = default!; + [Dependency] private readonly IRobustRandom _random = default!; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnThrowCollide); + } + + private void OnThrowCollide(Entity ent, ref ThrowHitByEvent args) + { + if (ent.Comp.ContainerId == null) + return; + + var container = _containerSystem.GetContainer(ent, ent.Comp.ContainerId); + + if (!_containerSystem.CanInsert(args.Thrown, container)) + return; + + + var rand = _random.NextFloat(); + if (rand > ent.Comp.Probability) + { + _audio.PlayPvs(ent.Comp.MissSound, ent); + _popup.PopupEntity(Loc.GetString(ent.Comp.MissLocString), ent); + return; + } + + if (_containerSystem.Insert(args.Thrown, container)) + _audio.PlayPvs(ent.Comp.InsertSound, ent); + else + throw new InvalidOperationException("Container insertion failed but CanInsert returned true"); + + if (args.Component.Thrower != null) + _adminLogger.Add(LogType.Landed, LogImpact.Low, $"{ToPrettyString(args.Thrown)} thrown by {ToPrettyString(args.Component.Thrower.Value):player} landed in {ToPrettyString(ent)}"); + } +} diff --git a/Content.Server/Disposal/Unit/EntitySystems/DisposalUnitSystem.cs b/Content.Server/Disposal/Unit/EntitySystems/DisposalUnitSystem.cs index 416e0744b5..b970ae4b0d 100644 --- a/Content.Server/Disposal/Unit/EntitySystems/DisposalUnitSystem.cs +++ b/Content.Server/Disposal/Unit/EntitySystems/DisposalUnitSystem.cs @@ -73,8 +73,6 @@ public sealed class DisposalUnitSystem : SharedDisposalUnitSystem SubscribeLocalEvent(OnPowerChange); SubscribeLocalEvent(OnDisposalInit); - SubscribeLocalEvent(OnThrowCollide); - SubscribeLocalEvent(OnActivate); SubscribeLocalEvent(OnAfterInteractUsing); SubscribeLocalEvent(OnDragDropOn); @@ -294,40 +292,6 @@ public sealed class DisposalUnitSystem : SharedDisposalUnitSystem args.Handled = true; } - /// - /// Thrown items have a chance of bouncing off the unit and not going in. - /// - private void OnThrowCollide(EntityUid uid, SharedDisposalUnitComponent component, ThrowHitByEvent args) - { - var canInsert = CanInsert(uid, component, args.Thrown); - var randDouble = _robustRandom.NextDouble(); - - if (!canInsert) - { - return; - } - - if (randDouble > 0.75) - { - _audioSystem.PlayPvs(component.MissSound, uid); - - _popupSystem.PopupEntity(Loc.GetString("disposal-unit-thrown-missed"), uid); - return; - } - - var inserted = _containerSystem.Insert(args.Thrown, component.Container); - - if (!inserted) - { - throw new InvalidOperationException("Container insertion failed but CanInsert returned true"); - } - - if (args.Component.Thrower != null) - _adminLogger.Add(LogType.Landed, LogImpact.Low, $"{ToPrettyString(args.Thrown)} thrown by {ToPrettyString(args.Component.Thrower.Value):player} landed in {ToPrettyString(uid)}"); - - AfterInsert(uid, component, args.Thrown); - } - private void OnDisposalInit(EntityUid uid, SharedDisposalUnitComponent component, ComponentInit args) { component.Container = _containerSystem.EnsureContainer(uid, SharedDisposalUnitComponent.ContainerId); diff --git a/Content.Shared/Disposal/Components/SharedDisposalUnitComponent.cs b/Content.Shared/Disposal/Components/SharedDisposalUnitComponent.cs index 4948cb6640..36dd14f9b2 100644 --- a/Content.Shared/Disposal/Components/SharedDisposalUnitComponent.cs +++ b/Content.Shared/Disposal/Components/SharedDisposalUnitComponent.cs @@ -36,13 +36,6 @@ public abstract partial class SharedDisposalUnitComponent : Component [ViewVariables(VVAccess.ReadWrite), DataField("soundInsert")] public SoundSpecifier? InsertSound = new SoundPathSpecifier("/Audio/Effects/trashbag1.ogg"); - /// - /// Sound played when an item is thrown and misses the disposal unit. - /// - [ViewVariables(VVAccess.ReadWrite), DataField("soundMiss")] - public SoundSpecifier? MissSound = new SoundPathSpecifier("/Audio/Effects/thudswoosh.ogg"); - - /// /// State for this disposals unit. /// diff --git a/Resources/Locale/en-US/containers/containers.ftl b/Resources/Locale/en-US/containers/containers.ftl index ab011f64f8..d96383305a 100644 --- a/Resources/Locale/en-US/containers/containers.ftl +++ b/Resources/Locale/en-US/containers/containers.ftl @@ -1,2 +1,5 @@ container-verb-text-enter = Enter container-verb-text-empty = Empty + +## missed +container-thrown-missed = Missed! \ No newline at end of file diff --git a/Resources/Locale/en-US/disposal/unit/components/disposal-unit-component.ftl b/Resources/Locale/en-US/disposal/unit/components/disposal-unit-component.ftl index 288db53668..2b23ee9a4a 100644 --- a/Resources/Locale/en-US/disposal/unit/components/disposal-unit-component.ftl +++ b/Resources/Locale/en-US/disposal/unit/components/disposal-unit-component.ftl @@ -18,9 +18,6 @@ disposal-eject-verb-get-data-text = Eject contents ## No hands disposal-unit-no-hands = You don't have hands! -## missed -disposal-unit-thrown-missed = Missed! - # state disposal-unit-state-Ready = Ready # Yes I want it to always say Pressurizing diff --git a/Resources/Prototypes/Entities/Structures/Piping/Disposal/units.yml b/Resources/Prototypes/Entities/Structures/Piping/Disposal/units.yml index b4a5f61ffa..2198c854a0 100644 --- a/Resources/Prototypes/Entities/Structures/Piping/Disposal/units.yml +++ b/Resources/Prototypes/Entities/Structures/Piping/Disposal/units.yml @@ -77,6 +77,8 @@ graph: DisposalMachine node: disposal_unit - type: DisposalUnit + - type: ThrowInsertContainer + containerId: disposals - type: UserInterface interfaces: enum.DisposalUnitUiKey.Key: From 5dda487db44361f2543e61d8d1f5eb44916da3d3 Mon Sep 17 00:00:00 2001 From: PJBot Date: Mon, 29 Apr 2024 13:13:36 +0000 Subject: [PATCH 109/110] Automatic changelog update --- Resources/Changelog/Changelog.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 9ee620bd79..f6e735e73c 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: Aquif - changes: - - message: Admins can now disable the bwoink sound if they don't want to scare players. - type: Add - id: 5996 - time: '2024-02-21T06:52:04.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/25008 - author: Fildrance changes: - message: now cryo pod health analyzer updates atomatically! @@ -3863,3 +3856,10 @@ id: 6495 time: '2024-04-29T08:36:18.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/27468 +- author: DrSmugleaf + changes: + - message: Fixed bullets not going exactly where you click when moving. + type: Fix + id: 6496 + time: '2024-04-29T13:12:30.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/27484 From 098111948e308d78c115a3a1f216c604600c5828 Mon Sep 17 00:00:00 2001 From: Ed <96445749+TheShuEd@users.noreply.github.com> Date: Mon, 29 Apr 2024 16:26:28 +0300 Subject: [PATCH 110/110] Disposal aftermerg fix (#27488) * wtf * fix * delta fixes * Update ThrowInsertContainerSystem.cs --- .../Containers/ThrowInsertContainerComponent.cs | 2 +- .../Containers/ThrowInsertContainerSystem.cs | 11 ++++------- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/Content.Server/Containers/ThrowInsertContainerComponent.cs b/Content.Server/Containers/ThrowInsertContainerComponent.cs index 8aa2927773..7eb5f4657d 100644 --- a/Content.Server/Containers/ThrowInsertContainerComponent.cs +++ b/Content.Server/Containers/ThrowInsertContainerComponent.cs @@ -10,7 +10,7 @@ namespace Content.Server.Containers; public sealed partial class ThrowInsertContainerComponent : Component { [DataField(required: true)] - public string? ContainerId; + public string ContainerId = string.Empty; /// /// Throw chance of hitting into the container diff --git a/Content.Server/Containers/ThrowInsertContainerSystem.cs b/Content.Server/Containers/ThrowInsertContainerSystem.cs index 781b808ef9..12bb602811 100644 --- a/Content.Server/Containers/ThrowInsertContainerSystem.cs +++ b/Content.Server/Containers/ThrowInsertContainerSystem.cs @@ -25,9 +25,6 @@ public sealed class ThrowInsertContainerSystem : EntitySystem private void OnThrowCollide(Entity ent, ref ThrowHitByEvent args) { - if (ent.Comp.ContainerId == null) - return; - var container = _containerSystem.GetContainer(ent, ent.Comp.ContainerId); if (!_containerSystem.CanInsert(args.Thrown, container)) @@ -35,18 +32,18 @@ public sealed class ThrowInsertContainerSystem : EntitySystem var rand = _random.NextFloat(); - if (rand > ent.Comp.Probability) + if (_random.Prob(ent.Comp.Probability)) { _audio.PlayPvs(ent.Comp.MissSound, ent); _popup.PopupEntity(Loc.GetString(ent.Comp.MissLocString), ent); return; } - if (_containerSystem.Insert(args.Thrown, container)) - _audio.PlayPvs(ent.Comp.InsertSound, ent); - else + if (!_containerSystem.Insert(args.Thrown, container)) throw new InvalidOperationException("Container insertion failed but CanInsert returned true"); + _audio.PlayPvs(ent.Comp.InsertSound, ent); + if (args.Component.Thrower != null) _adminLogger.Add(LogType.Landed, LogImpact.Low, $"{ToPrettyString(args.Thrown)} thrown by {ToPrettyString(args.Component.Thrower.Value):player} landed in {ToPrettyString(ent)}"); } /// A mapping from chat suffixes loc strings to speech verb prototypes that should be conditionally used. /// For things like '?' changing to 'asks' or '!!' making text bold and changing to 'yells'. Can be overridden if necessary. diff --git a/Content.Shared/Wagging/WaggingComponent.cs b/Content.Shared/Wagging/WaggingComponent.cs index 76881827dd..70e7f009c7 100644 --- a/Content.Shared/Wagging/WaggingComponent.cs +++ b/Content.Shared/Wagging/WaggingComponent.cs @@ -17,9 +17,6 @@ public sealed partial class WaggingComponent : Component [DataField] public EntityUid? ActionEntity; - [DataField] - public ProtoId EmoteId = "WagTail"; - /// /// Suffix to add to get the animated marking. /// diff --git a/Content.Shared/Whitelist/EntityWhitelist.cs b/Content.Shared/Whitelist/EntityWhitelist.cs index 942de2b0e8..b412a09b98 100644 --- a/Content.Shared/Whitelist/EntityWhitelist.cs +++ b/Content.Shared/Whitelist/EntityWhitelist.cs @@ -94,6 +94,9 @@ namespace Content.Shared.Whitelist return RequireAll ? tagSystem.HasAllTags(tags, Tags) : tagSystem.HasAnyTag(tags, Tags); } + if (RequireAll) + return true; + return false; } } diff --git a/Resources/Locale/en-US/HUD/game-hud.ftl b/Resources/Locale/en-US/HUD/game-hud.ftl index 7f6573d2ad..ea423f080a 100644 --- a/Resources/Locale/en-US/HUD/game-hud.ftl +++ b/Resources/Locale/en-US/HUD/game-hud.ftl @@ -1,6 +1,7 @@ game-hud-open-escape-menu-button-tooltip = Open escape menu. game-hud-open-guide-menu-button-tooltip = Open guidebook menu. game-hud-open-character-menu-button-tooltip = Open character menu. +game-hud-open-emotes-menu-button-tooltip= Open emotes menu. game-hud-open-inventory-menu-button-tooltip = Open inventory menu. game-hud-open-crafting-menu-button-tooltip = Open crafting menu. game-hud-open-actions-menu-button-tooltip = Open actions menu. diff --git a/Resources/Locale/en-US/chat/emotes.ftl b/Resources/Locale/en-US/chat/emotes.ftl new file mode 100644 index 0000000000..86d79ffe4f --- /dev/null +++ b/Resources/Locale/en-US/chat/emotes.ftl @@ -0,0 +1,60 @@ +# Names +chat-emote-name-scream = Scream +chat-emote-name-laugh = Laugh +chat-emote-name-honk = Honk +chat-emote-name-sigh = Sigh +chat-emote-name-whistle = Whistle +chat-emote-name-crying = Crying +chat-emote-name-squish = Squish +chat-emote-name-chitter = Chitter +chat-emote-name-squeak = Squeak +chat-emote-name-click = Click +chat-emote-name-clap = Clap +chat-emote-name-snap = Snap +chat-emote-name-salute = Salute +chat-emote-name-deathgasp = Deathgasp +chat-emote-name-buzz = Buzz +chat-emote-name-weh = Weh +chat-emote-name-chirp = Chirp +chat-emote-name-beep = Beep +chat-emote-name-chime = Chime +chat-emote-name-buzztwo = Buzz Two +chat-emote-name-ping = Ping +chat-emote-name-sneeze = Sneeze +chat-emote-name-cough = Cough +chat-emote-name-catmeow = Cat Meow +chat-emote-name-cathisses = Cat Hisses +chat-emote-name-monkeyscreeches = Monkey Screeches +chat-emote-name-robotbeep = Robot +chat-emote-name-yawn = Yawn +chat-emote-name-snore = Snore + +# Message +chat-emote-msg-scream = screams! +chat-emote-msg-laugh = laughs +chat-emote-msg-honk = honks +chat-emote-msg-sigh = sighs +chat-emote-msg-whistle = whistle +chat-emote-msg-crying = crying +chat-emote-msg-squish = squishing +chat-emote-msg-chitter = chitters. +chat-emote-msg-squeak = squeaks. +chat-emote-msg-click = click. +chat-emote-msg-clap = claps! +chat-emote-msg-snap = snaps fingers +chat-emote-msg-salute = salute +chat-emote-msg-deathgasp = seizes up and falls limp, {POSS-ADJ($entity)} eyes dead and lifeless... +chat-emote-msg-buzz = buzz! +chat-emote-msg-chirp = chirps! +chat-emote-msg-beep = beeps. +chat-emote-msg-chime = chimes. +chat-emote-msg-buzzestwo = buzzes twice. +chat-emote-msg-ping = pings. +chat-emote-msg-sneeze = sneezes +chat-emote-msg-cough = coughs +chat-emote-msg-catmeow = meows +chat-emote-msg-cathisses = hisses +chat-emote-msg-monkeyscreeches = screeches +chat-emote-msg-robotbeep = beeps +chat-emote-msg-yawn = yawns +chat-emote-msg-snore = snores diff --git a/Resources/Locale/en-US/chat/ui/emote-menu.ftl b/Resources/Locale/en-US/chat/ui/emote-menu.ftl new file mode 100644 index 0000000000..1f92a93c63 --- /dev/null +++ b/Resources/Locale/en-US/chat/ui/emote-menu.ftl @@ -0,0 +1,3 @@ +emote-menu-category-general = General +emote-menu-category-vocal = Vocal +emote-menu-category-hands = Hands diff --git a/Resources/Locale/en-US/emotes/emotes.ftl b/Resources/Locale/en-US/emotes/emotes.ftl deleted file mode 100644 index 53c12312e5..0000000000 --- a/Resources/Locale/en-US/emotes/emotes.ftl +++ /dev/null @@ -1 +0,0 @@ -emote-deathgasp = seizes up and falls limp, {POSS-ADJ($entity)} eyes dead and lifeless... diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml b/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml index 1cf56c29c6..f8218023fb 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml @@ -16,6 +16,7 @@ - type: Speech speechSounds: Squeak speechVerb: SmallMob + allowedEmotes: ['Squeak'] - type: Fixtures fixtures: fix1: @@ -432,6 +433,7 @@ - type: Speech speechVerb: Moth speechSounds: Squeak + allowedEmotes: ['Chitter'] - type: FaxableObject insertingState: inserting_mothroach - type: MothAccent @@ -817,6 +819,7 @@ - type: Speech speechVerb: Arachnid speechSounds: Arachnid + allowedEmotes: ['Click'] - type: DamageStateVisuals states: Alive: @@ -1509,6 +1512,7 @@ - type: Speech speechSounds: Squeak speechVerb: SmallMob + allowedEmotes: ['Squeak'] - type: Sprite drawdepth: SmallMobs sprite: Mobs/Animals/mouse.rsi @@ -2232,6 +2236,7 @@ - type: Speech speechVerb: Arachnid speechSounds: Arachnid + allowedEmotes: ['Click'] - type: Vocal sounds: Male: UnisexArachnid @@ -3037,6 +3042,7 @@ - type: Speech speechVerb: SmallMob speechSounds: Squeak + allowedEmotes: ['Squeak'] - type: Sprite drawdepth: SmallMobs sprite: Mobs/Animals/hamster.rsi diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/slimes.yml b/Resources/Prototypes/Entities/Mobs/NPCs/slimes.yml index 95c30a174f..e667b931de 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/slimes.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/slimes.yml @@ -125,6 +125,12 @@ makeSentient: true name: ghost-role-information-slimes-name description: ghost-role-information-slimes-description + - type: Speech + speechVerb: Slime + speechSounds: Slime + allowedEmotes: ['Squish'] + - type: TypingIndicator + proto: slime - type: NpcFactionMember factions: - SimpleNeutral diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/space.yml b/Resources/Prototypes/Entities/Mobs/NPCs/space.yml index 8cfd199dca..849cd83eba 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/space.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/space.yml @@ -263,6 +263,7 @@ - type: Speech speechVerb: Arachnid speechSounds: Arachnid + allowedEmotes: ['Click'] - type: Vocal sounds: Male: UnisexArachnid diff --git a/Resources/Prototypes/Entities/Mobs/Species/arachnid.yml b/Resources/Prototypes/Entities/Mobs/Species/arachnid.yml index d59c7bfd02..ec742e59b5 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/arachnid.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/arachnid.yml @@ -62,6 +62,7 @@ - type: Speech speechVerb: Arachnid speechSounds: Arachnid + allowedEmotes: ['Click'] - type: Vocal sounds: Male: UnisexArachnid diff --git a/Resources/Prototypes/Entities/Mobs/Species/moth.yml b/Resources/Prototypes/Entities/Mobs/Species/moth.yml index 199e99bef3..33bb46b172 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/moth.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/moth.yml @@ -22,6 +22,7 @@ accent: zombieMoth - type: Speech speechVerb: Moth + allowedEmotes: ['Chitter'] - type: TypingIndicator proto: moth - type: Butcherable diff --git a/Resources/Prototypes/Entities/Mobs/Species/slime.yml b/Resources/Prototypes/Entities/Mobs/Species/slime.yml index 081973c3d2..2ab26ffcd6 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/slime.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/slime.yml @@ -42,6 +42,7 @@ - type: Speech speechVerb: Slime speechSounds: Slime + allowedEmotes: ['Squish'] - type: TypingIndicator proto: slime - type: Vocal diff --git a/Resources/Prototypes/Voice/disease_emotes.yml b/Resources/Prototypes/Voice/disease_emotes.yml index af93025cae..c29d6dd017 100644 --- a/Resources/Prototypes/Voice/disease_emotes.yml +++ b/Resources/Prototypes/Voice/disease_emotes.yml @@ -1,45 +1,65 @@ - type: emote id: Sneeze + name: chat-emote-name-sneeze category: Vocal - chatMessages: [sneezes] - + chatMessages: ["chat-emote-msg-sneeze"] + - type: emote id: Cough + name: chat-emote-name-cough category: Vocal - chatMessages: [coughs] + whitelist: + components: + - Vocal + blacklist: + components: + - BorgChassis + chatMessages: ["chat-emote-msg-cough"] chatTriggers: - cough - coughs - type: emote id: CatMeow + name: chat-emote-name-catmeow category: Vocal - chatMessages: [meows] + chatMessages: ["chat-emote-msg-catmeow"] - type: emote id: CatHisses + name: chat-emote-name-cathisses category: Vocal - chatMessages: [hisses] + chatMessages: ["chat-emote-msg-cathisses"] - type: emote id: MonkeyScreeches + name: chat-emote-name-monkeyscreeches category: Vocal - chatMessages: [screeches] + chatMessages: ["chat-emote-msg-monkeyscreeches"] - type: emote id: RobotBeep + name: chat-emote-name-robotbeep category: Vocal - chatMessages: [beeps] + chatMessages: ["chat-emote-msg-robotbeep"] - type: emote id: Yawn + name: chat-emote-name-yawn category: Vocal - chatMessages: [yawns] + whitelist: + components: + - Vocal + blacklist: + components: + - BorgChassis + chatMessages: ["chat-emote-msg-yawn"] chatTriggers: - yawn - yawns - type: emote id: Snore + name: chat-emote-name-snore category: Vocal - chatMessages: [snores] + chatMessages: ["chat-emote-msg-snore"] diff --git a/Resources/Prototypes/Voice/speech_emotes.yml b/Resources/Prototypes/Voice/speech_emotes.yml index 3b7ffc0107..a859a14c2b 100644 --- a/Resources/Prototypes/Voice/speech_emotes.yml +++ b/Resources/Prototypes/Voice/speech_emotes.yml @@ -1,8 +1,16 @@ # vocal emotes - type: emote id: Scream + name: chat-emote-name-scream category: Vocal - chatMessages: [screams!] + icon: Interface/Actions/scream.png + whitelist: + components: + - Vocal + blacklist: + components: + - BorgChassis + chatMessages: ["chat-emote-msg-scream"] chatTriggers: - scream - screams @@ -31,8 +39,16 @@ - type: emote id: Laugh + name: chat-emote-name-laugh category: Vocal - chatMessages: [laughs] + icon: Interface/Actions/scream.png + whitelist: + components: + - Vocal + blacklist: + components: + - BorgChassis + chatMessages: ["chat-emote-msg-laugh"] chatTriggers: - laugh - laughs @@ -64,8 +80,15 @@ - type: emote id: Honk + name: chat-emote-name-honk category: Vocal - chatMessages: [honks] + icon: Interface/Actions/scream.png + whitelist: + requireAll: true + components: + - Vocal + - BorgChassis + chatMessages: ["chat-emote-msg-honk"] chatTriggers: - honk - honk. @@ -82,8 +105,16 @@ - type: emote id: Sigh + name: chat-emote-name-sigh category: Vocal - chatMessages: [sighs] + icon: Interface/Actions/scream.png + whitelist: + components: + - Vocal + blacklist: + components: + - BorgChassis + chatMessages: ["chat-emote-msg-sigh"] chatTriggers: - sigh - sighs @@ -94,8 +125,16 @@ - type: emote id: Whistle + name: chat-emote-name-whistle category: Vocal - chatMessages: [whistle] + icon: Interface/Actions/scream.png + whitelist: + components: + - Vocal + blacklist: + components: + - BorgChassis + chatMessages: ["chat-emote-msg-whistle"] chatTriggers: - whistle - whistle. @@ -109,8 +148,16 @@ - type: emote id: Crying + name: chat-emote-name-crying category: Vocal - chatMessages: [crying] + icon: Interface/Actions/scream.png + whitelist: + components: + - Vocal + blacklist: + components: + - BorgChassis + chatMessages: ["chat-emote-msg-crying"] chatTriggers: - cry - cry. @@ -132,8 +179,17 @@ - type: emote id: Squish + name: chat-emote-name-squish category: Vocal - chatMessages: [squishing] + available: false + icon: Interface/Actions/scream.png + whitelist: + components: + - Vocal + blacklist: + components: + - BorgChassis + chatMessages: ["chat-emote-msg-squish"] chatTriggers: - squish - squish. @@ -147,8 +203,17 @@ - type: emote id: Chitter + name: chat-emote-name-chitter category: Vocal - chatMessages: [chitters.] + available: false + icon: Interface/Actions/scream.png + whitelist: + components: + - Vocal + blacklist: + components: + - BorgChassis + chatMessages: ["chat-emote-msg-chitter"] chatTriggers: - chitter - chitter. @@ -162,8 +227,16 @@ - type: emote id: Squeak + name: chat-emote-name-squeak category: Vocal - chatMessages: [squeaks.] + available: false + whitelist: + components: + - Vocal + blacklist: + components: + - BorgChassis + chatMessages: ["chat-emote-msg-squeak"] chatTriggers: - squeak - squeak. @@ -177,8 +250,17 @@ - type: emote id: Click + name: chat-emote-name-click category: Vocal - chatMessages: [click.] + available: false + icon: Interface/Actions/scream.png + whitelist: + components: + - Vocal + blacklist: + components: + - BorgChassis + chatMessages: ["chat-emote-msg-click"] chatTriggers: - click - click. @@ -190,8 +272,16 @@ # hand emotes - type: emote id: Clap + name: chat-emote-name-clap category: Hands - chatMessages: [claps!] + icon: Interface/Actions/scream.png + whitelist: + components: + - Hands + blacklist: + components: + - BorgChassis + chatMessages: ["chat-emote-msg-clap"] chatTriggers: - clap - claps @@ -202,8 +292,16 @@ - type: emote id: Snap + name: chat-emote-name-snap category: Hands - chatMessages: [snaps fingers] # snaps <{THEIR($ent)}> fingers? + icon: Interface/Actions/scream.png + whitelist: + components: + - Hands + blacklist: + components: + - BorgChassis + chatMessages: ["chat-emote-msg-snap"] # snaps <{THEIR($ent)}> fingers? chatTriggers: - snap - snaps @@ -221,8 +319,16 @@ - type: emote id: Salute + name: chat-emote-name-salute category: Hands - chatMessages: [Salute] + icon: Interface/Actions/scream.png + whitelist: + components: + - Hands + blacklist: + components: + - BorgChassis + chatMessages: ["chat-emote-msg-salute"] chatTriggers: - salute - salute. @@ -233,14 +339,26 @@ - type: emote id: DefaultDeathgasp - chatMessages: ["emote-deathgasp"] + name: chat-emote-name-deathgasp + icon: Interface/Actions/scream.png + whitelist: + components: + - MobState + chatMessages: ["chat-emote-msg-deathgasp"] chatTriggers: - deathgasp - type: emote id: Buzz + name: chat-emote-name-buzz category: Vocal - chatMessages: [buzz!] + icon: Interface/Actions/scream.png + whitelist: + requireAll: true + components: + - BorgChassis + - Vocal + chatMessages: ["chat-emote-msg-buzz"] chatTriggers: - buzzing - buzzing! @@ -257,13 +375,20 @@ - type: emote id: Weh + name: chat-emote-name-weh category: Vocal chatMessages: [Wehs!] - type: emote id: Chirp + name: chat-emote-name-chirp category: Vocal - chatMessages: [chirps!] + icon: Interface/Actions/scream.png + whitelist: + requireAll: true + components: + - Nymph + chatMessages: ["chat-emote-msg-chirp"] chatTriggers: - chirp - chirp! @@ -281,8 +406,15 @@ # Machine Emotes - type: emote id: Beep + name: chat-emote-name-beep category: Vocal - chatMessages: [beeps.] + icon: Interface/Actions/scream.png + whitelist: + requireAll: true + components: + - BorgChassis + - Vocal + chatMessages: ["chat-emote-msg-beep"] chatTriggers: - beep - beep! @@ -299,8 +431,15 @@ - type: emote id: Chime + name: chat-emote-name-chime category: Vocal - chatMessages: [chimes.] + icon: Interface/Actions/scream.png + whitelist: + requireAll: true + components: + - BorgChassis + - Vocal + chatMessages: ["chat-emote-msg-chime"] chatTriggers: - chime - chime. @@ -317,8 +456,15 @@ - type: emote id: Buzz-Two + name: chat-emote-name-buzztwo category: Vocal - chatMessages: [buzzesTwice.] + icon: Interface/Actions/scream.png + whitelist: + requireAll: true + components: + - BorgChassis + - Vocal + chatMessages: ["chat-emote-msg-buzzestwo"] chatTriggers: - buzztwice - buzztwice. @@ -353,8 +499,15 @@ - type: emote id: Ping + name: chat-emote-name-ping category: Vocal - chatMessages: [pings.] + icon: Interface/Actions/scream.png + whitelist: + requireAll: true + components: + - BorgChassis + - Vocal + chatMessages: ["chat-emote-msg-ping"] chatTriggers: - ping - ping. diff --git a/Resources/Prototypes/Voice/tail_emotes.yml b/Resources/Prototypes/Voice/tail_emotes.yml deleted file mode 100644 index 610a2ea801..0000000000 --- a/Resources/Prototypes/Voice/tail_emotes.yml +++ /dev/null @@ -1,14 +0,0 @@ -- type: emote - id: WagTail - chatMessages: [wags tail] - chatTriggers: - - wag - - wag. - - wags - - wags. - - wagging - - wagging. - - wag tail - - wag tail. - - wags tail - - wags tail. diff --git a/Resources/Textures/Interface/emotes.svg b/Resources/Textures/Interface/emotes.svg new file mode 100644 index 0000000000..352f7ed294 --- /dev/null +++ b/Resources/Textures/Interface/emotes.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Resources/Textures/Interface/emotes.svg.192dpi.png b/Resources/Textures/Interface/emotes.svg.192dpi.png new file mode 100644 index 0000000000000000000000000000000000000000..4e1f3c4f481c99304577a04aa62dc0096b4a8bc3 GIT binary patch literal 1818 zcmV+#2j%#QP)3xFE6!aRIl84~Pc0xI|6#!AM*~G)RoT`JfL*!vkte zP!lx~ml!o_Br1v~LR>&Z6hVRn5JV8X!N6r-FP{%p!!$EpHQjT2#*6YNle+Xdb?X1S ztGlXB71CiG#sL5WfXTq{f167^0FJJ=;+>Q+A9x7pS1`Xq0ki<)fSJIIdV{<`HTD9Z z_~4!5CIDT4D}dL5tqHCh0jnqA4=KWvXb0v2PXMEUt_{!?;&ujb5AX)Cu7cMez#jki znQ8TdcLV4lX^W)pIrwarv_R6r#BZ^g?a2|Nl1Eob10)TWG*r?ENn`xABw8iCFXu42O3EdCaKx4eN66j8AsvXZN75=u%jLv=BWbRg zZI9IX#h0l%njt)f^^z9JJ^ihcc1YSTsm=dZ_}`l3)69tFzRWFrP|k+x!RKancY|WD z^yMJH%#5V5OQhn74IE?-vl-jMLv_+G--lBP(SVP@OX z9DL6?U(#KY?o);v3baVNU(z_aDQ9Rs(FS}XX^NT63;2|7Ocp&7(7ncr?A}a)4vskl zSWyvcYK6}^er1&h`+=teZBFw(59A@*9%$&*yrL5^FRLMZVNTIW+?dkd3~#HN9mc-u zy93w%%qRCCtgT@`r310k>XzQ^U6qEI@Ew8c(bhY5+?j-Rf^(0`5bUCDv$Qc1oP7DZXQY?=yDqHe53Fm_WOw@5QJ}TPy=JO9v+u z(y&d^EJ@!>`dx0Ov|my$NvFwum9LN#>LIU%R%gHvU-xXeZrmdGmEIufH%W6PePw1l z1NBX=i+7ha(9BjP?Xl1NUlCggy(Hb>e}%%#mPuOHfe?LE&fK(C8e{MH`VKVO8PMOC zZDv;Wj>m*AkJt_coaM{ZUK10(w0JH}#V}u{>i91UFFo;m!p&^Gq>YVW)Fhni%Oz>X z*b|rBFm=cQI9}x^o~ogi@b3y`)I5xmo1?5Wv(#a^mhd@+Q)&(_@#Wl*Lzb={TC8+t zT~lKEV*I+!=w}y1r0uu`@m7mnAbXUDA~S+fR~S%E4=}q&w8u&5G;f9_Y_z zR%;m?1~4eHI{LMac-?>-fDeF|>n0YC|B>hRWXvzqX#wB|x$cvO0cN(^ucpq6glU)C z%H5QR+s(}ORkYP#<*#xYrkUB^0MCAM$&Mo=onvN;BYbKDm>7BL6TQzcT>dMDUBJh{ zt+>QQDgKfE+Q+z~CLzqK!SiA7H@`!I69M}Gy8~oqC;VmveA2K6m_+rtl^CwA!LyXJ zn^=f&AN1`Ap=-R)P+(^c@p-E}K>5g3y;uiant|6$@Bdce zq7#jL79qMDxIN)J68N@G(I1lG03mR__uoYwY41G3&&GAB5ZZyq@WT~gz*Szzjv8XO z0`E|xYbUrI2`u$>C+E?T|G1-T@OeoSYPc6mdp6BZ?rrtB@9RcpcH7%s7XyHH) z+R%TMiQ0{((3kOaH=J-0>fw7I&lo`OW zl;_KZ3CAry)_ea=z~#-*lMA@)%8Nw^2TldvP53SXnsKnWegHQCt$Bs}8+RFQ_Ewtb z?*pcg@esnl4xk_K3gH9>xcBx^;91~PU`vI4CJ;+!bzb-``yAE(VJ3u4{)UZcB(J*W z>h%D3G~+zE<0Yrdoha@lX_KVC<&KifmbB2!_BV^yVfgxBvhE07*qo IM6N<$f{%!Q9smFU literal 0 HcmV?d00001 diff --git a/Resources/Textures/Interface/emotes.svg.192dpi.png.yml b/Resources/Textures/Interface/emotes.svg.192dpi.png.yml new file mode 100644 index 0000000000..dabd6601f7 --- /dev/null +++ b/Resources/Textures/Interface/emotes.svg.192dpi.png.yml @@ -0,0 +1,2 @@ +sample: + filter: true diff --git a/Resources/keybinds.yml b/Resources/keybinds.yml index b08f4cb4ed..c11f59d17c 100644 --- a/Resources/keybinds.yml +++ b/Resources/keybinds.yml @@ -187,6 +187,9 @@ binds: - function: OpenCharacterMenu type: State key: C +- function: OpenEmotesMenu + type: State + key: Y - function: TextCursorSelect # TextCursorSelect HAS to be above ExamineEntity # So that LineEdit receives it correctly. From 7ee18433c8936dd053a1f9dad652c3d2a0d2cb30 Mon Sep 17 00:00:00 2001 From: MilenVolf <63782763+MilenVolf@users.noreply.github.com> Date: Mon, 29 Apr 2024 07:38:31 +0300 Subject: [PATCH 093/110] New borg sounds (#27205) * New borg sounds * Add manic laughter of an assault borg Never wanted, but needed * Fix wrong attribution * Some requested changes * Change borgwalk sounds * Forgor --- .../Audio/Effects/Footsteps/attributions.yml | 7 +++ .../Audio/Effects/Footsteps/borgwalk1.ogg | Bin 0 -> 22035 bytes .../Audio/Effects/Footsteps/borgwalk2.ogg | Bin 0 -> 21506 bytes .../Audio/Voice/Silicon/attributions.yml | 4 ++ .../Audio/Voice/Silicon/syndieborg_laugh.ogg | Bin 0 -> 97668 bytes .../Audio/Voice/Talk/Silicon/attributions.yml | 10 ++++ Resources/Audio/Voice/Talk/Silicon/borg.ogg | Bin 0 -> 16427 bytes .../Audio/Voice/Talk/Silicon/borg_ask.ogg | Bin 0 -> 17365 bytes .../Audio/Voice/Talk/Silicon/borg_exclaim.ogg | Bin 0 -> 14653 bytes .../Audio/Voice/Talk/Silicon/syndieborg.ogg | Bin 0 -> 15981 bytes .../Voice/Talk/Silicon/syndieborg_ask.ogg | Bin 0 -> 17181 bytes .../Voice/Talk/Silicon/syndieborg_exclaim.ogg | Bin 0 -> 15793 bytes .../Mobs/Cyborgs/base_borg_chassis.yml | 51 ++++++++++-------- .../Entities/Mobs/Cyborgs/borg_chassis.yml | 5 ++ .../Prototypes/SoundCollections/footsteps.yml | 10 ++++ .../Prototypes/Voice/speech_emote_sounds.yml | 20 +++++++ Resources/Prototypes/Voice/speech_sounds.yml | 18 +++++++ 17 files changed, 104 insertions(+), 21 deletions(-) create mode 100644 Resources/Audio/Effects/Footsteps/borgwalk1.ogg create mode 100644 Resources/Audio/Effects/Footsteps/borgwalk2.ogg create mode 100644 Resources/Audio/Voice/Silicon/attributions.yml create mode 100644 Resources/Audio/Voice/Silicon/syndieborg_laugh.ogg create mode 100644 Resources/Audio/Voice/Talk/Silicon/attributions.yml create mode 100644 Resources/Audio/Voice/Talk/Silicon/borg.ogg create mode 100644 Resources/Audio/Voice/Talk/Silicon/borg_ask.ogg create mode 100644 Resources/Audio/Voice/Talk/Silicon/borg_exclaim.ogg create mode 100644 Resources/Audio/Voice/Talk/Silicon/syndieborg.ogg create mode 100644 Resources/Audio/Voice/Talk/Silicon/syndieborg_ask.ogg create mode 100644 Resources/Audio/Voice/Talk/Silicon/syndieborg_exclaim.ogg diff --git a/Resources/Audio/Effects/Footsteps/attributions.yml b/Resources/Audio/Effects/Footsteps/attributions.yml index 82b5fa93ca..91c3ce260d 100644 --- a/Resources/Audio/Effects/Footsteps/attributions.yml +++ b/Resources/Audio/Effects/Footsteps/attributions.yml @@ -71,3 +71,10 @@ license: "CC-BY-SA-3.0" copyright: "Taken from tgstation" source: "https://github.com/tgstation/tgstation/tree/1e8d511946d194f92f744f5f957a7c41683d84a6/sound/effects/footstep" + +- files: + - borgwalk1.ogg + - borgwalk2.ogg + license: "CC-BY-SA-4.0" + copyright: "Taken from IENBA freesound.org and modified by https://github.com/MilenVolf" + source: "https://freesound.org/people/IENBA/sounds/697379/" diff --git a/Resources/Audio/Effects/Footsteps/borgwalk1.ogg b/Resources/Audio/Effects/Footsteps/borgwalk1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..1ffc1516bbc5659936537804d5335d72771f173e GIT binary patch literal 22035 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 Qw^9K=H;XH~B3}mp4w5*4AOHXW literal 0 HcmV?d00001 diff --git a/Resources/Audio/Effects/Footsteps/borgwalk2.ogg b/Resources/Audio/Effects/Footsteps/borgwalk2.ogg new file mode 100644 index 0000000000000000000000000000000000000000..7998be898faa703c7723366f1cdd087c73073d54 GIT binary patch literal 21506 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 BcxM0r literal 0 HcmV?d00001 diff --git a/Resources/Audio/Voice/Silicon/attributions.yml b/Resources/Audio/Voice/Silicon/attributions.yml new file mode 100644 index 0000000000..465f845503 --- /dev/null +++ b/Resources/Audio/Voice/Silicon/attributions.yml @@ -0,0 +1,4 @@ +- files: ["syndieborg_laugh.ogg"] + license: "CC0-1.0" + copyright: "Taken from vultraz168 freesound.org and modified by https://github.com/MilenVolf" + source: "https://freesound.org/people/vultraz168/sounds/334665/" diff --git a/Resources/Audio/Voice/Silicon/syndieborg_laugh.ogg b/Resources/Audio/Voice/Silicon/syndieborg_laugh.ogg new file mode 100644 index 0000000000000000000000000000000000000000..e0f425301e265e1b6d0e2f080fb7c37787de5dd8 GIT binary patch literal 97668 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

+!>c(3 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 literal 0 HcmV?d00001 diff --git a/Resources/Audio/Voice/Talk/Silicon/borg_ask.ogg b/Resources/Audio/Voice/Talk/Silicon/borg_ask.ogg new file mode 100644 index 0000000000000000000000000000000000000000..fe2f60141aa72bc730b4e11f036f6abdfbe76421 GIT binary patch literal 17365 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 literal 0 HcmV?d00001 diff --git a/Resources/Audio/Voice/Talk/Silicon/borg_exclaim.ogg b/Resources/Audio/Voice/Talk/Silicon/borg_exclaim.ogg new file mode 100644 index 0000000000000000000000000000000000000000..5f0fdfe89e5e819bd6e4f576a5003a6d71d0bf76 GIT binary patch literal 14653 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 f^xSZP_LNxyml0_Rz literal 0 HcmV?d00001 diff --git a/Resources/Audio/Voice/Talk/Silicon/syndieborg.ogg b/Resources/Audio/Voice/Talk/Silicon/syndieborg.ogg new file mode 100644 index 0000000000000000000000000000000000000000..60eb1a5ccfa29a39a0af49ff450e4581833a7b4b GIT binary patch literal 15981 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 literal 0 HcmV?d00001 diff --git a/Resources/Audio/Voice/Talk/Silicon/syndieborg_ask.ogg b/Resources/Audio/Voice/Talk/Silicon/syndieborg_ask.ogg new file mode 100644 index 0000000000000000000000000000000000000000..acafe456425bb266651ca72170471b2fea1141ae GIT binary patch literal 17181 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 B6`=qC literal 0 HcmV?d00001 diff --git a/Resources/Audio/Voice/Talk/Silicon/syndieborg_exclaim.ogg b/Resources/Audio/Voice/Talk/Silicon/syndieborg_exclaim.ogg new file mode 100644 index 0000000000000000000000000000000000000000..392b4fd1ccaf2c6746dedf6b104606a85f9f20b0 GIT binary patch literal 15793 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 Ier2HkKXdIMO#lD@ literal 0 HcmV?d00001 diff --git a/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml b/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml index cb846c7dde..2df281971a 100644 --- a/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml +++ b/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml @@ -129,11 +129,14 @@ proto: robot - type: Speech speechVerb: Robotic - speechSounds: Pai + speechSounds: Borg - type: Vocal sounds: Unsexed: UnisexSilicon - type: UnblockableSpeech + - type: FootstepModifier + footstepSoundCollection: + collection: FootstepBorg - type: Construction graph: Cyborg containers: @@ -206,6 +209,7 @@ - type: Tag tags: - DoorBumpOpener + - FootstepSound - CanPilot - type: Emoting - type: GuideHelp @@ -235,23 +239,28 @@ parent: BaseBorgChassis abstract: true components: - - type: NpcFactionMember - factions: - - Syndicate - - type: Access - tags: - - NuclearOperative - - SyndicateAgent - - type: AccessReader - access: [["SyndicateAgent"], ["NuclearOperative"]] - - type: SiliconLawProvider - laws: SyndicateStatic - - type: IntrinsicRadioTransmitter - channels: - - Binary - - Syndicate - - type: ActiveRadio - channels: - - Syndicate - - type: ShowSyndicateIcons - - type: MovementAlwaysTouching + - type: NpcFactionMember + factions: + - Syndicate + - type: Access + tags: + - NuclearOperative + - SyndicateAgent + - type: AccessReader + access: [["SyndicateAgent"], ["NuclearOperative"]] + - type: SiliconLawProvider + laws: SyndicateStatic + - type: IntrinsicRadioTransmitter + channels: + - Binary + - Syndicate + - type: ActiveRadio + channels: + - Syndicate + - type: ShowSyndicateIcons + - type: MovementAlwaysTouching + - type: Speech + speechSounds: SyndieBorg + - type: Vocal + sounds: + Unsexed: UnisexSiliconSyndicate diff --git a/Resources/Prototypes/Entities/Mobs/Cyborgs/borg_chassis.yml b/Resources/Prototypes/Entities/Mobs/Cyborgs/borg_chassis.yml index 76edbf79e0..9365c6da56 100644 --- a/Resources/Prototypes/Entities/Mobs/Cyborgs/borg_chassis.yml +++ b/Resources/Prototypes/Entities/Mobs/Cyborgs/borg_chassis.yml @@ -220,6 +220,11 @@ access: [["Medical"], ["Command"], ["Research"]] - type: Inventory templateId: borgDutch + - type: FootstepModifier + footstepSoundCollection: + collection: FootstepHoverBorg + params: + volume: -6 - type: entity id: BorgChassisService diff --git a/Resources/Prototypes/SoundCollections/footsteps.yml b/Resources/Prototypes/SoundCollections/footsteps.yml index bd51e6b445..e179584f6f 100644 --- a/Resources/Prototypes/SoundCollections/footsteps.yml +++ b/Resources/Prototypes/SoundCollections/footsteps.yml @@ -201,3 +201,13 @@ - /Audio/Effects/Footsteps/spurs1.ogg - /Audio/Effects/Footsteps/spurs2.ogg - /Audio/Effects/Footsteps/spurs3.ogg + +- type: soundCollection + id: FootstepBorg + files: + - /Audio/Effects/Footsteps/borgwalk1.ogg + +- type: soundCollection + id: FootstepHoverBorg + files: + - /Audio/Effects/Footsteps/borgwalk2.ogg diff --git a/Resources/Prototypes/Voice/speech_emote_sounds.yml b/Resources/Prototypes/Voice/speech_emote_sounds.yml index 5556afa07d..61c951dca9 100644 --- a/Resources/Prototypes/Voice/speech_emote_sounds.yml +++ b/Resources/Prototypes/Voice/speech_emote_sounds.yml @@ -316,6 +316,26 @@ Ping: path: /Audio/Effects/Cargo/ping.ogg +- type: emoteSounds + id: UnisexSiliconSyndicate + params: + variation: 0.05 + sounds: + Laugh: + path: /Audio/Voice/Silicon/syndieborg_laugh.ogg + Beep: + path: /Audio/Machines/twobeep.ogg + Chime: + path: /Audio/Machines/chime.ogg + Buzz: + path: /Audio/Machines/buzz-sigh.ogg + Buzz-Two: + path: /Audio/Machines/buzz-two.ogg + Honk: + path: /Audio/Items/bikehorn.ogg + Ping: + path: /Audio/Effects/Cargo/ping.ogg + # body emotes - type: emoteSounds id: GeneralBodyEmotes diff --git a/Resources/Prototypes/Voice/speech_sounds.yml b/Resources/Prototypes/Voice/speech_sounds.yml index 2e7e7bf989..a490c734d3 100644 --- a/Resources/Prototypes/Voice/speech_sounds.yml +++ b/Resources/Prototypes/Voice/speech_sounds.yml @@ -52,6 +52,24 @@ exclaimSound: path: /Audio/Machines/vending_jingle.ogg +- type: speechSounds + id: Borg + saySound: + path: /Audio/Voice/Talk/Silicon/borg.ogg + askSound: + path: /Audio/Voice/Talk/Silicon/borg_ask.ogg + exclaimSound: + path: /Audio/Voice/Talk/Silicon/borg_exclaim.ogg + +- type: speechSounds + id: SyndieBorg + saySound: + path: /Audio/Voice/Talk/Silicon/syndieborg.ogg + askSound: + path: /Audio/Voice/Talk/Silicon/syndieborg_ask.ogg + exclaimSound: + path: /Audio/Voice/Talk/Silicon/syndieborg_exclaim.ogg + - type: speechSounds id: Pai saySound: From 4c66e4f9dcc9e922fb9c7a81fb9114131c17d7b0 Mon Sep 17 00:00:00 2001 From: PJBot Date: Mon, 29 Apr 2024 04:39:38 +0000 Subject: [PATCH 094/110] Automatic changelog update --- Resources/Changelog/Changelog.yml | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 95e4394a62..dace0465b2 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,18 +1,4 @@ Entries: -- author: PoorMansDreams - changes: - - message: New pirate start sound! - type: Add - id: 5990 - time: '2024-02-21T06:39:05.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/25153 -- author: takemysoult - changes: - - message: Changed uplink catalog - add syndicate hud to nukeops uplink - type: Tweak - id: 5991 - time: '2024-02-21T06:41:01.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/25087 - author: Sphiral changes: - message: Took the AdminPDA from the backpack and gave it it's own slot on aghosts! @@ -3868,3 +3854,19 @@ id: 6489 time: '2024-04-29T04:16:04.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/25815 +- author: Morb0 + changes: + - message: Added emote panel (by default Y) + type: Add + id: 6490 + time: '2024-04-29T04:38:23.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/26702 +- author: MilenVolf + changes: + - message: Borgs now have brand new voice and walking sounds. + type: Add + - message: Syndicate assault borgs now have new feature to scare - manic laugher. + type: Add + id: 6491 + time: '2024-04-29T04:38:31.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/27205 From 199e05fb341a68ea1cf499f9e3c35b6c0cd5e22f Mon Sep 17 00:00:00 2001 From: KrasnoshchekovPavel <119816022+KrasnoshchekovPavel@users.noreply.github.com> Date: Mon, 29 Apr 2024 07:52:35 +0300 Subject: [PATCH 095/110] fixed formatting of floating point numbers during localization (#27441) --- Content.Shared/Localizations/ContentLocalizationManager.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Content.Shared/Localizations/ContentLocalizationManager.cs b/Content.Shared/Localizations/ContentLocalizationManager.cs index 3c311f4382..7d40182f6c 100644 --- a/Content.Shared/Localizations/ContentLocalizationManager.cs +++ b/Content.Shared/Localizations/ContentLocalizationManager.cs @@ -69,7 +69,7 @@ namespace Content.Shared.Localizations var maxDecimals = (int)Math.Floor(((LocValueNumber) args.Args[1]).Value); var formatter = (NumberFormatInfo)NumberFormatInfo.GetInstance(CultureInfo.GetCultureInfo(Culture)).Clone(); formatter.NumberDecimalDigits = maxDecimals; - return new LocValueString(string.Format(formatter, "{0:N}", number).TrimEnd('0').TrimEnd('.') + "%"); + return new LocValueString(string.Format(formatter, "{0:N}", number).TrimEnd('0').TrimEnd(char.Parse(formatter.NumberDecimalSeparator)) + "%"); } private ILocValue FormatNaturalFixed(LocArgs args) @@ -78,7 +78,7 @@ namespace Content.Shared.Localizations var maxDecimals = (int)Math.Floor(((LocValueNumber) args.Args[1]).Value); var formatter = (NumberFormatInfo)NumberFormatInfo.GetInstance(CultureInfo.GetCultureInfo(Culture)).Clone(); formatter.NumberDecimalDigits = maxDecimals; - return new LocValueString(string.Format(formatter, "{0:N}", number).TrimEnd('0').TrimEnd('.')); + return new LocValueString(string.Format(formatter, "{0:N}", number).TrimEnd('0').TrimEnd(char.Parse(formatter.NumberDecimalSeparator))); } private static readonly Regex PluralEsRule = new("^.*(s|sh|ch|x|z)$"); From 571cff8cab7b0d526dcbfd29fcff0a684d0e02fb Mon Sep 17 00:00:00 2001 From: PJBot Date: Mon, 29 Apr 2024 04:53:41 +0000 Subject: [PATCH 096/110] Automatic changelog update --- Resources/Changelog/Changelog.yml | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index dace0465b2..b45bf64216 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,12 +1,4 @@ Entries: -- author: Sphiral - changes: - - message: Took the AdminPDA from the backpack and gave it it's own slot on aghosts! - Also aghosts can smoke/wear masks now! - type: Tweak - id: 5992 - time: '2024-02-21T06:41:37.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/25402 - author: EdenTheLiznerd changes: - message: Nettles are now weaker than their deathnettle counterparts @@ -3870,3 +3862,10 @@ id: 6491 time: '2024-04-29T04:38:31.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/27205 +- author: KrasnoshchekovPavel + changes: + - message: Fixed formatting of floating point numbers during localization + type: Fix + id: 6492 + time: '2024-04-29T04:52:35.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/27441 From f59a4f2a869ae0568727b62e1815262ee8fd82dd Mon Sep 17 00:00:00 2001 From: Kara Date: Sun, 28 Apr 2024 23:38:14 -0700 Subject: [PATCH 097/110] Make events generally much more common (#27469) Make events generally more common --- .../StationEvents/BasicStationEventSchedulerSystem.cs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Content.Server/StationEvents/BasicStationEventSchedulerSystem.cs b/Content.Server/StationEvents/BasicStationEventSchedulerSystem.cs index e7e0957239..efa9cc096d 100644 --- a/Content.Server/StationEvents/BasicStationEventSchedulerSystem.cs +++ b/Content.Server/StationEvents/BasicStationEventSchedulerSystem.cs @@ -58,8 +58,7 @@ namespace Content.Server.StationEvents ///

/// Is anything speeding up the decay? /// e.g. buried in a grave diff --git a/Content.Server/Chemistry/ReagentEffects/ReduceRotting.cs b/Content.Server/Chemistry/ReagentEffects/ReduceRotting.cs new file mode 100644 index 0000000000..cea4f85332 --- /dev/null +++ b/Content.Server/Chemistry/ReagentEffects/ReduceRotting.cs @@ -0,0 +1,31 @@ +using Content.Shared.Chemistry.Reagent; +using JetBrains.Annotations; +using Robust.Shared.Prototypes; +using Content.Server.Atmos.Rotting; + +namespace Content.Server.Chemistry.ReagentEffects +{ + /// + /// Reduces the rotting accumulator on the patient, making them revivable. + /// + [UsedImplicitly] + public sealed partial class ReduceRotting : ReagentEffect + { + [DataField("seconds")] + public double RottingAmount = 10; + + protected override string? ReagentEffectGuidebookText(IPrototypeManager prototype, IEntitySystemManager entSys) + => Loc.GetString("reagent-effect-guidebook-reduce-rotting", + ("chance", Probability), + ("time", RottingAmount)); + public override void Effect(ReagentEffectArgs args) + { + if (args.Scale != 1f) + return; + + var rottingSys = args.EntityManager.EntitySysManager.GetEntitySystem(); + + rottingSys.ReduceAccumulator(args.SolutionEntity, TimeSpan.FromSeconds(RottingAmount)); + } + } +} diff --git a/Resources/Locale/en-US/guidebook/chemistry/effects.ftl b/Resources/Locale/en-US/guidebook/chemistry/effects.ftl index 94c1376083..5b449cd520 100644 --- a/Resources/Locale/en-US/guidebook/chemistry/effects.ftl +++ b/Resources/Locale/en-US/guidebook/chemistry/effects.ftl @@ -339,6 +339,12 @@ reagent-effect-guidebook-innoculate-zombie-infection = *[other] cure } an ongoing zombie infection, and provides immunity to future infections +reagent-effect-guidebook-reduce-rotting = + { $chance -> + [1] Regenerates + *[other] regenerate + } {NATURALFIXED($time, 3)} {MANY("second", $time)} of rotting + reagent-effect-guidebook-missing = { $chance -> [1] Causes diff --git a/Resources/Locale/en-US/reagents/meta/medicine.ftl b/Resources/Locale/en-US/reagents/meta/medicine.ftl index a0b557e28f..a84e8315fd 100644 --- a/Resources/Locale/en-US/reagents/meta/medicine.ftl +++ b/Resources/Locale/en-US/reagents/meta/medicine.ftl @@ -127,6 +127,9 @@ reagent-desc-pyrazine = Efficiently heals burns from the hottest of fires. Cause reagent-name-insuzine = insuzine reagent-desc-insuzine = Rapidly repairs dead tissue caused by electrocution, but cools you slightly. Completely freezes the patient when overdosed. +reagent-name-opporozidone = opporozidone +reagent-desc-opporozidone= A difficult to synthesize cryogenic drug used to regenerate rotting tissue and brain matter. + reagent-name-necrosol = necrosol reagent-desc-necrosol = A necrotic substance that seems to be able to heal frozen corpses. It can treat and rejuvenate plants when applied in small doses. diff --git a/Resources/Prototypes/Reagents/medicine.yml b/Resources/Prototypes/Reagents/medicine.yml index aae367d9eb..ad0d39a134 100644 --- a/Resources/Prototypes/Reagents/medicine.yml +++ b/Resources/Prototypes/Reagents/medicine.yml @@ -1148,6 +1148,27 @@ conditions: - !type:ReagentThreshold min: 12 + +- type: reagent + id: Opporozidone #Name based of an altered version of the startreck chem "Opporozine" + name: reagent-name-opporozidone + group: Medicine + desc: reagent-desc-opporozidone + physicalDesc: reagent-physical-desc-sickly + flavor: acid + color: "#b5e36d" + worksOnTheDead: true + metabolisms: + Medicine: + effects: + - !type:ReduceRotting + seconds: 20 + conditions: + #Patient must be dead and in a cryo tube (or something cold) + - !type:Temperature + max: 150.0 + - !type:MobStateCondition + mobstate: Dead - type: reagent id: Necrosol diff --git a/Resources/Prototypes/Recipes/Reactions/medicine.yml b/Resources/Prototypes/Recipes/Reactions/medicine.yml index 0a36f869b3..2e9b1d4f85 100644 --- a/Resources/Prototypes/Recipes/Reactions/medicine.yml +++ b/Resources/Prototypes/Recipes/Reactions/medicine.yml @@ -557,6 +557,19 @@ products: Insuzine: 3 +- type: reaction + id: Opporozidone + minTemp: 400 #Maybe if a method of reducing reagent temp exists one day, this could be -50 + reactants: + Cognizine: + amount: 1 + Plasma: + amount: 2 + Doxarubixadone: + amount: 1 + products: + Opporozidone: 3 + - type: reaction id: Necrosol impact: Medium From 16f65f42fc266fb640ee8ef1eecf549b8ce73279 Mon Sep 17 00:00:00 2001 From: PJBot Date: Mon, 29 Apr 2024 04:14:20 +0000 Subject: [PATCH 086/110] Automatic changelog update --- Resources/Changelog/Changelog.yml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 3804636665..d995c42fb0 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,12 +1,4 @@ Entries: -- author: deltanedas - changes: - - message: Added Conducting Gloves to the uplink, they make shocks much worse rather - than stop them. - type: Add - id: 5988 - time: '2024-02-21T06:34:47.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/25227 - author: veliebm changes: - message: The guidebook now contains a page for the Radioisotope Thermoelectric @@ -3868,3 +3860,11 @@ id: 6487 time: '2024-04-29T04:06:27.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/25759 +- author: Gotimanga + changes: + - message: Chemists can now create opporozidone, which reverses the effects of rotting + in deceased patients while in cryo. + type: Add + id: 6488 + time: '2024-04-29T04:13:14.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/24074 From 8afae8a1f14d0f935b25470ece5a38e6ddeaa6ac Mon Sep 17 00:00:00 2001 From: Mangohydra <156087924+Mangohydra@users.noreply.github.com> Date: Mon, 29 Apr 2024 00:16:04 -0400 Subject: [PATCH 087/110] Martyr Cyborg Module, borg law 2 explode (#25815) * borg law 2 explode * attributions fix + CL fix * please dear god work i beg you * maybe this will work :godo: * 50% off deal + disc change * absolving merge conflict * merge conflict fix * Update Resources/Prototypes/Entities/Objects/Weapons/Throwable/grenades.yml * Update Resources/Prototypes/Entities/Objects/Weapons/Throwable/grenades.yml * Update Resources/Audio/Effects/Grenades/SelfDestruct/attributions.yml * Apply suggestions from code review --------- Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> Co-authored-by: Kara --- .../Grenades/SelfDestruct/SDS_Charge.ogg | Bin 0 -> 61451 bytes .../Grenades/SelfDestruct/SDS_Charge2.ogg | Bin 0 -> 55510 bytes .../Grenades/SelfDestruct/attributions.yml | 8 ++++++ .../Locale/en-US/store/uplink-catalog.ftl | 3 +++ .../Prototypes/Catalog/uplink_catalog.yml | 11 ++++++++ .../Specific/Robotics/borg_modules.yml | 18 +++++++++++-- .../Objects/Weapons/Throwable/grenades.yml | 24 ++++++++++++++++++ .../Robotics/borgmodule.rsi/icon-bomb.png | Bin 0 -> 248 bytes .../Robotics/borgmodule.rsi/meta.json | 8 +++++- .../borgmodule.rsi/syndicateborgbomb.png | Bin 0 -> 686 bytes 10 files changed, 69 insertions(+), 3 deletions(-) create mode 100644 Resources/Audio/Effects/Grenades/SelfDestruct/SDS_Charge.ogg create mode 100644 Resources/Audio/Effects/Grenades/SelfDestruct/SDS_Charge2.ogg create mode 100644 Resources/Audio/Effects/Grenades/SelfDestruct/attributions.yml create mode 100644 Resources/Textures/Objects/Specific/Robotics/borgmodule.rsi/icon-bomb.png create mode 100644 Resources/Textures/Objects/Specific/Robotics/borgmodule.rsi/syndicateborgbomb.png diff --git a/Resources/Audio/Effects/Grenades/SelfDestruct/SDS_Charge.ogg b/Resources/Audio/Effects/Grenades/SelfDestruct/SDS_Charge.ogg new file mode 100644 index 0000000000000000000000000000000000000000..5efc8f443be47397e9cb2b08d4e5aed0411d80d2 GIT binary patch literal 61451 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 D5hqsv literal 0 HcmV?d00001 diff --git a/Resources/Audio/Effects/Grenades/SelfDestruct/SDS_Charge2.ogg b/Resources/Audio/Effects/Grenades/SelfDestruct/SDS_Charge2.ogg new file mode 100644 index 0000000000000000000000000000000000000000..662254fbaa9ecc3efc19eb2fa71bef950d72437c GIT binary patch literal 55510 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

Efw$6sv63)uj*)B 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Specific/Robotics/borgmodule.rsi/meta.json b/Resources/Textures/Objects/Specific/Robotics/borgmodule.rsi/meta.json index 2499244135..74c9893cae 100644 --- a/Resources/Textures/Objects/Specific/Robotics/borgmodule.rsi/meta.json +++ b/Resources/Textures/Objects/Specific/Robotics/borgmodule.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC0-1.0", - "copyright": "Created by EmoGarbage404 (github) for Space Station 14. icon-construction.png created by deltanedas (github).", + "copyright": "Created by EmoGarbage404 (github) for Space Station 14. icon-construction.png created by deltanedas (github). syndicateborgbomb.png created by Mangohydra (github).", "size": { "x": 32, "y": 32 @@ -106,6 +106,9 @@ { "name": "janitor" }, + { + "name": "icon-bomb" + }, { "name": "medical" }, @@ -118,6 +121,9 @@ { "name": "service" }, + { + "name": "syndicateborgbomb" + }, { "name": "syndicate" } diff --git a/Resources/Textures/Objects/Specific/Robotics/borgmodule.rsi/syndicateborgbomb.png b/Resources/Textures/Objects/Specific/Robotics/borgmodule.rsi/syndicateborgbomb.png new file mode 100644 index 0000000000000000000000000000000000000000..c5238b96fc3e8facf3a06e6386360874394dc3fb GIT binary patch literal 686 zcmV;f0#W^mP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!T;tuvRh5krtr*6-==SO-$sNU6!r(hf8U$;GLzYz0UsY9pZ}6jD8ytc zBOXsN%lMX!KCV5v8#=%&!(f`GQBbFf=lE4(C>rHYZafoERh7jCjxf~1dJ7JR!(>RM zQjw~4=102?)?M7cK6?vtA9HlZiNe)IDwSf5MgxMuAY=+UjPBbH_uDP*_2y1s4=i`? zEe?k1ZnL>nfm*o?#o{+tyxm;8EM7iNS>OKJf;TsYY46cJofPSm8q(=BUu~1m=fN-x zz5)u4e?U=!RDtu_S%^o6xOW@ZE4VP%58BHNUjf8U*mF!I5){m7xG!Q=4|)3d320|D zdUoPU;O#>ba#Kt61FbKc@co6n>{x|Ex-P8-GG+XPiE@pvyz#66WIG%B zSyI**1G6*TuE8$yC6h_1q94zR_RCm-_qh+GI|j~unaUU(ILOfW(#OZg=U)ThH~TdS U*-GRY)c^nh07*qoM6N<$f}4&r%K!iX literal 0 HcmV?d00001 From 328134ab18dbbd58ab8373b0f479badf1d9a5512 Mon Sep 17 00:00:00 2001 From: PJBot Date: Mon, 29 Apr 2024 04:17:10 +0000 Subject: [PATCH 088/110] Automatic changelog update --- Resources/Changelog/Changelog.yml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index d995c42fb0..95e4394a62 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,12 +1,4 @@ Entries: -- author: veliebm - changes: - - message: The guidebook now contains a page for the Radioisotope Thermoelectric - Generator (RTG). - type: Add - id: 5989 - time: '2024-02-21T06:38:29.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/25040 - author: PoorMansDreams changes: - message: New pirate start sound! @@ -3868,3 +3860,11 @@ id: 6488 time: '2024-04-29T04:13:14.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/24074 +- author: Mangohydra + changes: + - message: Added a new syndicate cyborg module that contains a very dangerous explosive + as a 4tc purchase. + type: Add + id: 6489 + time: '2024-04-29T04:16:04.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/25815 From aab103865e006abe9c4117436d705ad697553eba Mon Sep 17 00:00:00 2001 From: TsjipTsjip <19798667+TsjipTsjip@users.noreply.github.com> Date: Mon, 29 Apr 2024 06:23:49 +0200 Subject: [PATCH 089/110] Update PR Labeler to v5 (#26845) * Update PR Labeler to v5 * Change conflict labeler. * Implement draft filtering functionality * Actually, pull_request_target is appropriate here. --- .github/labeler.yml | 16 +++++++++++----- .github/workflows/conflict-labeler.yml | 12 +++++++----- .github/workflows/labeler-pr.yml | 7 ++++--- 3 files changed, 22 insertions(+), 13 deletions(-) diff --git a/.github/labeler.yml b/.github/labeler.yml index b088f22943..886ce89708 100644 --- a/.github/labeler.yml +++ b/.github/labeler.yml @@ -1,12 +1,18 @@ "Changes: Sprites": -- '**/*.rsi/*.png' +- changed-files: + - any-glob-to-any-file: '**/*.rsi/*.png' "Changes: Map": -- 'Resources/Maps/*.yml' -- 'Resources/Prototypes/Maps/*.yml' +- changed-files: + - any-glob-to-any-file: + - 'Resources/Maps/*.yml' + - 'Resources/Prototypes/Maps/*.yml' "Changes: UI": -- '**/*.xaml*' +- changed-files: + - any-glob-to-any-file: '**/*.xaml*' "No C#": -- all: ["!**/*.cs"] +- changed-files: + # Equiv to any-glob-to-all as long as this has one matcher. If ALL changed files are not C# files, then apply label. + - all-globs-to-all-files: "!**/*.cs" diff --git a/.github/workflows/conflict-labeler.yml b/.github/workflows/conflict-labeler.yml index a78716bde6..1e2125c30a 100644 --- a/.github/workflows/conflict-labeler.yml +++ b/.github/workflows/conflict-labeler.yml @@ -1,18 +1,20 @@ name: Check Merge Conflicts on: - push: - branches: - - master pull_request_target: + types: + - opened + - synchronize + - reopened + - ready_for_review jobs: Label: - if: github.actor != 'PJBot' + if: ( github.event.pull_request.draft == false ) && ( github.actor != 'PJBot' ) runs-on: ubuntu-latest steps: - name: Check for Merge Conflicts - uses: ike709/actions-label-merge-conflict@9eefdd17e10566023c46d2dc6dc04fcb8ec76142 + uses: eps1lon/actions-label-merge-conflict@v3.0.0 with: dirtyLabel: "Merge Conflict" repoToken: "${{ secrets.GITHUB_TOKEN }}" diff --git a/.github/workflows/labeler-pr.yml b/.github/workflows/labeler-pr.yml index 711eb0ccac..42ed100981 100644 --- a/.github/workflows/labeler-pr.yml +++ b/.github/workflows/labeler-pr.yml @@ -6,8 +6,9 @@ on: jobs: labeler: if: github.actor != 'PJBot' + permissions: + contents: read + pull-requests: write runs-on: ubuntu-latest steps: - - uses: actions/labeler@v3 - with: - repo-token: "${{ secrets.GITHUB_TOKEN }}" + - uses: actions/labeler@v5 From eb9ee4541f5cd03a41c9f0878bacb5e6b58736f0 Mon Sep 17 00:00:00 2001 From: lzk <124214523+lzk228@users.noreply.github.com> Date: Mon, 29 Apr 2024 06:26:17 +0200 Subject: [PATCH 090/110] Add more telecomms variations (#26822) * Add more telecomms variations * fox :fox: * oops --- .../Structures/Machines/telecomms.yml | 82 ++++++++++++++++++- 1 file changed, 81 insertions(+), 1 deletion(-) diff --git a/Resources/Prototypes/Entities/Structures/Machines/telecomms.yml b/Resources/Prototypes/Entities/Structures/Machines/telecomms.yml index 6cc1fc7981..5bdefb8bfc 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/telecomms.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/telecomms.yml @@ -67,7 +67,7 @@ - type: entity parent: TelecomServer id: TelecomServerFilled - suffix: Filled + suffix: Filled All components: - type: ContainerFill containers: @@ -80,3 +80,83 @@ - EncryptionKeySecurity - EncryptionKeyService - EncryptionKeyCommand + +- type: entity + parent: TelecomServer + id: TelecomServerFilledCommon + suffix: Common + components: + - type: ContainerFill + containers: + key_slots: + - EncryptionKeyCommon + +- type: entity + parent: TelecomServer + id: TelecomServerFilledCargo + suffix: Cargo + components: + - type: ContainerFill + containers: + key_slots: + - EncryptionKeyCargo + +- type: entity + parent: TelecomServer + id: TelecomServerFilledEngineering + suffix: Engineering + components: + - type: ContainerFill + containers: + key_slots: + - EncryptionKeyEngineering + +- type: entity + parent: TelecomServer + id: TelecomServerFilledMedical + suffix: Medical + components: + - type: ContainerFill + containers: + key_slots: + - EncryptionKeyMedical + +- type: entity + parent: TelecomServer + id: TelecomServerFilledScience + suffix: Science + components: + - type: ContainerFill + containers: + key_slots: + - EncryptionKeyScience + +- type: entity + parent: TelecomServer + id: TelecomServerFilledSecurity + suffix: Security + components: + - type: ContainerFill + containers: + key_slots: + - EncryptionKeySecurity + +- type: entity + parent: TelecomServer + id: TelecomServerFilledService + suffix: Service + components: + - type: ContainerFill + containers: + key_slots: + - EncryptionKeyService + +- type: entity + parent: TelecomServer + id: TelecomServerFilledCommand + suffix: Command + components: + - type: ContainerFill + containers: + key_slots: + - EncryptionKeyCommand From 373c368b94de808ff8da1f9956b489daecee64d8 Mon Sep 17 00:00:00 2001 From: SlamBamActionman <83650252+SlamBamActionman@users.noreply.github.com> Date: Mon, 29 Apr 2024 06:38:16 +0200 Subject: [PATCH 091/110] Tippy, the helpful hint clown! (#26767) * Tippy is BACK * Clean up clippy from aprils fools * Changed names from clippy to tippy, added localization, removed local_clippy command, made it easier to target a specific player * Rename clippy.yml to tippy.yml --------- Co-authored-by: Kara --- Content.Client/Tips/TippyUI.xaml | 11 + Content.Client/Tips/TippyUI.xaml.cs | 54 ++++ Content.Client/Tips/TippyUIController.cs | 244 ++++++++++++++++++ Content.Client/Tips/TipsSystem.cs | 20 ++ Content.Server/Tips/TipsSystem.cs | 115 ++++++++- Content.Shared/CCVar/CCVars.cs | 10 + Content.Shared/Tips/TippyEvent.cs | 19 ++ .../Locale/en-US/commands/tippy-command.ftl | 12 + .../Prototypes/Entities/Debugging/tippy.yml | 29 +++ Resources/Textures/Tips/tippy.rsi/down.png | Bin 0 -> 5325 bytes Resources/Textures/Tips/tippy.rsi/left.png | Bin 0 -> 4000 bytes Resources/Textures/Tips/tippy.rsi/meta.json | 20 ++ Resources/Textures/Tips/tippy.rsi/right.png | Bin 0 -> 4341 bytes Resources/engineCommandPerms.yml | 2 + 14 files changed, 534 insertions(+), 2 deletions(-) create mode 100644 Content.Client/Tips/TippyUI.xaml create mode 100644 Content.Client/Tips/TippyUI.xaml.cs create mode 100644 Content.Client/Tips/TippyUIController.cs create mode 100644 Content.Client/Tips/TipsSystem.cs create mode 100644 Content.Shared/Tips/TippyEvent.cs create mode 100644 Resources/Locale/en-US/commands/tippy-command.ftl create mode 100644 Resources/Prototypes/Entities/Debugging/tippy.yml create mode 100644 Resources/Textures/Tips/tippy.rsi/down.png create mode 100644 Resources/Textures/Tips/tippy.rsi/left.png create mode 100644 Resources/Textures/Tips/tippy.rsi/meta.json create mode 100644 Resources/Textures/Tips/tippy.rsi/right.png diff --git a/Content.Client/Tips/TippyUI.xaml b/Content.Client/Tips/TippyUI.xaml new file mode 100644 index 0000000000..a86e05aadd --- /dev/null +++ b/Content.Client/Tips/TippyUI.xaml @@ -0,0 +1,11 @@ + + + + + + + + diff --git a/Content.Client/Tips/TippyUI.xaml.cs b/Content.Client/Tips/TippyUI.xaml.cs new file mode 100644 index 0000000000..de3eaf4f51 --- /dev/null +++ b/Content.Client/Tips/TippyUI.xaml.cs @@ -0,0 +1,54 @@ +using Content.Client.Paper; +using Robust.Client.AutoGenerated; +using Robust.Client.Graphics; +using Robust.Client.ResourceManagement; +using Robust.Client.UserInterface.Controls; +using Robust.Client.UserInterface.XAML; + +namespace Content.Client.Tips; + +[GenerateTypedNameReferences] +public sealed partial class TippyUI : UIWidget +{ + public TippyState State = TippyState.Hidden; + public bool ModifyLayers = true; + + public TippyUI() + { + RobustXamlLoader.Load(this); + } + + public void InitLabel(PaperVisualsComponent? visuals, IResourceCache resCache) + { + if (visuals == null) + return; + + Label.ModulateSelfOverride = visuals.FontAccentColor; + + if (visuals.BackgroundImagePath == null) + return; + + LabelPanel.ModulateSelfOverride = visuals.BackgroundModulate; + var backgroundImage = resCache.GetResource(visuals.BackgroundImagePath); + var backgroundImageMode = visuals.BackgroundImageTile ? StyleBoxTexture.StretchMode.Tile : StyleBoxTexture.StretchMode.Stretch; + var backgroundPatchMargin = visuals.BackgroundPatchMargin; + LabelPanel.PanelOverride = new StyleBoxTexture + { + Texture = backgroundImage, + TextureScale = visuals.BackgroundScale, + Mode = backgroundImageMode, + PatchMarginLeft = backgroundPatchMargin.Left, + PatchMarginBottom = backgroundPatchMargin.Bottom, + PatchMarginRight = backgroundPatchMargin.Right, + PatchMarginTop = backgroundPatchMargin.Top + }; + } + + public enum TippyState : byte + { + Hidden, + Revealing, + Speaking, + Hiding, + } +} diff --git a/Content.Client/Tips/TippyUIController.cs b/Content.Client/Tips/TippyUIController.cs new file mode 100644 index 0000000000..ad5a3fbcfb --- /dev/null +++ b/Content.Client/Tips/TippyUIController.cs @@ -0,0 +1,244 @@ +using Content.Client.Gameplay; +using System.Numerics; +using Content.Client.Message; +using Content.Client.Paper; +using Content.Shared.CCVar; +using Content.Shared.Movement.Components; +using Content.Shared.Tips; +using Robust.Client.GameObjects; +using Robust.Client.ResourceManagement; +using Robust.Client.State; +using Robust.Client.UserInterface; +using Robust.Client.UserInterface.Controllers; +using Robust.Client.UserInterface.Controls; +using Robust.Client.Audio; +using Robust.Shared.Configuration; +using Robust.Shared.Console; +using Robust.Shared.Map; +using Robust.Shared.Prototypes; +using Robust.Shared.Timing; +using static Content.Client.Tips.TippyUI; + +namespace Content.Client.Tips; + +public sealed class TippyUIController : UIController +{ + [Dependency] private readonly IStateManager _state = default!; + [Dependency] private readonly IConsoleHost _conHost = default!; + [Dependency] private readonly IPrototypeManager _protoMan = default!; + [Dependency] private readonly IConfigurationManager _cfg = default!; + [Dependency] private readonly IResourceCache _resCache = default!; + [UISystemDependency] private readonly AudioSystem _audio = default!; + [UISystemDependency] private readonly EntityManager _entSys = default!; + + public const float Padding = 50; + public static Angle WaddleRotation = Angle.FromDegrees(10); + + private EntityUid _entity; + private float _secondsUntilNextState; + private int _previousStep = 0; + private TippyEvent? _currentMessage; + private readonly Queue _queuedMessages = new(); + + public override void Initialize() + { + base.Initialize(); + UIManager.OnScreenChanged += OnScreenChanged; + } + + public void AddMessage(TippyEvent ev) + { + _queuedMessages.Enqueue(ev); + } + + public override void FrameUpdate(FrameEventArgs args) + { + base.FrameUpdate(args); + + var screen = UIManager.ActiveScreen; + if (screen == null) + { + _queuedMessages.Clear(); + return; + } + + var tippy = screen.GetOrAddWidget(); + _secondsUntilNextState -= args.DeltaSeconds; + + if (_secondsUntilNextState <= 0) + NextState(tippy); + else + { + var pos = UpdatePosition(tippy, screen.Size, args); ; + LayoutContainer.SetPosition(tippy, pos); + } + } + + private Vector2 UpdatePosition(TippyUI tippy, Vector2 screenSize, FrameEventArgs args) + { + if (_currentMessage == null) + return default; + + var slideTime = _currentMessage.SlideTime; + + var offset = tippy.State switch + { + TippyState.Hidden => 0, + TippyState.Revealing => Math.Clamp(1 - _secondsUntilNextState / slideTime, 0, 1), + TippyState.Hiding => Math.Clamp(_secondsUntilNextState / slideTime, 0, 1), + _ => 1, + }; + + var waddle = _currentMessage.WaddleInterval; + + if (_currentMessage == null + || waddle <= 0 + || tippy.State == TippyState.Hidden + || tippy.State == TippyState.Speaking + || !EntityManager.TryGetComponent(_entity, out SpriteComponent? sprite)) + { + return new Vector2(screenSize.X - offset * (tippy.DesiredSize.X + Padding), (screenSize.Y - tippy.DesiredSize.Y) / 2); + } + + var numSteps = (int) Math.Ceiling(slideTime / waddle); + var curStep = (int) Math.Floor(numSteps * offset); + var stepSize = (tippy.DesiredSize.X + Padding) / numSteps; + + if (curStep != _previousStep) + { + _previousStep = curStep; + sprite.Rotation = sprite.Rotation > 0 + ? -WaddleRotation + : WaddleRotation; + + if (EntityManager.TryGetComponent(_entity, out FootstepModifierComponent? step)) + { + var audioParams = step.FootstepSoundCollection.Params + .AddVolume(-7f) + .WithVariation(0.1f); + _audio.PlayGlobal(step.FootstepSoundCollection, EntityUid.Invalid, audioParams); + } + } + + return new Vector2(screenSize.X - stepSize * curStep, (screenSize.Y - tippy.DesiredSize.Y) / 2); + } + + private void NextState(TippyUI tippy) + { + SpriteComponent? sprite; + switch (tippy.State) + { + case TippyState.Hidden: + if (!_queuedMessages.TryDequeue(out var next)) + return; + + if (next.Proto != null) + { + _entity = EntityManager.SpawnEntity(next.Proto, MapCoordinates.Nullspace); + tippy.ModifyLayers = false; + } + else + { + _entity = EntityManager.SpawnEntity(_cfg.GetCVar(CCVars.TippyEntity), MapCoordinates.Nullspace); + tippy.ModifyLayers = true; + } + if (!EntityManager.TryGetComponent(_entity, out sprite)) + return; + if (!EntityManager.HasComponent(_entity)) + { + var paper = EntityManager.AddComponent(_entity); + paper.BackgroundImagePath = "/Textures/Interface/Paper/paper_background_default.svg.96dpi.png"; + paper.BackgroundPatchMargin = new(16f, 16f, 16f, 16f); + paper.BackgroundModulate = new(255, 255, 204); + paper.FontAccentColor = new(0, 0, 0); + } + tippy.InitLabel(EntityManager.GetComponentOrNull(_entity), _resCache); + + var scale = sprite.Scale; + if (tippy.ModifyLayers) + { + sprite.Scale = Vector2.One; + } + else + { + sprite.Scale = new Vector2(3, 3); + } + tippy.Entity.SetEntity(_entity); + tippy.Entity.Scale = scale; + + _currentMessage = next; + _secondsUntilNextState = next.SlideTime; + tippy.State = TippyState.Revealing; + _previousStep = 0; + if (tippy.ModifyLayers) + { + sprite.LayerSetAnimationTime("revealing", 0); + sprite.LayerSetVisible("revealing", true); + sprite.LayerSetVisible("speaking", false); + sprite.LayerSetVisible("hiding", false); + } + sprite.Rotation = 0; + tippy.Label.SetMarkup(_currentMessage.Msg); + tippy.Label.Visible = false; + tippy.LabelPanel.Visible = false; + tippy.Visible = true; + sprite.Visible = true; + break; + + case TippyState.Revealing: + tippy.State = TippyState.Speaking; + if (!EntityManager.TryGetComponent(_entity, out sprite)) + return; + sprite.Rotation = 0; + _previousStep = 0; + if (tippy.ModifyLayers) + { + sprite.LayerSetAnimationTime("speaking", 0); + sprite.LayerSetVisible("revealing", false); + sprite.LayerSetVisible("speaking", true); + sprite.LayerSetVisible("hiding", false); + } + tippy.Label.Visible = true; + tippy.LabelPanel.Visible = true; + tippy.InvalidateArrange(); + tippy.InvalidateMeasure(); + if (_currentMessage != null) + _secondsUntilNextState = _currentMessage.SpeakTime; + + break; + + case TippyState.Speaking: + tippy.State = TippyState.Hiding; + if (!EntityManager.TryGetComponent(_entity, out sprite)) + return; + if (tippy.ModifyLayers) + { + sprite.LayerSetAnimationTime("hiding", 0); + sprite.LayerSetVisible("revealing", false); + sprite.LayerSetVisible("speaking", false); + sprite.LayerSetVisible("hiding", true); + } + tippy.LabelPanel.Visible = false; + if (_currentMessage != null) + _secondsUntilNextState = _currentMessage.SlideTime; + break; + + default: // finished hiding + + EntityManager.DeleteEntity(_entity); + _entity = default; + tippy.Visible = false; + _currentMessage = null; + _secondsUntilNextState = 0; + tippy.State = TippyState.Hidden; + break; + } + } + + private void OnScreenChanged((UIScreen? Old, UIScreen? New) ev) + { + ev.Old?.RemoveWidget(); + _currentMessage = null; + EntityManager.DeleteEntity(_entity); + } +} diff --git a/Content.Client/Tips/TipsSystem.cs b/Content.Client/Tips/TipsSystem.cs new file mode 100644 index 0000000000..f9376a7005 --- /dev/null +++ b/Content.Client/Tips/TipsSystem.cs @@ -0,0 +1,20 @@ +using Content.Shared.Tips; +using Robust.Client.UserInterface; + +namespace Content.Client.Tips; + +public sealed class TipsSystem : EntitySystem +{ + [Dependency] private readonly IUserInterfaceManager _uiMan = default!; + public override void Initialize() + { + base.Initialize(); + + SubscribeNetworkEvent(OnClippyEv); + } + + private void OnClippyEv(TippyEvent ev) + { + _uiMan.GetUIController().AddMessage(ev); + } +} diff --git a/Content.Server/Tips/TipsSystem.cs b/Content.Server/Tips/TipsSystem.cs index cc45a3a1d5..ccc732623b 100644 --- a/Content.Server/Tips/TipsSystem.cs +++ b/Content.Server/Tips/TipsSystem.cs @@ -1,9 +1,13 @@ -using Content.Server.Chat.Managers; +using Content.Server.Chat.Managers; using Content.Server.GameTicking; using Content.Shared.CCVar; using Content.Shared.Chat; using Content.Shared.Dataset; +using Content.Shared.Tips; +using Robust.Server.GameObjects; +using Robust.Server.Player; using Robust.Shared.Configuration; +using Robust.Shared.Console; using Robust.Shared.Player; using Robust.Shared.Prototypes; using Robust.Shared.Random; @@ -22,11 +26,14 @@ public sealed class TipsSystem : EntitySystem [Dependency] private readonly IGameTiming _timing = default!; [Dependency] private readonly IRobustRandom _random = default!; [Dependency] private readonly GameTicker _ticker = default!; + [Dependency] private readonly IConsoleHost _conHost = default!; + [Dependency] private readonly IPlayerManager _playerManager = default!; private bool _tipsEnabled; private float _tipTimeOutOfRound; private float _tipTimeInRound; private string _tipsDataset = ""; + private float _tipTippyChance; [ViewVariables(VVAccess.ReadWrite)] private TimeSpan _nextTipTime = TimeSpan.Zero; @@ -40,10 +47,101 @@ public sealed class TipsSystem : EntitySystem Subs.CVar(_cfg, CCVars.TipFrequencyInRound, SetInRound, true); Subs.CVar(_cfg, CCVars.TipsEnabled, SetEnabled, true); Subs.CVar(_cfg, CCVars.TipsDataset, SetDataset, true); + Subs.CVar(_cfg, CCVars.TipsTippyChance, SetTippyChance, true); RecalculateNextTipTime(); + _conHost.RegisterCommand("tippy", Loc.GetString("cmd-tippy-desc"), Loc.GetString("cmd-tippy-help"), SendTippy, SendTippyHelper); + _conHost.RegisterCommand("tip", Loc.GetString("cmd-tip-desc"), "tip", SendTip); } + private CompletionResult SendTippyHelper(IConsoleShell shell, string[] args) + { + return args.Length switch + { + 1 => CompletionResult.FromHintOptions(CompletionHelper.SessionNames(), Loc.GetString("cmd-tippy-auto-1")), + 2 => CompletionResult.FromHint(Loc.GetString("cmd-tippy-auto-2")), + 3 => CompletionResult.FromHintOptions(CompletionHelper.PrototypeIDs(), Loc.GetString("cmd-tippy-auto-3")), + 4 => CompletionResult.FromHint(Loc.GetString("cmd-tippy-auto-4")), + 5 => CompletionResult.FromHint(Loc.GetString("cmd-tippy-auto-5")), + 6 => CompletionResult.FromHint(Loc.GetString("cmd-tippy-auto-6")), + _ => CompletionResult.Empty + }; + } + + private void SendTip(IConsoleShell shell, string argstr, string[] args) + { + AnnounceRandomTip(); + RecalculateNextTipTime(); + } + + private void SendTippy(IConsoleShell shell, string argstr, string[] args) + { + if (args.Length < 2) + { + shell.WriteLine(Loc.GetString("cmd-tippy-help")); + return; + } + + ActorComponent? actor = null; + if (args[0] != "all") + { + ICommonSession? session; + if (args.Length > 0) + { + // Get player entity + if (!_playerManager.TryGetSessionByUsername(args[0], out session)) + { + shell.WriteLine(Loc.GetString("cmd-tippy-error-no-user")); + return; + } + } + else + { + session = shell.Player; + } + + if (session?.AttachedEntity is not { } user) + { + shell.WriteLine(Loc.GetString("cmd-tippy-error-no-user")); + return; + } + + if (!TryComp(user, out actor)) + { + shell.WriteError(Loc.GetString("cmd-tippy-error-no-user")); + return; + } + } + + var ev = new TippyEvent(args[1]); + + string proto; + if (args.Length > 2) + { + ev.Proto = args[2]; + if (!_prototype.HasIndex(args[2])) + { + shell.WriteError(Loc.GetString("cmd-tippy-error-no-prototype", ("proto", args[2]))); + return; + } + } + + if (args.Length > 3) + ev.SpeakTime = float.Parse(args[3]); + + if (args.Length > 4) + ev.SlideTime = float.Parse(args[4]); + + if (args.Length > 5) + ev.WaddleInterval = float.Parse(args[5]); + + if (actor != null) + RaiseNetworkEvent(ev, actor.PlayerSession); + else + RaiseNetworkEvent(ev); + } + + public override void Update(float frameTime) { base.Update(frameTime); @@ -81,6 +179,11 @@ public sealed class TipsSystem : EntitySystem _tipsDataset = value; } + private void SetTippyChance(float value) + { + _tipTippyChance = value; + } + private void AnnounceRandomTip() { if (!_prototype.TryIndex(_tipsDataset, out var tips)) @@ -89,8 +192,16 @@ public sealed class TipsSystem : EntitySystem var tip = _random.Pick(tips.Values); var msg = Loc.GetString("tips-system-chat-message-wrap", ("tip", tip)); - _chat.ChatMessageToManyFiltered(Filter.Broadcast(), ChatChannel.OOC, tip, msg, + if (_random.Prob(_tipTippyChance)) + { + var ev = new TippyEvent(msg); + ev.SpeakTime = 1 + tip.Length * 0.05f; + RaiseNetworkEvent(ev); + } else + { + _chat.ChatMessageToManyFiltered(Filter.Broadcast(), ChatChannel.OOC, tip, msg, EntityUid.Invalid, false, false, Color.MediumPurple); + } } private void RecalculateNextTipTime() diff --git a/Content.Shared/CCVar/CCVars.cs b/Content.Shared/CCVar/CCVars.cs index 6e20a7dc20..cbc035140f 100644 --- a/Content.Shared/CCVar/CCVars.cs +++ b/Content.Shared/CCVar/CCVars.cs @@ -435,6 +435,12 @@ namespace Content.Shared.CCVar public static readonly CVarDef LoginTipsDataset = CVarDef.Create("tips.login_dataset", "Tips"); + ///

+ /// The chance for Tippy to replace a normal tip message. + /// + public static readonly CVarDef TipsTippyChance = + CVarDef.Create("tips.tippy_chance", 0.01f); + /* * Console */ @@ -1985,6 +1991,10 @@ namespace Content.Shared.CCVar public static readonly CVarDef GatewayGeneratorEnabled = CVarDef.Create("gateway.generator_enabled", true); + // Clippy! + public static readonly CVarDef TippyEntity = + CVarDef.Create("tippy.entity", "Tippy", CVar.SERVER | CVar.REPLICATED); + /* * DEBUG */ diff --git a/Content.Shared/Tips/TippyEvent.cs b/Content.Shared/Tips/TippyEvent.cs new file mode 100644 index 0000000000..4370e9c822 --- /dev/null +++ b/Content.Shared/Tips/TippyEvent.cs @@ -0,0 +1,19 @@ + +using Robust.Shared.Serialization; + +namespace Content.Shared.Tips; + +[Serializable, NetSerializable] +public sealed class TippyEvent : EntityEventArgs +{ + public TippyEvent(string msg) + { + Msg = msg; + } + + public string Msg; + public string? Proto; + public float SpeakTime = 5; + public float SlideTime = 3; + public float WaddleInterval = 0.5f; +} diff --git a/Resources/Locale/en-US/commands/tippy-command.ftl b/Resources/Locale/en-US/commands/tippy-command.ftl new file mode 100644 index 0000000000..6b9a95a1dd --- /dev/null +++ b/Resources/Locale/en-US/commands/tippy-command.ftl @@ -0,0 +1,12 @@ +cmd-tippy-desc = Broadcast a message as Tippy the clown. +cmd-tippy-help = tippy [entity prototype] [speak time] [slide time] [waddle interval] +cmd-tippy-auto-1 = +cmd-tippy-auto-2 = message +cmd-tippy-auto-3 = entity prototype +cmd-tippy-auto-4 = speak time, in seconds +cmd-tippy-auto-5 = slide time, in seconds +cmd-tippy-auto-6 = waddle interval, in seconds +cmd-tippy-error-no-user = User not found. +cmd-tippy-error-no-prototype = Prototype not found: {$proto} + +cmd-tip-desc = Spawn a random game tip. diff --git a/Resources/Prototypes/Entities/Debugging/tippy.yml b/Resources/Prototypes/Entities/Debugging/tippy.yml new file mode 100644 index 0000000000..d8ba0fd51e --- /dev/null +++ b/Resources/Prototypes/Entities/Debugging/tippy.yml @@ -0,0 +1,29 @@ +- type: entity + id: Tippy + components: + - type: Sprite + netsync: false + noRot: false + scale: 4,4 + layers: + - sprite: Tips/tippy.rsi + state: left + map: [ "revealing" ] + - sprite: Tips/tippy.rsi + state: right + map: [ "hiding" ] + - sprite: Tips/tippy.rsi + state: down + visible: false + map: [ "speaking" ] + # footstep sounds wile waddling onto the screen. + - type: FootstepModifier + footstepSoundCollection: + collection: FootstepClown + # visuals for the speech bubble. + # only supports background image. + - type: PaperVisuals + backgroundImagePath: "/Textures/Interface/Paper/paper_background_default.svg.96dpi.png" + backgroundPatchMargin: 16.0, 16.0, 16.0, 16.0 + backgroundModulate: "#ffffcc" + fontAccentColor: "#000000" diff --git a/Resources/Textures/Tips/tippy.rsi/down.png b/Resources/Textures/Tips/tippy.rsi/down.png new file mode 100644 index 0000000000000000000000000000000000000000..bdfcf315b6c64df1adc683c088272eea038731f5 GIT binary patch literal 5325 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Tips/tippy.rsi/left.png b/Resources/Textures/Tips/tippy.rsi/left.png new file mode 100644 index 0000000000000000000000000000000000000000..f2293c6111dbc5a880f7ba53e7ca0070530ef12e GIT binary patch literal 4000 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 Date: Mon, 29 Apr 2024 07:38:23 +0300 Subject: [PATCH 092/110] Emotes Menu (#26702) * Basic emote radial menu * Move out from corvax * Move to UI controller & add to top menu bar and key bind * Make emote play * Add name localization for emotes * Localize chat messages * Fix emote menu * Add categories localization * Fixes * Fix * Add emotes entity blacklist * Fix entity whitelist required all logic * Remove unused wagging emote * Revert sprite * Set default texture for emote icon * Update Resources/keybinds.yml --------- Co-authored-by: Kara --- Content.Client/Chat/UI/EmotesMenu.xaml | 31 +++ Content.Client/Chat/UI/EmotesMenu.xaml.cs | 112 ++++++++++ Content.Client/Input/ContentContexts.cs | 1 + .../Systems/Emotes/EmotesUIController.cs | 125 ++++++++++++ .../MenuBar/GameTopMenuBarUIController.cs | 4 + .../MenuBar/Widgets/GameTopMenuBar.xaml | 10 + .../Chat/Systems/ChatSystem.Emote.cs | 11 + Content.Server/Speech/EmotesMenuSystem.cs | 30 +++ .../Speech/EntitySystems/VocalSystem.cs | 1 + Content.Shared/Chat/EmotesEvents.cs | 11 + .../Chat/Prototypes/EmotePrototype.cs | 42 +++- .../Chat/Prototypes/EmoteSoundsPrototype.cs | 5 +- Content.Shared/Input/ContentKeyFunctions.cs | 1 + .../Speech/Components/VocalComponent.cs | 15 +- Content.Shared/Speech/SpeechComponent.cs | 8 + Content.Shared/Wagging/WaggingComponent.cs | 3 - Content.Shared/Whitelist/EntityWhitelist.cs | 3 + Resources/Locale/en-US/HUD/game-hud.ftl | 1 + Resources/Locale/en-US/chat/emotes.ftl | 60 ++++++ Resources/Locale/en-US/chat/ui/emote-menu.ftl | 3 + Resources/Locale/en-US/emotes/emotes.ftl | 1 - .../Prototypes/Entities/Mobs/NPCs/animals.yml | 6 + .../Prototypes/Entities/Mobs/NPCs/slimes.yml | 6 + .../Prototypes/Entities/Mobs/NPCs/space.yml | 1 + .../Entities/Mobs/Species/arachnid.yml | 1 + .../Prototypes/Entities/Mobs/Species/moth.yml | 1 + .../Entities/Mobs/Species/slime.yml | 1 + Resources/Prototypes/Voice/disease_emotes.yml | 38 +++- Resources/Prototypes/Voice/speech_emotes.yml | 193 ++++++++++++++++-- Resources/Prototypes/Voice/tail_emotes.yml | 14 -- Resources/Textures/Interface/emotes.svg | 1 + .../Textures/Interface/emotes.svg.192dpi.png | Bin 0 -> 1818 bytes .../Interface/emotes.svg.192dpi.png.yml | 2 + Resources/keybinds.yml | 3 + 34 files changed, 688 insertions(+), 57 deletions(-) create mode 100644 Content.Client/Chat/UI/EmotesMenu.xaml create mode 100644 Content.Client/Chat/UI/EmotesMenu.xaml.cs create mode 100644 Content.Client/UserInterface/Systems/Emotes/EmotesUIController.cs create mode 100644 Content.Server/Speech/EmotesMenuSystem.cs create mode 100644 Content.Shared/Chat/EmotesEvents.cs rename {Content.Server => Content.Shared}/Speech/Components/VocalComponent.cs (83%) create mode 100644 Resources/Locale/en-US/chat/emotes.ftl create mode 100644 Resources/Locale/en-US/chat/ui/emote-menu.ftl delete mode 100644 Resources/Locale/en-US/emotes/emotes.ftl delete mode 100644 Resources/Prototypes/Voice/tail_emotes.yml create mode 100644 Resources/Textures/Interface/emotes.svg create mode 100644 Resources/Textures/Interface/emotes.svg.192dpi.png create mode 100644 Resources/Textures/Interface/emotes.svg.192dpi.png.yml diff --git a/Content.Client/Chat/UI/EmotesMenu.xaml b/Content.Client/Chat/UI/EmotesMenu.xaml new file mode 100644 index 0000000000..819a6543c4 --- /dev/null +++ b/Content.Client/Chat/UI/EmotesMenu.xaml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Content.Client/Chat/UI/EmotesMenu.xaml.cs b/Content.Client/Chat/UI/EmotesMenu.xaml.cs new file mode 100644 index 0000000000..a26d319920 --- /dev/null +++ b/Content.Client/Chat/UI/EmotesMenu.xaml.cs @@ -0,0 +1,112 @@ +using System.Numerics; +using Content.Client.UserInterface.Controls; +using Content.Shared.Chat.Prototypes; +using Content.Shared.Speech; +using Robust.Client.AutoGenerated; +using Robust.Client.GameObjects; +using Robust.Client.UserInterface.Controls; +using Robust.Client.UserInterface.XAML; +using Robust.Shared.Player; +using Robust.Shared.Prototypes; + +namespace Content.Client.Chat.UI; + +[GenerateTypedNameReferences] +public sealed partial class EmotesMenu : RadialMenu +{ + [Dependency] private readonly EntityManager _entManager = default!; + [Dependency] private readonly IPrototypeManager _prototypeManager = default!; + [Dependency] private readonly ISharedPlayerManager _playerManager = default!; + + private readonly SpriteSystem _spriteSystem; + + public event Action>? OnPlayEmote; + + public EmotesMenu() + { + IoCManager.InjectDependencies(this); + RobustXamlLoader.Load(this); + + _spriteSystem = _entManager.System(); + + var main = FindControl("Main"); + + var emotes = _prototypeManager.EnumeratePrototypes(); + foreach (var emote in emotes) + { + var player = _playerManager.LocalSession?.AttachedEntity; + if (emote.Category == EmoteCategory.Invalid || + emote.ChatTriggers.Count == 0 || + !(player.HasValue && (emote.Whitelist?.IsValid(player.Value, _entManager) ?? true)) || + (emote.Blacklist?.IsValid(player.Value, _entManager) ?? false)) + continue; + + if (!emote.Available && + _entManager.TryGetComponent(player.Value, out var speech) && + !speech.AllowedEmotes.Contains(emote.ID)) + continue; + + var parent = FindControl(emote.Category.ToString()); + + var button = new EmoteMenuButton + { + StyleClasses = { "RadialMenuButton" }, + SetSize = new Vector2(64f, 64f), + ToolTip = Loc.GetString(emote.Name), + ProtoId = emote.ID, + }; + + var tex = new TextureRect + { + VerticalAlignment = VAlignment.Center, + HorizontalAlignment = HAlignment.Center, + Texture = _spriteSystem.Frame0(emote.Icon), + TextureScale = new Vector2(2f, 2f), + }; + + button.AddChild(tex); + parent.AddChild(button); + foreach (var child in main.Children) + { + if (child is not RadialMenuTextureButton castChild) + continue; + + if (castChild.TargetLayer == emote.Category.ToString()) + { + castChild.Visible = true; + break; + } + } + } + + + // Set up menu actions + foreach (var child in Children) + { + if (child is not RadialContainer container) + continue; + AddEmoteClickAction(container); + } + } + + private void AddEmoteClickAction(RadialContainer container) + { + foreach (var child in container.Children) + { + if (child is not EmoteMenuButton castChild) + continue; + + castChild.OnButtonUp += _ => + { + OnPlayEmote?.Invoke(castChild.ProtoId); + Close(); + }; + } + } +} + + +public sealed class EmoteMenuButton : RadialMenuTextureButton +{ + public ProtoId ProtoId { get; set; } +} diff --git a/Content.Client/Input/ContentContexts.cs b/Content.Client/Input/ContentContexts.cs index 8a7ca3b773..7a8a993854 100644 --- a/Content.Client/Input/ContentContexts.cs +++ b/Content.Client/Input/ContentContexts.cs @@ -60,6 +60,7 @@ namespace Content.Client.Input human.AddFunction(ContentKeyFunctions.UseItemInHand); human.AddFunction(ContentKeyFunctions.AltUseItemInHand); human.AddFunction(ContentKeyFunctions.OpenCharacterMenu); + human.AddFunction(ContentKeyFunctions.OpenEmotesMenu); human.AddFunction(ContentKeyFunctions.ActivateItemInWorld); human.AddFunction(ContentKeyFunctions.ThrowItemInHand); human.AddFunction(ContentKeyFunctions.AltActivateItemInWorld); diff --git a/Content.Client/UserInterface/Systems/Emotes/EmotesUIController.cs b/Content.Client/UserInterface/Systems/Emotes/EmotesUIController.cs new file mode 100644 index 0000000000..7b86859a1a --- /dev/null +++ b/Content.Client/UserInterface/Systems/Emotes/EmotesUIController.cs @@ -0,0 +1,125 @@ +using Content.Client.Chat.UI; +using Content.Client.Gameplay; +using Content.Client.UserInterface.Controls; +using Content.Shared.Chat; +using Content.Shared.Chat.Prototypes; +using Content.Shared.Input; +using JetBrains.Annotations; +using Robust.Client.Graphics; +using Robust.Client.Input; +using Robust.Client.UserInterface.Controllers; +using Robust.Client.UserInterface.Controls; +using Robust.Shared.Input.Binding; +using Robust.Shared.Prototypes; + +namespace Content.Client.UserInterface.Systems.Emotes; + +[UsedImplicitly] +public sealed class EmotesUIController : UIController, IOnStateChanged +{ + [Dependency] private readonly IEntityManager _entityManager = default!; + [Dependency] private readonly IClyde _displayManager = default!; + [Dependency] private readonly IInputManager _inputManager = default!; + + private MenuButton? EmotesButton => UIManager.GetActiveUIWidgetOrNull()?.EmotesButton; + private EmotesMenu? _menu; + + public void OnStateEntered(GameplayState state) + { + CommandBinds.Builder + .Bind(ContentKeyFunctions.OpenEmotesMenu, + InputCmdHandler.FromDelegate(_ => ToggleEmotesMenu(false))) + .Register(); + } + + public void OnStateExited(GameplayState state) + { + CommandBinds.Unregister(); + } + + private void ToggleEmotesMenu(bool centered) + { + if (_menu == null) + { + // setup window + _menu = UIManager.CreateWindow(); + _menu.OnClose += OnWindowClosed; + _menu.OnOpen += OnWindowOpen; + _menu.OnPlayEmote += OnPlayEmote; + + if (EmotesButton != null) + EmotesButton.SetClickPressed(true); + + if (centered) + { + _menu.OpenCentered(); + } + else + { + // Open the menu, centered on the mouse + var vpSize = _displayManager.ScreenSize; + _menu.OpenCenteredAt(_inputManager.MouseScreenPosition.Position / vpSize); + } + } + else + { + _menu.OnClose -= OnWindowClosed; + _menu.OnOpen -= OnWindowOpen; + _menu.OnPlayEmote -= OnPlayEmote; + + if (EmotesButton != null) + EmotesButton.SetClickPressed(false); + + CloseMenu(); + } + } + + public void UnloadButton() + { + if (EmotesButton == null) + return; + + EmotesButton.OnPressed -= ActionButtonPressed; + } + + public void LoadButton() + { + if (EmotesButton == null) + return; + + EmotesButton.OnPressed += ActionButtonPressed; + } + + private void ActionButtonPressed(BaseButton.ButtonEventArgs args) + { + ToggleEmotesMenu(true); + } + + private void OnWindowClosed() + { + if (EmotesButton != null) + EmotesButton.Pressed = false; + + CloseMenu(); + } + + private void OnWindowOpen() + { + if (EmotesButton != null) + EmotesButton.Pressed = true; + } + + private void CloseMenu() + { + if (_menu == null) + return; + + _menu.Dispose(); + _menu = null; + } + + private void OnPlayEmote(ProtoId protoId) + { + _entityManager.RaisePredictiveEvent(new PlayEmoteMessage(protoId)); + } +} diff --git a/Content.Client/UserInterface/Systems/MenuBar/GameTopMenuBarUIController.cs b/Content.Client/UserInterface/Systems/MenuBar/GameTopMenuBarUIController.cs index 1505db48a7..e314310bc0 100644 --- a/Content.Client/UserInterface/Systems/MenuBar/GameTopMenuBarUIController.cs +++ b/Content.Client/UserInterface/Systems/MenuBar/GameTopMenuBarUIController.cs @@ -3,6 +3,7 @@ using Content.Client.UserInterface.Systems.Admin; using Content.Client.UserInterface.Systems.Bwoink; using Content.Client.UserInterface.Systems.Character; using Content.Client.UserInterface.Systems.Crafting; +using Content.Client.UserInterface.Systems.Emotes; using Content.Client.UserInterface.Systems.EscapeMenu; using Content.Client.UserInterface.Systems.Gameplay; using Content.Client.UserInterface.Systems.Guidebook; @@ -22,6 +23,7 @@ public sealed class GameTopMenuBarUIController : UIController [Dependency] private readonly ActionUIController _action = default!; [Dependency] private readonly SandboxUIController _sandbox = default!; [Dependency] private readonly GuidebookUIController _guidebook = default!; + [Dependency] private readonly EmotesUIController _emotes = default!; private GameTopMenuBar? GameTopMenuBar => UIManager.GetActiveUIWidgetOrNull(); @@ -44,6 +46,7 @@ public sealed class GameTopMenuBarUIController : UIController _ahelp.UnloadButton(); _action.UnloadButton(); _sandbox.UnloadButton(); + _emotes.UnloadButton(); } public void LoadButtons() @@ -56,5 +59,6 @@ public sealed class GameTopMenuBarUIController : UIController _ahelp.LoadButton(); _action.LoadButton(); _sandbox.LoadButton(); + _emotes.LoadButton(); } } diff --git a/Content.Client/UserInterface/Systems/MenuBar/Widgets/GameTopMenuBar.xaml b/Content.Client/UserInterface/Systems/MenuBar/Widgets/GameTopMenuBar.xaml index 3c8cd1d164..dc8972970a 100644 --- a/Content.Client/UserInterface/Systems/MenuBar/Widgets/GameTopMenuBar.xaml +++ b/Content.Client/UserInterface/Systems/MenuBar/Widgets/GameTopMenuBar.xaml @@ -43,6 +43,16 @@ HorizontalExpand="True" AppendStyleClass="{x:Static style:StyleBase.ButtonSquare}" /> + (source, out var speech) && + !speech.AllowedEmotes.Contains(emote.ID)) + return; + // check if proto has valid message for chat if (emote.ChatMessages.Count != 0) { diff --git a/Content.Server/Speech/EmotesMenuSystem.cs b/Content.Server/Speech/EmotesMenuSystem.cs new file mode 100644 index 0000000000..a69b5a65e4 --- /dev/null +++ b/Content.Server/Speech/EmotesMenuSystem.cs @@ -0,0 +1,30 @@ +using Content.Server.Chat.Systems; +using Content.Shared.Chat; +using Robust.Shared.Prototypes; + +namespace Content.Server.Speech; + +public sealed partial class EmotesMenuSystem : EntitySystem +{ + [Dependency] private readonly IPrototypeManager _prototypeManager = default!; + [Dependency] private readonly ChatSystem _chat = default!; + + public override void Initialize() + { + base.Initialize(); + + SubscribeAllEvent(OnPlayEmote); + } + + private void OnPlayEmote(PlayEmoteMessage msg, EntitySessionEventArgs args) + { + var player = args.SenderSession.AttachedEntity; + if (!player.HasValue) + return; + + if (!_prototypeManager.TryIndex(msg.ProtoId, out var proto) || proto.ChatTriggers.Count == 0) + return; + + _chat.TryEmoteWithChat(player.Value, msg.ProtoId); + } +} diff --git a/Content.Server/Speech/EntitySystems/VocalSystem.cs b/Content.Server/Speech/EntitySystems/VocalSystem.cs index aedcbbd099..7c8ec21a94 100644 --- a/Content.Server/Speech/EntitySystems/VocalSystem.cs +++ b/Content.Server/Speech/EntitySystems/VocalSystem.cs @@ -4,6 +4,7 @@ using Content.Server.Speech.Components; using Content.Shared.Chat.Prototypes; using Content.Shared.Humanoid; using Content.Shared.Speech; +using Content.Shared.Speech.Components; using Robust.Shared.Audio; using Robust.Shared.Audio.Systems; using Robust.Shared.Prototypes; diff --git a/Content.Shared/Chat/EmotesEvents.cs b/Content.Shared/Chat/EmotesEvents.cs new file mode 100644 index 0000000000..4479f8b2ab --- /dev/null +++ b/Content.Shared/Chat/EmotesEvents.cs @@ -0,0 +1,11 @@ +using Content.Shared.Chat.Prototypes; +using Robust.Shared.Prototypes; +using Robust.Shared.Serialization; + +namespace Content.Shared.Chat; + +[Serializable, NetSerializable] +public sealed class PlayEmoteMessage(ProtoId protoId) : EntityEventArgs +{ + public readonly ProtoId ProtoId = protoId; +} diff --git a/Content.Shared/Chat/Prototypes/EmotePrototype.cs b/Content.Shared/Chat/Prototypes/EmotePrototype.cs index 08f209d28d..7ee958ee6a 100644 --- a/Content.Shared/Chat/Prototypes/EmotePrototype.cs +++ b/Content.Shared/Chat/Prototypes/EmotePrototype.cs @@ -1,11 +1,13 @@ +using Content.Shared.Whitelist; using Robust.Shared.Prototypes; using Robust.Shared.Serialization; +using Robust.Shared.Utility; namespace Content.Shared.Chat.Prototypes; /// /// IC emotes (scream, smile, clapping, etc). -/// Entities can activate emotes by chat input or code. +/// Entities can activate emotes by chat input, radial or code. /// [Prototype("emote")] public sealed partial class EmotePrototype : IPrototype @@ -13,18 +15,50 @@ public sealed partial class EmotePrototype : IPrototype [IdDataField] public string ID { get; private set; } = default!; + /// + /// Localization string for the emote name. Displayed in the radial UI. + /// + [DataField(required: true)] + public string Name = default!; + + /// + /// Determines if emote available to all by default + /// check comes after this setting + /// can ignore this setting + /// + [DataField] + public bool Available = true; + /// /// Different emote categories may be handled by different systems. /// Also may be used for filtering. /// - [DataField("category")] + [DataField] public EmoteCategory Category = EmoteCategory.General; + /// + /// An icon used to visually represent the emote in radial UI. + /// + [DataField] + public SpriteSpecifier Icon = new SpriteSpecifier.Texture(new("/Textures/Interface/Actions/scream.png")); + + /// + /// Determines conditions to this emote be available to use + /// + [DataField] + public EntityWhitelist? Whitelist; + + /// + /// Determines conditions to this emote be unavailable to use + /// + [DataField] + public EntityWhitelist? Blacklist; + /// /// Collection of words that will be sent to chat if emote activates. /// Will be picked randomly from list. /// - [DataField("chatMessages")] + [DataField] public List ChatMessages = new(); /// @@ -32,7 +66,7 @@ public sealed partial class EmotePrototype : IPrototype /// When typed into players chat they will activate emote event. /// All words should be unique across all emote prototypes. /// - [DataField("chatTriggers")] + [DataField] public HashSet ChatTriggers = new(); } diff --git a/Content.Shared/Chat/Prototypes/EmoteSoundsPrototype.cs b/Content.Shared/Chat/Prototypes/EmoteSoundsPrototype.cs index c9a78e7d6d..2b7064c1e9 100644 --- a/Content.Shared/Chat/Prototypes/EmoteSoundsPrototype.cs +++ b/Content.Shared/Chat/Prototypes/EmoteSoundsPrototype.cs @@ -1,5 +1,6 @@ using Robust.Shared.Audio; using Robust.Shared.Prototypes; +using Robust.Shared.Serialization; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.Dictionary; namespace Content.Shared.Chat.Prototypes; @@ -8,8 +9,8 @@ namespace Content.Shared.Chat.Prototypes; /// Sounds collection for each . /// Different entities may use different sounds collections. ///