From 7bf79e8a536fbb5b87118402e057ce3b24ea8e46 Mon Sep 17 00:00:00 2001 From: Hero010h <163765999+Hero010h@users.noreply.github.com> Date: Wed, 12 Feb 2025 20:08:54 +0300 Subject: [PATCH 1/2] =?UTF-8?q?=D0=9F=D1=80=D0=BE=D1=82=D0=BE=D1=82=D0=B8?= =?UTF-8?q?=D0=BF=20=D0=BF=D0=BB=D0=B0=D1=89=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Entities/Clothing/Head/raincoats_hood.yml | 11 ++ .../Entities/Clothing/Neck/raincoat.yml | 41 +++++ .../hoodgreenraincoat.rsi/equipped-HELMET.png | Bin 0 -> 647 bytes .../Raincoats/hoodgreenraincoat.rsi/icon.png | Bin 0 -> 318 bytes .../Raincoats/hoodgreenraincoat.rsi/meta.json | 18 ++ .../hoodredraincoat.rsi/equipped-HELMET.png | Bin 0 -> 642 bytes .../Raincoats/hoodredraincoat.rsi/icon.png | Bin 0 -> 321 bytes .../Raincoats/hoodredraincoat.rsi/meta.json | 18 ++ .../Raincoats/raincoats.rsi/equipped-NECK.png | Bin 0 -> 4040 bytes .../Neck/Raincoats/raincoats.rsi/icon.png | Bin 0 -> 607 bytes .../Neck/Raincoats/raincoats.rsi/icon_red.png | Bin 0 -> 606 bytes .../Raincoats/raincoats.rsi/inhand-left.png | Bin 0 -> 510 bytes .../Raincoats/raincoats.rsi/inhand-right.png | Bin 0 -> 501 bytes .../Neck/Raincoats/raincoats.rsi/meta.json | 173 ++++++++++++++++++ .../raincoats.rsi/red-equipped-NECK.png | Bin 0 -> 4274 bytes .../raincoats.rsi/red-inhand-left.png | Bin 0 -> 474 bytes .../raincoats.rsi/red-inhand-right.png | Bin 0 -> 473 bytes 17 files changed, 261 insertions(+) create mode 100644 Resources/Prototypes/_White/Entities/Clothing/Head/raincoats_hood.yml create mode 100644 Resources/Prototypes/_White/Entities/Clothing/Neck/raincoat.yml create mode 100644 Resources/Textures/White/Clothing/Head/Hoods/Raincoats/hoodgreenraincoat.rsi/equipped-HELMET.png create mode 100644 Resources/Textures/White/Clothing/Head/Hoods/Raincoats/hoodgreenraincoat.rsi/icon.png create mode 100644 Resources/Textures/White/Clothing/Head/Hoods/Raincoats/hoodgreenraincoat.rsi/meta.json create mode 100644 Resources/Textures/White/Clothing/Head/Hoods/Raincoats/hoodredraincoat.rsi/equipped-HELMET.png create mode 100644 Resources/Textures/White/Clothing/Head/Hoods/Raincoats/hoodredraincoat.rsi/icon.png create mode 100644 Resources/Textures/White/Clothing/Head/Hoods/Raincoats/hoodredraincoat.rsi/meta.json create mode 100644 Resources/Textures/White/Clothing/Neck/Raincoats/raincoats.rsi/equipped-NECK.png create mode 100644 Resources/Textures/White/Clothing/Neck/Raincoats/raincoats.rsi/icon.png create mode 100644 Resources/Textures/White/Clothing/Neck/Raincoats/raincoats.rsi/icon_red.png create mode 100644 Resources/Textures/White/Clothing/Neck/Raincoats/raincoats.rsi/inhand-left.png create mode 100644 Resources/Textures/White/Clothing/Neck/Raincoats/raincoats.rsi/inhand-right.png create mode 100644 Resources/Textures/White/Clothing/Neck/Raincoats/raincoats.rsi/meta.json create mode 100644 Resources/Textures/White/Clothing/Neck/Raincoats/raincoats.rsi/red-equipped-NECK.png create mode 100644 Resources/Textures/White/Clothing/Neck/Raincoats/raincoats.rsi/red-inhand-left.png create mode 100644 Resources/Textures/White/Clothing/Neck/Raincoats/raincoats.rsi/red-inhand-right.png diff --git a/Resources/Prototypes/_White/Entities/Clothing/Head/raincoats_hood.yml b/Resources/Prototypes/_White/Entities/Clothing/Head/raincoats_hood.yml new file mode 100644 index 0000000000..64efb9709c --- /dev/null +++ b/Resources/Prototypes/_White/Entities/Clothing/Head/raincoats_hood.yml @@ -0,0 +1,11 @@ +- type: entity + parent: ClothingHeadHatHoodWinterBase + id: ClothingHeadHatHoodRaincoat + noSpawn: true + name: капюшок + description: Если хочешь быть загадочным и привлекательным. + components: + - type: Sprite + sprite: White/Clothing/Head/Hoods/Raincoats/hoodgreenraincoat.rsi + - type: Clothing + sprite: White/Clothing/Head/Hoods/Raincoats/hoodgreenraincoat.rsi diff --git a/Resources/Prototypes/_White/Entities/Clothing/Neck/raincoat.yml b/Resources/Prototypes/_White/Entities/Clothing/Neck/raincoat.yml new file mode 100644 index 0000000000..3922b5884e --- /dev/null +++ b/Resources/Prototypes/_White/Entities/Clothing/Neck/raincoat.yml @@ -0,0 +1,41 @@ +- type: entity + parent: [ClothingNeckBase, BaseFoldable] + id: ClothingOuterWinterRaincoat + name: winter coat with hood + components: + - type: ToggleableClothing + clothingPrototype: ClothingHeadHatHoodRaincoat + requiredSlot: NECK + - type: ContainerContainer + containers: + toggleable-clothing: !type:ContainerSlot {} + storagebase: !type:Container + ents: [] + slot: head + - type: Clothing + sprite: White/Clothing/Neck/Raincoats/raincoats.rsi + - type: EmitSoundOnPickup + sound: + path: /Audio/White/Items/handling/cloth_pickup.ogg + - type: EmitSoundOnDrop + sound: + path: /Audio/White/Items/handling/cloth_drop.ogg + - type: EmitSoundOnLand + sound: + path: /Audio/White/Items/handling/cloth_drop.ogg + - type: Appearance + - type: Foldable + canFoldInsideContainer: true + unfoldVerbText: fold-flip-verb + foldVerbText: fold-flip-verb + - type: FoldableClothing + foldedEquippedPrefix: red + foldedHeldPrefix: red + - type: Sprite + sprite: White/Clothing/Neck/Raincoats/raincoats.rsi + layers: + - state: icon + map: [ "unfoldedLayer" ] + - state: icon_red + map: ["foldedLayer"] + visible: false \ No newline at end of file diff --git a/Resources/Textures/White/Clothing/Head/Hoods/Raincoats/hoodgreenraincoat.rsi/equipped-HELMET.png b/Resources/Textures/White/Clothing/Head/Hoods/Raincoats/hoodgreenraincoat.rsi/equipped-HELMET.png new file mode 100644 index 0000000000000000000000000000000000000000..5a715fbfb1c3ef02cda521d9be7e2730b03a0103 GIT binary patch literal 647 zcmV;20(kw2P)Px%K}keGRCt{2+OccYP#g#FZ?CyxIXOGI zISTDRaDxaA?$<%VrQpGlw$M5hRETgF6nc%%xRyJYRBLZL)QT2Y#-;CLMn+Pw>Xl(y%5|MH0%6FG_&pYV-Zc9qbRvm!H4Ir$@I2 zrDZrz$Df3B{Ht3Zu)ndK#K%Kl+@EN$7ard;eg6n`-9UY-mDKk)))3c!efDx}2}sBH zwu7X;b6e$(Uy~ecH`~eNBZE$4&^bOi`CQvCl<#~PaXig?Erb>ixL1J znf#y_&d$z#QA$PWD`K3ky!j}qA4Qyiln}rjX?)0)WZCh!GJH5fKp)5fKs5v?^_X z08q_e(`Cmlv_BxbI^(!{tjpuW7DX(}ia+LxE&77BzG}|jy?JW;x7Y6h0O6~5r6<8! zUo`+QD!w$f=nAOoMl#9M+WY>Iq)U;r#Fr9f%W<{o-oNonU2U_KER`#z=6Cn}74ay} z==wFi69mCA01E(qJXrJ6?RK**z88oSkp2yJdp(5Rpo0n~A4?~}vXz$|k2C>A_6PhE z3Mas_l~>i-2Y}r@e?=)ZZ`sNlee`IB5)fa0RZTt?#~Zd!KuY|$%D#w9a$Wv!8VeB- h5fKp)5fKqhho6bB?;WXTj{pDw002ovPDHLkV1lHlEcXBa literal 0 HcmV?d00001 diff --git a/Resources/Textures/White/Clothing/Head/Hoods/Raincoats/hoodgreenraincoat.rsi/icon.png b/Resources/Textures/White/Clothing/Head/Hoods/Raincoats/hoodgreenraincoat.rsi/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..675d2813863aa91c67844fb06bb431ab7b22728c GIT binary patch literal 318 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}KRjI=Ln2y} z6C_v{Cy4YkP2`g}c~NEkf^YJ%Zyq*Br_4O+)b})K(xe+p{!M<&G0Eh^kJ~+IG4fsQ z_o_u_RihT}X}a~_f8i|w?`N`UKR*4Hj_GTk-2Je8k}fj{+<&!NWhwilOATlG+{#tOv-!xoa9|iP Nc)I$ztaD0e0swdBjdcJ3 literal 0 HcmV?d00001 diff --git a/Resources/Textures/White/Clothing/Head/Hoods/Raincoats/hoodgreenraincoat.rsi/meta.json b/Resources/Textures/White/Clothing/Head/Hoods/Raincoats/hoodgreenraincoat.rsi/meta.json new file mode 100644 index 0000000000..515e8ab091 --- /dev/null +++ b/Resources/Textures/White/Clothing/Head/Hoods/Raincoats/hoodgreenraincoat.rsi/meta.json @@ -0,0 +1,18 @@ +{ + "version": 1, + "license": "CC-BY-SA-4.0", + "copyright": "Archestratigus АКА Заступник", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "equipped-HELMET", + "directions": 4 + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/White/Clothing/Head/Hoods/Raincoats/hoodredraincoat.rsi/equipped-HELMET.png b/Resources/Textures/White/Clothing/Head/Hoods/Raincoats/hoodredraincoat.rsi/equipped-HELMET.png new file mode 100644 index 0000000000000000000000000000000000000000..f69eee0855767b592db589d7d61bc618c69cfbff GIT binary patch literal 642 zcmV-|0)737P)Px%JV``BRCt{2+COj8Ko|z_Cv{be$cfb>K}v-b3xVaS9kMa?LogvBF|jc*^%Hbr zV(U~1i7B6esZ+NOAR$F=hjgJ5MX3@;ky6zh3${#139tW!!1J5pJNw?d*O%DJ9YFuL zN}7w>j;m+O&ij63BE+Ywf#}{4Dc3izb4dUbd#uoOzevXg#%v#|y z;a#g0-~Bg^iZ-5=B;y}@+j05h z-pADO*CZ!*?PfgqP@@-W^saAiz8qGJPaV@l*KSIh6N};}2M++p-Zs+47bO5dJoq1n zW5Za#R7!=(8BwJ7_aBJL7ZE2QVGQ7oQYr*+kf9xU;PLpk#}cBazWQF(M)&A|fIpA|fJMRk`gC0LuAm zI`7z-_6N+a&a@r3&^-e47DX(}iar*z@qrl z*rFNGG0k|8x7D9ar;;W`{v`gq9!0DO4qmdISu_F|b55KX_b1|Nyy&D$p+C4OAZzKASyUH)(C3lR|!5fKp) c5fQD1?-b4FY|6vz761SM07*qoM6N<$g8L6DxBvhE literal 0 HcmV?d00001 diff --git a/Resources/Textures/White/Clothing/Head/Hoods/Raincoats/hoodredraincoat.rsi/icon.png b/Resources/Textures/White/Clothing/Head/Hoods/Raincoats/hoodredraincoat.rsi/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..24efe39da4ad253f8da9a4d285cfb5057d09f5ba GIT binary patch literal 321 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}zdci+jR#(2$ZeE2y%s3#>s$mb}aR5 zdedqY3Z;Uzw{=0GlwKp_Tgoet|BTg@g~&zehKrpIs-#tG1cg$K#M&M_bu(k)G2ya? z51j#yY`WW&@w~oiD)bizzd<#77naNAsP%QlKdm<^YI0re(Wn=O+xe(^-LH8PT-tLW$lkCNA^c8(Svit7u2a);Wq0>ESKa1FE(+up!^{J>-hNj|qJItKIM z+Yh%rqNFVhLN!}veA05C^O$BX#+cVCLmplIz3bf5#^uW~^RFlL;mnlG%r2!kKDI6# z>o&~CmpD3w@{_%K69=k&(+fL4H{2B(&$ja6aN$k?>_yb*y)ypm7 zvmXc|eapUK;3ouWqO^RkbvCuql4yZVOMUFsz2|1O?8bKYS2RMEuVTh0 z{<0|AN?d3HQE3>txOvz2t7WMLvoWdY81_9BUh=Lv;T>*5 z$VdRnWXHC>uFoBJk=@SL(2KUoqSPo}e>BZh?q3V_`Q;WUywm2gS}QE&NVyE~EYNV{ zR-5A%!*cZA0ykVp%VUVQF|#Q^i#Hu2QhT`bH!D7!Zz!4|vM-Bg@0(^WQ{kkXVj?>o zY5lOZ8nOr@HTcWi!r;{Rys5Spnypf~WcwXn08EcKnvAi0?U7E8|!oc6^m^mx%pgT2%)~*SEVLm8#V9aa3sZbJbjtiUgTPUI6^ks+H|YV+Sjm z-n02mme7#Cy~mWfTh{w;;OnHQVrZBTV@04Z8x||-FyZp0`&T=-x7Lsa4Id6qREf?E zO_`8AC3f0*{WeG4yZ7tl$TM4o&yX1Uz@%-Q^>K7UKipeN?~0!>casdaX?zWj|SC$ z;OgH_@sx!F6rIwHJ2PI#|77L|qq<_JoIm!)uSP%xR)&)tqF>Jk5GT$O)||Za>8>X4 zNre9v@-Fn)P@n+d6hU{)zw?a*ZPv<_tj_+Y){6sL|%JO`CqfWO7%6@6Hsn?t^%6Vm1$64?p9;HfoZjCnN-$_bD4q$Y-xzTA_Xiq4IS}O^HCT z((>%)Wu*WT^`f?l|HaM658VqgsTnwB#7;_;Fs^}5I(jeYzR{H z>0#SqQgXhmI|+znm;xE6GDszQzT;w`3b}^*Iq$YDZvG|IozbEKt@$oQT>AS0NCL!2 zp2Ct&xr+Op9baT|+AAF!VJ-ov9sT;I3v_`2Cr-m(IA-N7_%0r;hG8S% zsJ{vXtOO)lIsE;ES{|TV8!o)EvsvEK3GX_)jN4Mddr9cI6ve^i5wmB`lG1+$dsh8U zk*j+Z_eBi0#)cq+CI)QkD z(J<aasOGs*#+^K2o;5w$c9srHLd8QNwk`9XR=AStiH-AQgbH#&~-C;PW+qggXWu4N5)sc_2?Lowr4ze zJaZuI2Gc@~Uymlr@gj`8jbJ}Ja4Unt2G;Gtf-MkkQtK&}6dNhJ zk1C8>#Ve=mz5!U!^$D=_sRrwOk)n+T_p)eyWkNlNxpAt?WHigHFYJ2}=_+znX<1I;s)yMC! zqZwCrj}SKx%}3#zpdlT=ge0&ocCh`3T&nUI}4=Q9@!_l6mmBL}L29ZAkpzy4XK2J=Y3>#k3uxn5VJhC>#N>A+{?eqlz??$g& zkL(9Bj98+AZTE?xcMX0Am98_WY6=|l{)5C4Zij-o1QwxMF#^=#Vy&SpTufk29*!J1 zeKXIh4P(&SeSVSTSgG5FI^dGSiz^FF9X>t1^l$tBKR*;J3pfYh>f{R%gE|W)EAtk} ziJkL&sr$n|@r}#MUTj#lphiyZpuul8NXPWu5=u$!{qeD7#A$Ni=i(^KkeVAzkDJ`f z8(0w1WBZ0i3#brtlBSIq7}f-Cg2X{*V!kL}`?b&&5!;96o8e*^Mi;x3wn8{3jf1z{ zRoL|PSGIl)pRtP?EsakW0G8d^t*P}r@~tDw5tXf=z=>ILmP4-yy?<@VcJinMlo7l8 z9zhDyWo?bTnF6OA0h#*@%s%*dWxOw9I-LQXPdL;ic}sjYwC+8J2;5GZqFKa;nigI3 zc>b3T%+P>iS6xGvIB;DJG+gpEI@Ux-?jmY29$SaYj+_foGy56WJ6Zyi%kYeOL369l z6f=f^Z$C$##qLC8ESem1-dM~U8ZDCIyTLvMb)lAp{Z8_CGNdO*1RoD#u3}IYr8axp z7v&EbXLfH`O-?qx9-*J(Y0Y;`q=d4aP4yS8_725ubsZGy_36lE$|#g8_UVmVXA$=o zlkvXfZ3A!SW74{X(j+vX^_8d##>{~nsOZblxWEtSsrbK0(=qgm?0t^}og-zIg06$u zCL#w124mZ&%lbIsN3<60bu{3x>UmF+8NWtG*BxQ;=^p{bF#7@?HSfL?5ZamQ9pKOO ztR33fAAtE*Yccj)F!!yL-S$dzDs(X(Ui?2!6@LrLeYVnddT>}8nPjKFm{BKa;QNA) zuRVtS^9<01wp7v#+ssGQ9TD7zxhL+pdDZh5JF7cMzdxf}zIvugA{~kuu-t)_cH{#;zW9Vle;R_NA*$Q%BtA;Ec?T1c%ukGSPL$LIk_GBC&|*yBlC^J}$Ne}duQ>}w;=DZTt8)?h zJd$DXTB`F7`&d4tx&Q@?KCpZ10pw_Vf88oI6smyiEK(Yp4k1=tf#xoA=Nh`5%3=|d zFoMK$%>kzw0iOV}pqdSzAPeS>2?*1An2VwAN)K&6Q2OE1UCgzs&ixzPu(7bxvqihQ z0s7z+86r&T*2UsTQ<4HnWw>?MivNeUVNuA}`TTqqnOq4k{S%WzZ#Bd8iDYxkVgxh! ee}QiEzu=YicVyw(p16d$N$g=q+Y*~|k^crF1eo9e literal 0 HcmV?d00001 diff --git a/Resources/Textures/White/Clothing/Neck/Raincoats/raincoats.rsi/icon.png b/Resources/Textures/White/Clothing/Neck/Raincoats/raincoats.rsi/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..975bd8a9d0a26b303d5d5ac978a440f67ac779ab GIT binary patch literal 607 zcmV-l0-*hgP)Px%8A(JzR9J=Wma%ISQ5?rViU$#10;M4IDBii;c2vbB#6eml5^%^8I+Xqa$Jzle#;!;oXqD1&w&7L5)g2f!s2(s}WdPN%0i zf4=#(p`;y1GEB=|-z)?0u>Kr?>59hNdtI(Rd&Bp~_hk(5`pzQ&GU=p}38f>b?CvqM zI4k3_-ekI>Ni$`=DRVQ6vs8BXRAhq<7^dZBb9uHlR?h< z`M&ew$G|NzOv}|LCIE082O$KXuKhr>bYd?*b2K%^jW0j>_TW0*Mhm+gkvxFb;bGu0 zC>?=c)NV(Z+&KV1vvdF^cMh=I5dee`IF6$tt7gD2=6!o+G)qSaA>&@$3mfnY4(cu_ zKePeEwA^?i6b|P+j4!axQq~jlTL?jqjhHc=jInA z@59IU)T*VxA?$0wL#iLITUDp5r002ovPDHLkV1f$981w)D literal 0 HcmV?d00001 diff --git a/Resources/Textures/White/Clothing/Neck/Raincoats/raincoats.rsi/icon_red.png b/Resources/Textures/White/Clothing/Neck/Raincoats/raincoats.rsi/icon_red.png new file mode 100644 index 0000000000000000000000000000000000000000..9f5ae23938b30b74267c059c54c64a90a1453b64 GIT binary patch literal 606 zcmV-k0-^nhP)Px%7)eAyR9J=WmOn@vQ5?rVEroM7TXG+Cr!xbclC@H(iJJ9;Z!mFO>|1`%d?Jzc1h4 z_xIk9_YPvjh!Nv|f^L|;ZkT?rxxN>_iizvJkOvb9y6wPVBGHQ+0M}GVm&MN(hg z{`cBiJLnGt(U=H{~#93C90$VMB`4bv}`E9`8o;#p}{TCJ{PE3Foum1bval~TFV zabCjcx<$HS`nQLN0dQRxAq3i|cce6p&6~FvJ#F%H{0M-JkRPKiIm<7cvY?%lmF*Vn6y2q8Fg92)267q)+9c24p> ze0)#6W=9TTM*{)sHJf_PmT{?EVZFL2OH!ynIybv!hEwHh@N3oEj z;dubOtZq^){3kV)PTg09NVh%O1IZlK=n!07*qoM6N<$f=m|>^Z)<= literal 0 HcmV?d00001 diff --git a/Resources/Textures/White/Clothing/Neck/Raincoats/raincoats.rsi/inhand-left.png b/Resources/Textures/White/Clothing/Neck/Raincoats/raincoats.rsi/inhand-left.png new file mode 100644 index 0000000000000000000000000000000000000000..ca08a6997ae0333d3d8dfa6c0d6a785080b14118 GIT binary patch literal 510 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D%zcX+xuhE&XX zd&@rikb?xyLthXT|%SkI#IPb8vxy%olB%IlC3N-Sv-t{~^SEk@PYN zp5u$|6q-9lhsD0JmWT=3?hBU5Saiu&2!B;RPn6h#RXG-kN{7 zTqNXoam|@D4bkq3{CS6W?>j!Vy76Vo6pMLzGal{y-j%kU_bj)7o1oSzuKR%>Dz95x zyx+B1r>kYHl!?BB%<&6*81^l$x!|%x%mq!9mN7aFO*)UQ67^R zSsM6mhjw(`-~5f)d%sGl|M$J|jrYW^I=Rx$4mf!6|HPi_Wjv>SC&m8ib)Q3n}(zu9r6^s*Hzv<_)R`P5lSiY}WR=xCO@`tQ$slI6D;&*oJdKJaIpe9tmO=J<*g yuiV6bM$hv;acAY0Ws`5cUp{GaN5_l)A57D@uE;7+XtoAMD1)b~pUXO@geCx3Y3Qf` literal 0 HcmV?d00001 diff --git a/Resources/Textures/White/Clothing/Neck/Raincoats/raincoats.rsi/inhand-right.png b/Resources/Textures/White/Clothing/Neck/Raincoats/raincoats.rsi/inhand-right.png new file mode 100644 index 0000000000000000000000000000000000000000..23a29aa6715605773b14e4b09ac94faab13bf320 GIT binary patch literal 501 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D%z*L%7+hE&XX zd&@SvIY5N%f%#qG3ugsZO=jr|R&zXYV~x}8h0e?WH8s>PE_roF)7dD+w0fG)Or}Yy z@>6!CX57hdPukGQo3&wQ>vu+W{i=66kFP#0sGtM`3>SEVW%_QGMK9?+y(VDau0*cW zS+aLmRIHofBmRFCN9(7nyum)pxD#*ZPL%29pV>X(jP_~f)k|1k@VmeGvMb|9cFnu8 z71>fu?ykjqTpz4h!JEd=aJ8tezXBYL~ZTrKWF;qxVX)Z?JIxAEoJr8 zlVbpCI2^CswdnoF-?Jx84~#h+|M=@$S%z;vpNr*xeX{e>&O@7`oIb{6ZnrP^b54HU z(hX0{AG}FWon&hdb2*USHD_~m^+~sup1p@I0lna}tlR#jg!j#_8{cm0=-<>m!L)3i zOwjJb%QfcxUi@(fr!z|*7ehteuG7+b+n@Z||B~Mw=%3XLyAr#eRqW26vToYvQ(2bl zudo@j^zHgT{lTQ@P;;M)FH4QZ6~FU!%rE=YEH1uqU1rB3jrg-!~`SrBP oM^>Ip&6zopr05%)tQvd(} literal 0 HcmV?d00001 diff --git a/Resources/Textures/White/Clothing/Neck/Raincoats/raincoats.rsi/meta.json b/Resources/Textures/White/Clothing/Neck/Raincoats/raincoats.rsi/meta.json new file mode 100644 index 0000000000..0bb0df38de --- /dev/null +++ b/Resources/Textures/White/Clothing/Neck/Raincoats/raincoats.rsi/meta.json @@ -0,0 +1,173 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Archestratigus АКА Заступник", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "red-inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + }, + { + "name": "red-inhand-right", + "directions": 4 + }, + { + "name": "icon" + }, + { + "name": "icon_red" + }, + { + "name": "red-equipped-NECK", + "directions": 4, + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "equipped-NECK", + "directions": 4, + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/White/Clothing/Neck/Raincoats/raincoats.rsi/red-equipped-NECK.png b/Resources/Textures/White/Clothing/Neck/Raincoats/raincoats.rsi/red-equipped-NECK.png new file mode 100644 index 0000000000000000000000000000000000000000..347940d4058541b7eec26cc887a6eaed9626cf0b GIT binary patch literal 4274 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 M)78&qol`;+03^}bQvd(} literal 0 HcmV?d00001 diff --git a/Resources/Textures/White/Clothing/Neck/Raincoats/raincoats.rsi/red-inhand-right.png b/Resources/Textures/White/Clothing/Neck/Raincoats/raincoats.rsi/red-inhand-right.png new file mode 100644 index 0000000000000000000000000000000000000000..4c9995dfb40fc919c7b541484547e9a658fa2c65 GIT binary patch literal 473 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D%zCwsa$hE&XX zdvjyfp#TxK2lw|m>~wDTP*8M!F^SJAc6!742X|KHPY{23WoNO5g*ksffzX^IuCcE! ztW^8`vcx%St#8jt!GHWs1)b05Rlid_&Da4091Jqor{6VQ>wI(jy)^fyuXpTYar}Q= zUU_MXQEXg@VBe|hg|#z%rY|bhIBNQN%TA7?d-`@66d&-=I>U+2 z>vO)h$zDHieW>Js=A_(1?{ep_iSEANaO+oh+E%aG@jw63 z$LyC%AzBTOe|;*ep3d)eeYI=)-l&qeb@>J}&TsGyF429xX6>sT`;Hur1FCz+P<;C+ z|2$2n>zgK|MqZt;bY?A|?3q2n{MBbw3Nt>N^`5^yiCs`Iu)CJg@YF@6b6#mrfN{m( M>FVdQ&MBb@0E8#t&;S4c literal 0 HcmV?d00001 From 29030466368870bad1aa76fd3fa7db9da55cc69c Mon Sep 17 00:00:00 2001 From: BIGZi0348 Date: Sun, 16 Feb 2025 11:22:46 +0300 Subject: [PATCH 2/2] Raincoat --- .../FluffColorForClothingSystem.cs | 32 ++++ .../FluffColorForClothingSystem.cs | 57 ++++++ .../FluffColorForClothingComponent.cs | 39 ++++ .../SharedFluffColorForClothingSystem.cs | 104 +++++++++++ .../Entities/Clothing/Head/raincoats_hood.yml | 11 -- .../Entities/Clothing/Neck/raincoat.yml | 41 ----- Resources/Prototypes/_White/Fluff/vkuser.yml | 66 +++++++ .../Raincoats/hoodgreenraincoat.rsi/icon.png | Bin 318 -> 0 bytes .../Raincoats/hoodgreenraincoat.rsi/meta.json | 18 -- .../Raincoats/hoodredraincoat.rsi/icon.png | Bin 321 -> 0 bytes .../Raincoats/hoodredraincoat.rsi/meta.json | 18 -- .../Neck/Raincoats/raincoats.rsi/meta.json | 173 ------------------ .../green-equipped-HELMET.png} | Bin .../vkuser/hoodraincoat.rsi/icon_green.png | Bin 0 -> 374 bytes .../vkuser/hoodraincoat.rsi/icon_red.png | Bin 0 -> 377 bytes .../Fluff/vkuser/hoodraincoat.rsi/meta.json | 25 +++ .../hoodraincoat.rsi/red-equipped-HELMET.png} | Bin .../raincoat.rsi/green-equipped-NECK.png} | Bin .../raincoat.rsi/green-inhand-left.png} | Bin .../raincoat.rsi/green-inhand-right.png} | Bin .../vkuser/raincoat.rsi/icon_green.png} | Bin .../vkuser/raincoat.rsi}/icon_red.png | Bin .../White/Fluff/vkuser/raincoat.rsi/meta.json | 173 ++++++++++++++++++ .../raincoat.rsi}/red-equipped-NECK.png | Bin .../vkuser/raincoat.rsi}/red-inhand-left.png | Bin .../vkuser/raincoat.rsi}/red-inhand-right.png | Bin 26 files changed, 496 insertions(+), 261 deletions(-) create mode 100644 Content.Client/_White/FluffColorForClothing/FluffColorForClothingSystem.cs create mode 100644 Content.Server/_White/FluffColorForClothing/FluffColorForClothingSystem.cs create mode 100644 Content.Shared/_White/FluffColorForClothing/FluffColorForClothingComponent.cs create mode 100644 Content.Shared/_White/FluffColorForClothing/SharedFluffColorForClothingSystem.cs delete mode 100644 Resources/Prototypes/_White/Entities/Clothing/Head/raincoats_hood.yml delete mode 100644 Resources/Prototypes/_White/Entities/Clothing/Neck/raincoat.yml create mode 100644 Resources/Prototypes/_White/Fluff/vkuser.yml delete mode 100644 Resources/Textures/White/Clothing/Head/Hoods/Raincoats/hoodgreenraincoat.rsi/icon.png delete mode 100644 Resources/Textures/White/Clothing/Head/Hoods/Raincoats/hoodgreenraincoat.rsi/meta.json delete mode 100644 Resources/Textures/White/Clothing/Head/Hoods/Raincoats/hoodredraincoat.rsi/icon.png delete mode 100644 Resources/Textures/White/Clothing/Head/Hoods/Raincoats/hoodredraincoat.rsi/meta.json delete mode 100644 Resources/Textures/White/Clothing/Neck/Raincoats/raincoats.rsi/meta.json rename Resources/Textures/White/{Clothing/Head/Hoods/Raincoats/hoodgreenraincoat.rsi/equipped-HELMET.png => Fluff/vkuser/hoodraincoat.rsi/green-equipped-HELMET.png} (100%) create mode 100644 Resources/Textures/White/Fluff/vkuser/hoodraincoat.rsi/icon_green.png create mode 100644 Resources/Textures/White/Fluff/vkuser/hoodraincoat.rsi/icon_red.png create mode 100644 Resources/Textures/White/Fluff/vkuser/hoodraincoat.rsi/meta.json rename Resources/Textures/White/{Clothing/Head/Hoods/Raincoats/hoodredraincoat.rsi/equipped-HELMET.png => Fluff/vkuser/hoodraincoat.rsi/red-equipped-HELMET.png} (100%) rename Resources/Textures/White/{Clothing/Neck/Raincoats/raincoats.rsi/equipped-NECK.png => Fluff/vkuser/raincoat.rsi/green-equipped-NECK.png} (100%) rename Resources/Textures/White/{Clothing/Neck/Raincoats/raincoats.rsi/inhand-left.png => Fluff/vkuser/raincoat.rsi/green-inhand-left.png} (100%) rename Resources/Textures/White/{Clothing/Neck/Raincoats/raincoats.rsi/inhand-right.png => Fluff/vkuser/raincoat.rsi/green-inhand-right.png} (100%) rename Resources/Textures/White/{Clothing/Neck/Raincoats/raincoats.rsi/icon.png => Fluff/vkuser/raincoat.rsi/icon_green.png} (100%) rename Resources/Textures/White/{Clothing/Neck/Raincoats/raincoats.rsi => Fluff/vkuser/raincoat.rsi}/icon_red.png (100%) create mode 100644 Resources/Textures/White/Fluff/vkuser/raincoat.rsi/meta.json rename Resources/Textures/White/{Clothing/Neck/Raincoats/raincoats.rsi => Fluff/vkuser/raincoat.rsi}/red-equipped-NECK.png (100%) rename Resources/Textures/White/{Clothing/Neck/Raincoats/raincoats.rsi => Fluff/vkuser/raincoat.rsi}/red-inhand-left.png (100%) rename Resources/Textures/White/{Clothing/Neck/Raincoats/raincoats.rsi => Fluff/vkuser/raincoat.rsi}/red-inhand-right.png (100%) diff --git a/Content.Client/_White/FluffColorForClothing/FluffColorForClothingSystem.cs b/Content.Client/_White/FluffColorForClothing/FluffColorForClothingSystem.cs new file mode 100644 index 0000000000..a17cd1b50e --- /dev/null +++ b/Content.Client/_White/FluffColorForClothing/FluffColorForClothingSystem.cs @@ -0,0 +1,32 @@ +using Content.Shared.Clothing.Components; +using Content.Shared.Clothing.EntitySystems; +using Content.Shared.Item; +using Robust.Client.GameObjects; + +namespace Content.Shared._White.FluffColorForClothing; + +public sealed class FluffColorForClothingSystem : SharedFluffColorForClothingSystem +{ + [Dependency] private readonly ClothingSystem _clothingSystem = default!; + [Dependency] private readonly SharedItemSystem _itemSystem = default!; + + protected override void UpdateVisuals(EntityUid uid, FluffColorForClothingComponent component) + { + if (!TryComp(uid, out SpriteComponent? sprite)) + return; + + var state = sprite.LayerGetState(0).Name; + if (state == null) + return; + + var prefix = state.Substring(0, state.IndexOf('_')); + sprite.LayerSetState(0, $"{prefix}_{component.CurrentColor}"); + + if (TryComp(uid, out var clothingComp)) + _clothingSystem.SetEquippedPrefix(uid, component.CurrentColor, clothingComp); + + if (TryComp(uid, out var itemComp)) + _itemSystem.SetHeldPrefix(uid, component.CurrentColor, false, itemComp); + } + +} diff --git a/Content.Server/_White/FluffColorForClothing/FluffColorForClothingSystem.cs b/Content.Server/_White/FluffColorForClothing/FluffColorForClothingSystem.cs new file mode 100644 index 0000000000..536ac5a427 --- /dev/null +++ b/Content.Server/_White/FluffColorForClothing/FluffColorForClothingSystem.cs @@ -0,0 +1,57 @@ +using System.Linq; +using Content.Shared.Inventory; +using Robust.Shared.Containers; + +namespace Content.Shared._White.FluffColorForClothing; + +public sealed class FluffColorForClothingSystem : SharedFluffColorForClothingSystem +{ + [Dependency] private readonly InventorySystem _inventory = default!; + [Dependency] private readonly SharedContainerSystem _container = default!; + + private string GetNextColor(FluffColorForClothingComponent component) + { + var index = component.Colors.IndexOf(component.CurrentColor); + var count = component.Colors.Count; + if (index < count - 1) + index++; + else + index = 0; + + var newColor = component.Colors[index]; + + return newColor; + } + + protected override void ChangeColor(EntityUid uid, FluffColorForClothingComponent component) + { + if (component.User != null && _inventory.TryGetContainerSlotEnumerator((EntityUid) component.User, out var containerSlotEnumerator)) + { + while (containerSlotEnumerator.NextItem(out var item, out var _)) + { + if (TryComp(item, out var comp) && !comp.MainItem) + { + comp.CurrentColor = GetNextColor(comp); + Dirty(item, comp); + } + } + } + ChangeCompInside(component); + component.CurrentColor = GetNextColor(component); + Dirty(uid, component); + } + + private void ChangeCompInside(FluffColorForClothingComponent component) + { + if (_container.TryGetContainer(component.Owner, "toggleable-clothing", out var container) && container.ContainedEntities.Any()) + { + var content = container.ContainedEntities.First(); + if (TryComp(content, out var contentComp) && component.Specifier == contentComp.Specifier) + { + contentComp.CurrentColor = GetNextColor(contentComp); + Dirty(contentComp.Owner, contentComp); + } + + } + } +} diff --git a/Content.Shared/_White/FluffColorForClothing/FluffColorForClothingComponent.cs b/Content.Shared/_White/FluffColorForClothing/FluffColorForClothingComponent.cs new file mode 100644 index 0000000000..d08ec90560 --- /dev/null +++ b/Content.Shared/_White/FluffColorForClothing/FluffColorForClothingComponent.cs @@ -0,0 +1,39 @@ +using Content.Shared.Inventory; +using Robust.Shared.GameStates; +using Robust.Shared.Prototypes; + +namespace Content.Shared._White.FluffColorForClothing; + +[RegisterComponent, NetworkedComponent] +[AutoGenerateComponentState(true)] +public sealed partial class FluffColorForClothingComponent : Component +{ + [DataField, AutoNetworkedField] + public EntProtoId Action = "ActionFluffColorForClothing"; + + [DataField, AutoNetworkedField] + public EntityUid? ActionEntity; + + [DataField] + [AutoNetworkedField] + public string CurrentColor = "white"; + + [DataField] + public List Colors = new() { "white" }; + + [DataField] + public string VerbText = "Поменять цвет"; + + [DataField] + public string Specifier = "default"; + + [DataField] + public bool MainItem = false; + + [DataField] + public EntityUid? User; + + [DataField("requiredSlot"), AutoNetworkedField] + public SlotFlags RequiredFlags = SlotFlags.NECK; + +} diff --git a/Content.Shared/_White/FluffColorForClothing/SharedFluffColorForClothingSystem.cs b/Content.Shared/_White/FluffColorForClothing/SharedFluffColorForClothingSystem.cs new file mode 100644 index 0000000000..1737584e16 --- /dev/null +++ b/Content.Shared/_White/FluffColorForClothing/SharedFluffColorForClothingSystem.cs @@ -0,0 +1,104 @@ +using Content.Shared.Actions; +using Content.Shared.Inventory.Events; +using Content.Shared.Verbs; +using Robust.Shared.Utility; + +namespace Content.Shared._White.FluffColorForClothing; + +public abstract class SharedFluffColorForClothingSystem : EntitySystem +{ + [Dependency] private readonly SharedActionsSystem _actionsSystem = default!; + [Dependency] private readonly ActionContainerSystem _actionContainer = default!; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent>(OnAddVerb); + SubscribeLocalEvent(OnAfterHandleState); + SubscribeLocalEvent(OnInit); + SubscribeLocalEvent(OnEquipped); + SubscribeLocalEvent(OnUnequipped); + SubscribeLocalEvent(OnEvent); + SubscribeLocalEvent(OnMapInit); + SubscribeLocalEvent(OnGetActions); + SubscribeLocalEvent(OnRemove); + } + + private void OnRemove(Entity ent, ref ComponentRemove args) + { + _actionsSystem.RemoveAction(ent.Comp.ActionEntity); + } + + private void OnGetActions(Entity ent, ref GetItemActionsEvent args) + { + if (ent.Comp.ActionEntity != null && args.SlotFlags == ent.Comp.RequiredFlags) + args.AddAction(ent.Comp.ActionEntity.Value); + } + + private void OnMapInit(Entity ent, ref MapInitEvent args) + { + if (_actionContainer.EnsureAction(ent.Owner, ref ent.Comp.ActionEntity, out var action, ent.Comp.Action)) + _actionsSystem.SetEntityIcon(ent.Comp.ActionEntity.Value, ent.Owner, action); + } + + private void OnEvent(Entity ent, ref FluffColorForClothingEvent args) + { + if (args.Handled) + return; + + args.Handled = true; + ChangeColor(ent.Owner, ent.Comp); + } + + private void OnUnequipped(EntityUid uid, FluffColorForClothingComponent component, GotUnequippedEvent args) + { + component.User = null; + } + + private void OnEquipped(EntityUid uid, FluffColorForClothingComponent component, GotEquippedEvent args) + { + component.User = args.Equipee; + } + + private void OnAfterHandleState(EntityUid uid, FluffColorForClothingComponent component, ref AfterAutoHandleStateEvent args) + { + UpdateVisuals(uid, component); + } + + private void OnInit(EntityUid uid, FluffColorForClothingComponent component, ComponentInit args) + { + UpdateVisuals(uid, component); + } + + private void OnAddVerb(EntityUid uid, FluffColorForClothingComponent component, GetVerbsEvent args) + { + if (!args.CanAccess || !args.CanInteract || args.Hands == null || component.Colors.Count < 2 || !component.MainItem) + return; + + AlternativeVerb verb = new() + { + EventTarget = uid, + ExecutionEventArgs = new FluffColorForClothingEvent() { Performer = args.User }, + Text = component.VerbText, + Icon = new SpriteSpecifier.Texture(new("/Textures/Interface/VerbIcons/rotate_cw.svg.192dpi.png")), + Priority = 0, + }; + + args.Verbs.Add(verb); + } + + protected virtual void UpdateVisuals(EntityUid uid, FluffColorForClothingComponent component) + { + // See client system + } + + protected virtual void ChangeColor(EntityUid uid, FluffColorForClothingComponent component) + { + // See server system + } +} + +public sealed partial class FluffColorForClothingEvent : InstantActionEvent +{ +} diff --git a/Resources/Prototypes/_White/Entities/Clothing/Head/raincoats_hood.yml b/Resources/Prototypes/_White/Entities/Clothing/Head/raincoats_hood.yml deleted file mode 100644 index 64efb9709c..0000000000 --- a/Resources/Prototypes/_White/Entities/Clothing/Head/raincoats_hood.yml +++ /dev/null @@ -1,11 +0,0 @@ -- type: entity - parent: ClothingHeadHatHoodWinterBase - id: ClothingHeadHatHoodRaincoat - noSpawn: true - name: капюшок - description: Если хочешь быть загадочным и привлекательным. - components: - - type: Sprite - sprite: White/Clothing/Head/Hoods/Raincoats/hoodgreenraincoat.rsi - - type: Clothing - sprite: White/Clothing/Head/Hoods/Raincoats/hoodgreenraincoat.rsi diff --git a/Resources/Prototypes/_White/Entities/Clothing/Neck/raincoat.yml b/Resources/Prototypes/_White/Entities/Clothing/Neck/raincoat.yml deleted file mode 100644 index 3922b5884e..0000000000 --- a/Resources/Prototypes/_White/Entities/Clothing/Neck/raincoat.yml +++ /dev/null @@ -1,41 +0,0 @@ -- type: entity - parent: [ClothingNeckBase, BaseFoldable] - id: ClothingOuterWinterRaincoat - name: winter coat with hood - components: - - type: ToggleableClothing - clothingPrototype: ClothingHeadHatHoodRaincoat - requiredSlot: NECK - - type: ContainerContainer - containers: - toggleable-clothing: !type:ContainerSlot {} - storagebase: !type:Container - ents: [] - slot: head - - type: Clothing - sprite: White/Clothing/Neck/Raincoats/raincoats.rsi - - type: EmitSoundOnPickup - sound: - path: /Audio/White/Items/handling/cloth_pickup.ogg - - type: EmitSoundOnDrop - sound: - path: /Audio/White/Items/handling/cloth_drop.ogg - - type: EmitSoundOnLand - sound: - path: /Audio/White/Items/handling/cloth_drop.ogg - - type: Appearance - - type: Foldable - canFoldInsideContainer: true - unfoldVerbText: fold-flip-verb - foldVerbText: fold-flip-verb - - type: FoldableClothing - foldedEquippedPrefix: red - foldedHeldPrefix: red - - type: Sprite - sprite: White/Clothing/Neck/Raincoats/raincoats.rsi - layers: - - state: icon - map: [ "unfoldedLayer" ] - - state: icon_red - map: ["foldedLayer"] - visible: false \ No newline at end of file diff --git a/Resources/Prototypes/_White/Fluff/vkuser.yml b/Resources/Prototypes/_White/Fluff/vkuser.yml new file mode 100644 index 0000000000..89de8781d0 --- /dev/null +++ b/Resources/Prototypes/_White/Fluff/vkuser.yml @@ -0,0 +1,66 @@ +- type: entity + parent: ClothingNeckBase + id: ClothingNeckCloakRaincoat + name: прародительский плащ + suffix: fluff + components: + - type: ToggleableClothing + clothingPrototype: ClothingHeadHatHoodRaincoat + requiredSlot: NECK + - type: ContainerContainer + containers: + toggleable-clothing: !type:ContainerSlot {} + storagebase: !type:Container + ents: [] + slot: head + - type: Clothing + sprite: White/Fluff/vkuser/raincoat.rsi + - type: Sprite + sprite: White/Fluff/vkuser/raincoat.rsi + state: icon_green + - type: Appearance + - type: FluffColorForClothing + mainItem: true + specifier: Raincoat + currentColor: green + colors: + - green + - red + - type: Tag + tags: + - ClothMade + +- type: entity + parent: ClothingHeadBase + id: ClothingHeadHatHoodRaincoat + noSpawn: true + name: прародительский капюшон + suffix: fluff + components: + - type: Sprite + sprite: White/Fluff/vkuser/hoodraincoat.rsi + state: icon_green + - type: Clothing + sprite: White/Fluff/vkuser/hoodraincoat.rsi + - type: Tag + tags: [] # ignore "WhitelistChameleon" tag + - type: HideLayerClothing + slots: + - Hair + - type: FluffColorForClothing + specifier: Raincoat + currentColor: green + colors: + - green + - red + +- type: entity + id: ActionFluffColorForClothing + name: Поменять цвет + description: Меняет цвет вашей экипировки. + noSpawn: true + components: + - type: InstantAction + itemIconStyle: BigItem + useDelay: 1 + event: !type:FluffColorForClothingEvent diff --git a/Resources/Textures/White/Clothing/Head/Hoods/Raincoats/hoodgreenraincoat.rsi/icon.png b/Resources/Textures/White/Clothing/Head/Hoods/Raincoats/hoodgreenraincoat.rsi/icon.png deleted file mode 100644 index 675d2813863aa91c67844fb06bb431ab7b22728c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 318 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}KRjI=Ln2y} z6C_v{Cy4YkP2`g}c~NEkf^YJ%Zyq*Br_4O+)b})K(xe+p{!M<&G0Eh^kJ~+IG4fsQ z_o_u_RihT}X}a~_f8i|w?`N`UKR*4Hj_GTk-2Je8k}fj{+<&!NWhwilOATlG+{#tOv-!xoa9|iP Nc)I$ztaD0e0swdBjdcJ3 diff --git a/Resources/Textures/White/Clothing/Head/Hoods/Raincoats/hoodgreenraincoat.rsi/meta.json b/Resources/Textures/White/Clothing/Head/Hoods/Raincoats/hoodgreenraincoat.rsi/meta.json deleted file mode 100644 index 515e8ab091..0000000000 --- a/Resources/Textures/White/Clothing/Head/Hoods/Raincoats/hoodgreenraincoat.rsi/meta.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-4.0", - "copyright": "Archestratigus АКА Заступник", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-HELMET", - "directions": 4 - } - ] -} \ No newline at end of file diff --git a/Resources/Textures/White/Clothing/Head/Hoods/Raincoats/hoodredraincoat.rsi/icon.png b/Resources/Textures/White/Clothing/Head/Hoods/Raincoats/hoodredraincoat.rsi/icon.png deleted file mode 100644 index 24efe39da4ad253f8da9a4d285cfb5057d09f5ba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 321 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}zdci+jR#(2$ZeE2y%s3#>s$mbdaj?fb)PH?23)?Se)GM``mPLsC6 z(h}8Mj3=gfdwL~J{?-46BZ*OY^lr=Oh`t{#`;Vl90 zXR>KOKK+%B>1&_d{jhwJE;9(+f3=#2|J{9+TZ}488E4A&OT^h#cO+S=vx_tDUm$S! zcxAifk)=;0?ItEEFt^^EFuA$g(Zi$T;Wyb!!tzJ?7PLK0v2KW(W^7>Kz{Q(nz|+Cm z{U<#1piak;7T15;nwlpkCO!NA|9|Is)-6oTapFBz3GlFBc)~xkqW9R&%fNtS@O1Ta JS?83{1OWBLkdXiY literal 0 HcmV?d00001 diff --git a/Resources/Textures/White/Fluff/vkuser/hoodraincoat.rsi/icon_red.png b/Resources/Textures/White/Fluff/vkuser/hoodraincoat.rsi/icon_red.png new file mode 100644 index 0000000000000000000000000000000000000000..215aa4b15ef16b70a9dbca55223725045fd2542b GIT binary patch literal 377 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?3oVGw3ym^DX&fq_xm z)5S3)qV?@mZ!cy?fwuqiI8K@zN=WZX5fEmVXaB%t*>XFlxGBe`arPXA+c&G2!s8Aw z|6rKx>o8@aqR}MRpvaE19x)-aTW*FpI+uqB{&x=!UE9HtIxBqDE(VSU1`dV>*}Mfo zr`|=s-8}W9rJU_8hUqU)v1xR@6wGK4!CaZI8?19`f{9=RFU2m)NJuK0@JpKEl zXz2vuNB`MwOtENqzwltB{k0YCB~_cOI;6f%cw}K$bkfu1kKT=GQ~!yBya7Z9gx)F4 Uyz{Th1{9VIp00i_>zopr0P94Wh5!Hn literal 0 HcmV?d00001 diff --git a/Resources/Textures/White/Fluff/vkuser/hoodraincoat.rsi/meta.json b/Resources/Textures/White/Fluff/vkuser/hoodraincoat.rsi/meta.json new file mode 100644 index 0000000000..eeb91813c4 --- /dev/null +++ b/Resources/Textures/White/Fluff/vkuser/hoodraincoat.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CC-BY-SA-4.0", + "copyright": "Archestratigus АКА Заступник", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon_green" + }, + { + "name": "icon_red" + }, + { + "name": "green-equipped-HELMET", + "directions": 4 + }, + { + "name": "red-equipped-HELMET", + "directions": 4 + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/White/Clothing/Head/Hoods/Raincoats/hoodredraincoat.rsi/equipped-HELMET.png b/Resources/Textures/White/Fluff/vkuser/hoodraincoat.rsi/red-equipped-HELMET.png similarity index 100% rename from Resources/Textures/White/Clothing/Head/Hoods/Raincoats/hoodredraincoat.rsi/equipped-HELMET.png rename to Resources/Textures/White/Fluff/vkuser/hoodraincoat.rsi/red-equipped-HELMET.png diff --git a/Resources/Textures/White/Clothing/Neck/Raincoats/raincoats.rsi/equipped-NECK.png b/Resources/Textures/White/Fluff/vkuser/raincoat.rsi/green-equipped-NECK.png similarity index 100% rename from Resources/Textures/White/Clothing/Neck/Raincoats/raincoats.rsi/equipped-NECK.png rename to Resources/Textures/White/Fluff/vkuser/raincoat.rsi/green-equipped-NECK.png diff --git a/Resources/Textures/White/Clothing/Neck/Raincoats/raincoats.rsi/inhand-left.png b/Resources/Textures/White/Fluff/vkuser/raincoat.rsi/green-inhand-left.png similarity index 100% rename from Resources/Textures/White/Clothing/Neck/Raincoats/raincoats.rsi/inhand-left.png rename to Resources/Textures/White/Fluff/vkuser/raincoat.rsi/green-inhand-left.png diff --git a/Resources/Textures/White/Clothing/Neck/Raincoats/raincoats.rsi/inhand-right.png b/Resources/Textures/White/Fluff/vkuser/raincoat.rsi/green-inhand-right.png similarity index 100% rename from Resources/Textures/White/Clothing/Neck/Raincoats/raincoats.rsi/inhand-right.png rename to Resources/Textures/White/Fluff/vkuser/raincoat.rsi/green-inhand-right.png diff --git a/Resources/Textures/White/Clothing/Neck/Raincoats/raincoats.rsi/icon.png b/Resources/Textures/White/Fluff/vkuser/raincoat.rsi/icon_green.png similarity index 100% rename from Resources/Textures/White/Clothing/Neck/Raincoats/raincoats.rsi/icon.png rename to Resources/Textures/White/Fluff/vkuser/raincoat.rsi/icon_green.png diff --git a/Resources/Textures/White/Clothing/Neck/Raincoats/raincoats.rsi/icon_red.png b/Resources/Textures/White/Fluff/vkuser/raincoat.rsi/icon_red.png similarity index 100% rename from Resources/Textures/White/Clothing/Neck/Raincoats/raincoats.rsi/icon_red.png rename to Resources/Textures/White/Fluff/vkuser/raincoat.rsi/icon_red.png diff --git a/Resources/Textures/White/Fluff/vkuser/raincoat.rsi/meta.json b/Resources/Textures/White/Fluff/vkuser/raincoat.rsi/meta.json new file mode 100644 index 0000000000..a439ebed3a --- /dev/null +++ b/Resources/Textures/White/Fluff/vkuser/raincoat.rsi/meta.json @@ -0,0 +1,173 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Archestratigus АКА Заступник", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "green-inhand-left", + "directions": 4 + }, + { + "name": "red-inhand-left", + "directions": 4 + }, + { + "name": "green-inhand-right", + "directions": 4 + }, + { + "name": "red-inhand-right", + "directions": 4 + }, + { + "name": "icon_green" + }, + { + "name": "icon_red" + }, + { + "name": "red-equipped-NECK", + "directions": 4, + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "green-equipped-NECK", + "directions": 4, + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/White/Clothing/Neck/Raincoats/raincoats.rsi/red-equipped-NECK.png b/Resources/Textures/White/Fluff/vkuser/raincoat.rsi/red-equipped-NECK.png similarity index 100% rename from Resources/Textures/White/Clothing/Neck/Raincoats/raincoats.rsi/red-equipped-NECK.png rename to Resources/Textures/White/Fluff/vkuser/raincoat.rsi/red-equipped-NECK.png diff --git a/Resources/Textures/White/Clothing/Neck/Raincoats/raincoats.rsi/red-inhand-left.png b/Resources/Textures/White/Fluff/vkuser/raincoat.rsi/red-inhand-left.png similarity index 100% rename from Resources/Textures/White/Clothing/Neck/Raincoats/raincoats.rsi/red-inhand-left.png rename to Resources/Textures/White/Fluff/vkuser/raincoat.rsi/red-inhand-left.png diff --git a/Resources/Textures/White/Clothing/Neck/Raincoats/raincoats.rsi/red-inhand-right.png b/Resources/Textures/White/Fluff/vkuser/raincoat.rsi/red-inhand-right.png similarity index 100% rename from Resources/Textures/White/Clothing/Neck/Raincoats/raincoats.rsi/red-inhand-right.png rename to Resources/Textures/White/Fluff/vkuser/raincoat.rsi/red-inhand-right.png