From ae2790bcb25f049f219bd1955e35be1fed9b120b Mon Sep 17 00:00:00 2001 From: Tryded <139474617+Tryded@users.noreply.github.com> Date: Sat, 10 Feb 2024 14:42:00 -0600 Subject: [PATCH 01/29] Energy gun sprites + Minor bug fixes (#811) * New Pistol Sprites * Carbine Sprites Fix * Kill and Lethal Consistency fix --- .../Weapons/Guns/Battery/battery_guns.yml | 4 ++-- .../equipped-BACKPACK.png | Bin 0 -> 1423 bytes .../energygun_carbine.rsi/inhand-left.png | Bin 0 -> 546 bytes .../energygun_carbine.rsi/inhand-right.png | Bin 0 -> 573 bytes .../lethal-inhand-left.png | Bin 871 -> 0 bytes .../lethal-inhand-right.png | Bin 862 -> 0 bytes .../Battery/energygun_carbine.rsi/meta.json | 10 +++++++--- .../disabler-inhand-left.png | Bin 871 -> 555 bytes .../disabler-inhand-right.png | Bin 862 -> 475 bytes .../lethal-inhand-left.png | Bin 1005 -> 551 bytes .../lethal-inhand-right.png | Bin 956 -> 462 bytes .../disabler-inhand-left.png | Bin 871 -> 567 bytes .../disabler-inhand-right.png | Bin 862 -> 479 bytes .../mini_energygun.rsi/lethal-inhand-left.png | Bin 1005 -> 557 bytes .../mini_energygun.rsi/lethal-inhand-right.png | Bin 956 -> 485 bytes 15 files changed, 9 insertions(+), 5 deletions(-) create mode 100644 Resources/Textures/DeltaV/Objects/Weapons/Guns/Battery/energygun_carbine.rsi/equipped-BACKPACK.png create mode 100644 Resources/Textures/DeltaV/Objects/Weapons/Guns/Battery/energygun_carbine.rsi/inhand-left.png create mode 100644 Resources/Textures/DeltaV/Objects/Weapons/Guns/Battery/energygun_carbine.rsi/inhand-right.png delete mode 100644 Resources/Textures/DeltaV/Objects/Weapons/Guns/Battery/energygun_carbine.rsi/lethal-inhand-left.png delete mode 100644 Resources/Textures/DeltaV/Objects/Weapons/Guns/Battery/energygun_carbine.rsi/lethal-inhand-right.png diff --git a/Resources/Prototypes/DeltaV/Entities/Objects/Weapons/Guns/Battery/battery_guns.yml b/Resources/Prototypes/DeltaV/Entities/Objects/Weapons/Guns/Battery/battery_guns.yml index 76704910a11..17bc14742f5 100644 --- a/Resources/Prototypes/DeltaV/Entities/Objects/Weapons/Guns/Battery/battery_guns.yml +++ b/Resources/Prototypes/DeltaV/Entities/Objects/Weapons/Guns/Battery/battery_guns.yml @@ -36,7 +36,7 @@ state: disabler - proto: BulletEnergyGunLaser fireCost: 200 - name: kill + name: lethal state: lethal - type: MagazineVisuals magState: mag @@ -151,7 +151,7 @@ state: disabler - proto: BulletEnergyGunLaser fireCost: 200 - name: kill + name: lethal state: lethal - type: MagazineVisuals magState: mag diff --git a/Resources/Textures/DeltaV/Objects/Weapons/Guns/Battery/energygun_carbine.rsi/equipped-BACKPACK.png b/Resources/Textures/DeltaV/Objects/Weapons/Guns/Battery/energygun_carbine.rsi/equipped-BACKPACK.png new file mode 100644 index 0000000000000000000000000000000000000000..5ac3c6c8c48cf3391fee18c06d7eed1d82478ed5 GIT binary patch literal 1423 zcmV;A1#tR_P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D1tdvCK~#8N?V7tw zEmstWcTy-8z6A?K@zJQ!bB!dLLI{cwY%BypB7uNlij+eB2}zYkE^-?|B3M`(s|13H zMn!xSqA9cxe2a*RoSbiE)?u!k$DZ+=xpQ$o7-r8fv-fYU{hl=@A|fKvc&d8fL zZ{nP2 z=z!YVTFIchyW4bhbjZCh)6mc$deMqzP#ZkMiyV#@FJScSXo(-b5T)|+1}pHs3+?nNCpoN4_ODm zii!#+m0$k-<|i{SFd#;2&AW|H)V7?_oXvR1>Hx^pgn)jx-TR|+l|QKY&;NQWMvjk< zixafj12unqd@MDeO|xS4P$tI4#^O&;Pv-RW)GRG6y*NJ`T3TAf_{91|t^ucDJT-4? zJiJIS#{U`n&V2dLyTAuVoKR3uU~X=1oI7@X{yDxyW4x0zv$L~-7(X>NC1uXc%ovP^ z&CN}mA&&4;^NKIwBO@d6zq`ISU#z_|^Yin87_Vr}1I-=U+uO~>#f7gfXf+7BVFaeI z=HGr!X}tE&T%vh$Zf$Lqdo?vRrmU=tnZT^Bu3~(0n)HGvkGTuT=X~#m)m&$1r`g%r zNj7_o2P)#^Nr%3>zP@g%s;bQ8<)!rXy}dnI;X!qE zwX9M6&Omvu#o^&$F=An1!BbiK9>y!h#l`0A>?}Fh4Gs>*aR&I^srqUGnTW+=$r@)b zvA@4BX)pa#pXFT!It=G{4y}L|0JIiAtu5y*;Q7vrL5c;6*BZhY`nooC#XZ&O;CO$3 zFV}urLCzhZ=uXm)@rv6Ce&%=^a^3}$%F4Fw>s z=(v884ikMlZ`|&zqq&Cq5WP{AjawKxt`d@>?9? zsIZ}$(1=!BtQ~N5btT(dSYBS1bC^&~Xhf?mdHWvlu@H3u=bV*S-vwA;6c!dr2pVta zBLd_Xw4e!XX!NoevR%$%EYHScu~>4sxx2gj-uryc4k}`#5U1SQ+LAPe6D&<2TAg!7 ztXe=~aUns7gs0^i!=D?ke{BTG#Kc5=^Q#{uII4Qkh*mV)kkJ9Gs+^>JnkE>T3XJCu zk)VE)0cxJu;MaSHsn#Qv#FF+}vy?Cnu#)nxOt06r}N-ak#tY(S$ZYE1ETI z_9EP)Jsx$({%`wCTnhw7F|N=Q9<%tor(T2E#y&c9Sm1iYByq4WL-B1IU;V zRb5@3(Z4i41nH((G@%WRdEE}P(sIY_!vdOgrRoJw4&dj6RB`&Spg&M}!P)`(k&y!U zXD4i+NsadsO1E+VeTos5ct1y2QGIB&9S5vDrJ3m_gE=W?74R-=w?HqM1Q5_S)ZVv zY!7xs=&aG`dQxEFVKVnr#+RSz0tK><4dgz@Tt9nES$N$u=?Tkq;~G^wQ?}o(n={923u0fF2Gk$_@FeH9*nj0|Pkwq{d%bl{*lPLLd~D5EKHF@Jk9+#} z+*z~xN6Z%(dOZJF@h4mAan-zUE=XYd72UZjud>Z0Vz&S^L79L literal 0 HcmV?d00001 diff --git a/Resources/Textures/DeltaV/Objects/Weapons/Guns/Battery/energygun_carbine.rsi/inhand-right.png b/Resources/Textures/DeltaV/Objects/Weapons/Guns/Battery/energygun_carbine.rsi/inhand-right.png new file mode 100644 index 0000000000000000000000000000000000000000..63454347e587f2b687feff0b4936764de470661e GIT binary patch literal 573 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1quc4VOG!978JN-ricDcPK!F?ZaUqtM2toA?D2v zlSNzuP7B>jDE?q_;w`ViWR@dBCQKXGb}ev74!`^~`<-g5XvV^vJI{X4{IvYSZ`nM< z=Ny6%aCBAJ>c*-W*54)!P&SvHd%@x9UaDWc{)t>E^j>_CW7_GZFFrIM zRQP5i{J?!nZnWBD&z!b+>jhuMSo#-F+_6skXj0&{*ITQO%Ury@;ARfjCxz)%nWw`T z3xZaE)s?@yZcUhWq>h-8T>s%yGr!0i%s+qF)Vfdj-IMci{u8v-R~t<`z*yE( z|DT>|n`ingzx*TSZJG6fZGry9tUD+8+o~$T!J-zQ%*m>SC3XqohyGvRb3k?7%v}r( z(|*Q_JBr(7ujFp1Q+&p{$n{39MH=V*wTI)A0v<1sWtbs-psDZc{qqacMGJUiUJGsJ zTDg1w57R||zZdP)nQ>sp`|qh1d!{~gR-D|oXoh~dGb4rt z$lP7#4Bx&5&AGLDHRt5Y_?HYpD@Eq}Jn=IM_*W_S)^GOd76nlT*8fWLkFPJAEiWtk zv-WAx%vrhWXS(|iuT~E|W~ss46gF!~dIQJ3{OEb@f1`N$oH#ZxY`Ps(;hn)cNzZ@Gs1-|Y zTO24+^FefiuBx}fkNJMfEgcJD`6WM^*>2RoF^x5R%j%TQYR*)KV*=PUjw zxHP71zG+Y^{dE_Aq9yl={&f?NJ>GbK72mus;eJhrA5L)nw?2lcaKF%|lKj3yt5O&o ziX|B?#IP}#OlM>`n~I&wFXS*sXm8i08$D5mjVvPBac#3Z(`~!Ho%jB7`RTvVNqi1A za{?ze7uxBDYF*h{C=`9-J8!_3-m1B}*CkiD=s%k%@HXdicfce58+U8F{_1aSVLo?y z>i13Zg1^}I?bU3lYgzH^Wqq)q*_27P2Y%ml`t;WN#(X;?_ME77Axlynx0Jlws<$FL zbpp#Xv)>Iy%`WS2Gpw zr;B4q#hkaZ?grg*kZ8M~dMcw^IfilWrN>L=zFc9u@{8W9Oiz7n%kM{KZ*V^vb$rQ} z17RiwjIQo{iN9;TohJ%z`V^ktb>;bLe1CU!4bLQn=6fC$6A~GX zURK&U${b&1DEaNJ>OAI(M~k1ws|i22dDFbJUTD|Bj^l{|4)%Z2ue-i}#@1RRw|)C| zkE*(vtSTQqpBMVkZ541YU|M;ihK-a`NguxdW{Np}@Zv?mIo;eXi7eMkr?iBv z-uh*sFq{3quA_^d@IBG_StJ=KacE&rpvYZoH_ingiqgx)d((n>e?R)HG=W{J_t>cx z`L_3a9d=rH_het)<}Il?foJiG`QDrlKB!+^mGwYz{u~BvK6YIZuD_kLjf<`oB#3A* zK2AFsn*Kp>+287iGq+ZW&SSwE?#HVG8;S1C?<`X_S26K{||arb}L0pv2ESe zr@FD)#-~3o<9fgyT=6lWa?b7Ys;kr1`RUdhx}`i gH}{#~>GdB&TVu!UlVKY?fEk9t)78&qol`;+0Kq|u2><{9 diff --git a/Resources/Textures/DeltaV/Objects/Weapons/Guns/Battery/energygun_carbine.rsi/meta.json b/Resources/Textures/DeltaV/Objects/Weapons/Guns/Battery/energygun_carbine.rsi/meta.json index f0e887bcf2d..79adf10713d 100644 --- a/Resources/Textures/DeltaV/Objects/Weapons/Guns/Battery/energygun_carbine.rsi/meta.json +++ b/Resources/Textures/DeltaV/Objects/Weapons/Guns/Battery/energygun_carbine.rsi/meta.json @@ -29,12 +29,16 @@ "name": "mag-unshaded-4" }, { - "name": "lethal-inhand-left", + "name": "inhand-left", "directions": 4 }, { - "name": "lethal-inhand-right", + "name": "inhand-right", "directions": 4 - } + }, + { + "name": "equipped-BACKPACK", + "directions": 4 + } ] } diff --git a/Resources/Textures/DeltaV/Objects/Weapons/Guns/Battery/energygun_pistol.rsi/disabler-inhand-left.png b/Resources/Textures/DeltaV/Objects/Weapons/Guns/Battery/energygun_pistol.rsi/disabler-inhand-left.png index 6b65b3077526bb168aa588dab3cf5d685910ad66..2bcb74b1eb1d8220759071f377f31a5b2b241479 100644 GIT binary patch delta 530 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 Q00000Ne4wvM6N<$g41K}{r~^~ delta 983 zcmV;|11S8b1nmcqB!3BTNLh0L01m_e01m_fl`9S#000A@NklK+eZ+W@mA5czC|Fw1k**c#Vem zX>3T7vEx+v+S(c;Qz8PyQz~595nz$?sogz)7hg8Fga`bi>kehisV-X$*TbimljJpr z3Q6ArBK*ZR2!Hl};={rMKD#cnR#whe>-B-6z^PW_hUcMDSp?hJzU*g`H#l-V)CLAm?e%r*>)o^SmufN)AEs92*-$VR{+@!du(M zuIrAD)N0~PILGY};+o@Fbpll?&EcfezC87_uYhzZ*?$6gdunQmzaj{J5aRt}1%9&$ z+qOr-Fud_y`ps&#TKG*XAFi*%F4?SDEG9=sN0#iB&!zMpKoe&L+vcxlifE&g_La+J zv5n&(3`eg1w`AMNe7TI{<72ctZOqU+Y&x|e^}F9MuEMHh06=pY0MJ|p z05q2Y0L^6pKyw)Y&|C%pG?xJY&1C>Ua~S~8T+b4~ASrqksj);nX#z?U8rfJP-;mH) z*ODw*iaze|ze&;o(BMpDco^qtc9(SLB!&>LIe!ip-fwMgvi>BCNYT?gM5;cyYayfq z5QC48zrfdTn-;GwbJtsyJp>%bLEUxPyYf7;dW37r!apsjxXYH3Ga%gCPxJa4-YP@2 z8oQn+Eegna-f&%178Vfh?1-)#ofKg1a}Fpgkcc|%41#B&x*TVb@DLFEs`F74rG2-B z_j~J&Lk?VJ^#P(b zKuj|5eN+|~5w=<)|Ico#4fvPnJ+zul{HjzCtZ$%HA_ylZ*OIQoO4&UiuMH^96cM4F z_GPsJ37y*aUa=C{$m<58P6xssF6suPWKffpUWEE<14RB`)BywoM1gRgK6Pn3uNyd$ zST~^jCU`YWsSQ5}26|t0-N3WF3J)R!0Gi7HfacO3z#m-{pmWdgMwb8p002ovPDHLk FV1gwK%W41s diff --git a/Resources/Textures/DeltaV/Objects/Weapons/Guns/Battery/energygun_pistol.rsi/lethal-inhand-right.png b/Resources/Textures/DeltaV/Objects/Weapons/Guns/Battery/energygun_pistol.rsi/lethal-inhand-right.png index 86a384f15b53ffc792322724985fcb2bd1c1c850..f9200bfef2edc0ed2084ca4eb13871428bd2d75f 100644 GIT binary patch delta 436 zcmV;l0Zab82hIbKB!2;OQb$4nuFf3k00004XF*Lt006O%3;baP00009a7bBm000id z000id0mpBsWB>pGV@X6oRCr$P+B#Svcst<+;O5AR2q z`SMYP8y1A+P=AE*-)5VCY31UE7qTnkhjZ`t^VD7?2LJ#70000005|}3TGsmSu{>+e z!rg7}(1qRVzsI6;=v=YgTL9lR){m|Jdki|Z&JpG;#I&mbqZYaUF3U2}omuO@KT5|O z&sm6VR{?a_=kMWG|NRj<)_l%FY`b3pUBq~@#J~IRJ1vF(m$f+yhog&*{RG53-c!(j e2LJ%)2B!3BTNLh0L01m_e01m_fl`9S#000ASNkl0%{dL$vW-G50u z(CaJ7=zVzqUb)iarYCpx8!NzZ9PCIb-j+7vzbSaWENliO2ti|{A3M?$s6M6@$ z>%%0o&*XAB#S`ea+bC~sA!sx>MiB(TjXtq}f^DmfQVAy~CkVS;l<`@Cc93udl zV+25Ri~wlPqbZNymsA2M_-H+!SN>2{h1>Z`V(u(K&w_cC=OzlE5AIR$;<`M318TRp zs6s?iO1{oRM3kIUXf>N+coL>1O$Kn6rx&;Lxo0P`T#9x!h6 zOAbwR!thFh>srcjqT2M!A)=XA6uia3huyfiIhXSMR9}M}{L<1=e2#!6ys~Y4mC~Y2 z0Don|ty+9ac+JOYUnmrDM!^rBQ<(KP(NqGG!K|#Ts24QIwjZFpRYp*+kF3R~f%;kX zMgzZS=7YUG*mFLoFp~$Nq!zyx*W$Zz+o)RnBnr0OOU@~DXy*BTV$SCjX7(hQrWQX5 zen0nPl5+~-oX;uD^igpG%t=H+RCr$P*-uLXK^O+`*YHq@e-2iH;;Dn^>Q%gZ=++1D?6>K| z)V;g+P05p>Xl$Uc2ZbPM@>ymiR7`C)jGmt??(59X?mIK?<$o0-A|fIpA|fKPtX8Y3 zMx&v0xD)ipbvg{yiT<`KpU*2CNaDIsP`zGHx9kS}9mmm8xI&qL!C(-lXFQu&nvN4;LR zav$r((Q37dnx2lrgL@Q82B$lQ4 zLs*}H@pvp3msj%m5dFR!eu%}G7`xl;%8U29R%zb%Z(+UMY|7#3bUKJJA)CtKhd^>z zc_iQO_hmAfEKBHs_I>YVeFtDWqLz=uGnq^<5jI{{Ci!-|y)k)AJnnl`@X$7rH*Akb gL_|dNj~9u20<$6Jz^IjM@Bjb+07*qoM6N<$g3(zH!2kdN delta 848 zcmV-W1F!tI1m^~jB!3BTNLh0L01m_e01m_fl`9S#0009SNklMCs@2En{qj}?yroHf2dy^(YGqe?(M0~f0FZJC&ZzCo z$HkD@%eW zs|k~NU+Dl+sT7|~D@b zRmM3e1AeocnJIK zj396UA=bo2@PB-#RDvt+5fziXxTFFI)_wq?*Xsd`5a{xz5O_5B^YicF#wUCIlay?N z)FzWjWHT8MgpqCIz;%P=;IHL1!?{x|V(0jneHLSeqfr=q@D-3PB}*XqpH8PaL2z9U z8Syqfu`k$`1y{7IWQl7ZPETQ7UixEf+X8Yq-tYIB?0+{ONa;C%CZ4q{o_m%Ua~S~8Tm}F%mjM9H zWdJ~P8GiuKTn`dJoD#i?(%6hzF@XdWYhH$%iDx~E_RmZ7)8+nEk`6#ToKca3aXu|o zD%7=c5?jdk4N&xrdYvuT8K^`r=8+KXY}1QS;t$x}eTw}rwS)uC%a!-C9})TnzP%}g zeuSvz>3>rZHk6V*!28)k^6fj=pFT1NY+9~Vq<>{Wv~=#ZE~sl|kOby7`+zcoM6cTc zt|3q+Oy`+!7Z3}+0pEKd`qriRzuW|Q=nW7MMlWCCp!p-=umsirrq~X`AHD&)|9Ctm z*t5HAxXSzip*Nt}L`GzS=QgSS&%8C>fSa_+H$V`gMb~Ym>>RM@4e0oNg+hTWJ~Odv z-%0w7srC&hJqRs(1HLvI8xZeUyR@On9&W0000xu{f diff --git a/Resources/Textures/DeltaV/Objects/Weapons/Guns/Battery/mini_energygun.rsi/disabler-inhand-right.png b/Resources/Textures/DeltaV/Objects/Weapons/Guns/Battery/mini_energygun.rsi/disabler-inhand-right.png index 4040a1d85520d57e7ec955a52054e6aa5ea78c25..25bc79ca34a7e264662951ef8c5516277b46a882 100644 GIT binary patch delta 453 zcmV;$0XqKP2HyjaB!2;OQb$4nuFf3k00004XF*Lt006O%3;baP00009a7bBm000id z000id0mpBsWB>pGbV)=(RCr$P+COfCFdW5kr|QVck^>-diKs(|Dod}LGjItc4v>YF zv8tPA`G-ROwIrs3==+f(Y6y)VnCamF000000A#z}`pstJ<9~3`ltX#q@XSlx4s>1T zilPW7mt`3~@zCNZhw@x=b^$(i-s`0OejmnlU9S$Gix+AMltX!xEAAQ?2J_Cpe}09N zbk*9nb-Me9mGB+EF?(^oeOTpC9_3QLxVyKC+pyg2&RclheI2t$z{Yc?x#oH9s;cVe zu5p%SZoOW+rhjSrV-i-tt?*_E;YIV*{EdxmB`D|d3h8O*#RE@dRK_>wUgMvO_AEI7 z000000002M45(?j)xW1Q)jJD!*WT8`s%um4HZ}c*ek-+mFM!?|2xX}ij@SD46i(k+ zNNLmsu$ufJY*jN`>w2w!f7r=83#pB+ytV9)`}N=Y_dZA1BWB?*)%K4X{Rn6hM=Rm) v{rgD&5k5IhIz@Ps`u|OW{v7}SER%CTbTIgBX0tVK00000NkvXXu0mjf9hBJ! delta 839 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 FV1hgr%Wwby diff --git a/Resources/Textures/DeltaV/Objects/Weapons/Guns/Battery/mini_energygun.rsi/lethal-inhand-right.png b/Resources/Textures/DeltaV/Objects/Weapons/Guns/Battery/mini_energygun.rsi/lethal-inhand-right.png index 86a384f15b53ffc792322724985fcb2bd1c1c850..42caf92772da805142f8c37618107216d6226901 100644 GIT binary patch delta 459 zcmV;+0W|)+2jv5hB!2;OQb$4nuFf3k00004XF*Lt006O%3;baP00009a7bBm000id z000id0mpBsWB>pGdPzh?~{;O{@(y@1|cFMA|fIpB7!{6yDZB(9e?f`av+ZmFTCjQMBBEK zB#GNOO;b1Ns@*{jEgjq0PJ-9ILiC!G=$f?A6OxD(_O)}BM)*R-?%v7 z3V?<7*pI`zEq~Pcc&qG&85`S^VE=8p`Ue)yu6QDgGQNqt>g=vPOAaC;A|fIpA|fIp zBH93ST7K)l`|_x77Vd6)TNn0L|J@gy1LyMX-U7I;F=lS{-+jQbt$FL)q5_Os?!PbeAK|^jMf(VEd>`*2*ncM?BBFf~`3Bzw_m2}7hJyeA002ovPDHLkV1i6J B)2jdg delta 934 zcmV;X16lm#1H1>2B!3BTNLh0L01m_e01m_fl`9S#000ASNkl0%{dL$vW-G50u z(CaJ7=zVzqUb)iarYCpx8!NzZ9PCIb-j+7vzbSaWENliO2ti|{A3M?$s6M6@$ z>%%0o&*XAB#S`ea+bC~sA!sx>MiB(TjXtq}f^DmfQVAy~CkVS;l<`@Cc93udl zV+25Ri~wlPqbZNymsA2M_-H+!SN>2{h1>Z`V(u(K&w_cC=OzlE5AIR$;<`M318TRp zs6s?iO1{oRM3kIUXf>N+coL>1O$Kn6rx&;Lxo0P`T#9x!h6 zOAbwR!thFh>srcjqT2M!A)=XA6uia3huyfiIhXSMR9}M}{L<1=e2#!6ys~Y4mC~Y2 z0Don|ty+9ac+JOYUnmrDM!^rBQ<(KP(NqGG!K|#Ts24QIwjZFpRYp*+kF3R~f%;kX zMgzZS=7YUG*mFLoFp~$Nq!zyx*W$Zz+o)RnBnr0OOU@~DXy*BTV$SCjX7(hQrWQX5 zen0nPl5+~-oX;uD^ige9O8@`> From 28cc34d755110871dcd2ae0fab6ce2d2224ef55a Mon Sep 17 00:00:00 2001 From: Fluffiest Floofers Date: Sun, 11 Feb 2024 00:17:28 +0100 Subject: [PATCH 02/29] .38 Special mindbreaker fix + ammo techfab (#795) * Fix the funny mindbreaker boolet * add .38 to ammo techfab * Add practice .38 to secfab + categories * Practice is plastic whoops * give mantis a buff with printable extra mags I'm sure no one will use this for traitorous acts :trollface: --------- Co-authored-by: VMSolidus --- .../Guns/Ammunition/Projectiles/special.yml | 20 ++++++++- .../DeltaV/Recipes/Lathes/security.yml | 41 +++++++++++++++---- .../Entities/Structures/Machines/lathe.yml | 4 ++ 3 files changed, 56 insertions(+), 9 deletions(-) diff --git a/Resources/Prototypes/DeltaV/Entities/Objects/Weapons/Guns/Ammunition/Projectiles/special.yml b/Resources/Prototypes/DeltaV/Entities/Objects/Weapons/Guns/Ammunition/Projectiles/special.yml index b477d685dbf..76d285668e6 100644 --- a/Resources/Prototypes/DeltaV/Entities/Objects/Weapons/Guns/Ammunition/Projectiles/special.yml +++ b/Resources/Prototypes/DeltaV/Entities/Objects/Weapons/Guns/Ammunition/Projectiles/special.yml @@ -48,10 +48,26 @@ - type: entity id: BulletSpecialMindbreaker name: bullet (.38 special mindbreaker) - parent: BaseBullet + parent: BaseBulletPractice noSpawn: true components: - type: Projectile damage: types: - Blunt: 3 + Blunt: 1 + - type: SolutionContainerManager + solutions: + ammo: + maxVol: 9 + - type: RefillableSolution + solution: ammo + - type: DrainableSolution + solution: ammo + - type: SolutionInjectOnCollide + transferAmount: 9 + blockSlots: NONE #shouldn't be blocked by a mask + - type: InjectableSolution + solution: ammo + - type: GuideHelp + guides: + - Psionics diff --git a/Resources/Prototypes/DeltaV/Recipes/Lathes/security.yml b/Resources/Prototypes/DeltaV/Recipes/Lathes/security.yml index 4d1157eb525..4bae83432bd 100644 --- a/Resources/Prototypes/DeltaV/Recipes/Lathes/security.yml +++ b/Resources/Prototypes/DeltaV/Recipes/Lathes/security.yml @@ -1,13 +1,23 @@ - type: latheRecipe id: SpeedLoaderSpecial result: SpeedLoaderSpecial + category: Ammo completetime: 5 materials: Steel: 200 +- type: latheRecipe + id: MagazinePistolSpecial + result: MagazinePistolSpecial + category: Ammo + completetime: 5 + materials: + Steel: 100 + - type: latheRecipe id: CartridgeSpecial result: CartridgeSpecial + category: Ammo completetime: 2 materials: Steel: 20 @@ -15,6 +25,7 @@ - type: latheRecipe id: CartridgeSpecialRubber result: CartridgeSpecialRubber + category: Ammo completetime: 2 materials: Plastic: 5 @@ -23,6 +34,7 @@ - type: latheRecipe id: CartridgeSpecialHoly result: CartridgeSpecialHoly + category: Ammo completetime: 2 materials: Plastic: 5 @@ -32,6 +44,7 @@ - type: latheRecipe id: CartridgeSpecialMindbreaker result: CartridgeSpecialMindbreaker + category: Ammo completetime: 2 materials: Plastic: 5 @@ -41,13 +54,23 @@ - type: latheRecipe id: MagazineBoxSpecial result: MagazineBoxSpecial + category: Ammo completetime: 5 materials: Steel: 1000 +- type: latheRecipe + id: MagazineBoxSpecialPractice + result: MagazineBoxSpecialPractice + category: Ammo + completetime: 5 + materials: + Plastic: 950 + - type: latheRecipe id: MagazineBoxSpecialRubber result: MagazineBoxSpecialRubber + category: Ammo completetime: 5 materials: Steel: 350 @@ -68,43 +91,47 @@ materials: Steel: 500 Plastic: 1000 - + - type: latheRecipe id: WeaponEnergyGun result: WeaponEnergyGun + category: Weapons completetime: 8 materials: Steel: 2000 Glass: 800 Plastic: 500 - -- type: latheRecipe + +- type: latheRecipe id: WeaponEnergyGunMini result: WeaponEnergyGunMini + category: Weapons completetime: 4 materials: #Half of Energy Gun Recipe Steel: 1000 Glass: 400 - Plastic: 250 + Plastic: 250 - type: latheRecipe id: WeaponEnergyGunPistol result: WeaponEnergyGunPistol + category: Weapons completetime: 10 materials: Steel: 1500 Glass: 600 Plastic: 400 Gold: 150 - + - type: latheRecipe id: WeaponGunLaserCarbineAutomatic result: WeaponGunLaserCarbineAutomatic + category: Weapons completetime: 15 - materials: + materials: Steel: 2000 Glass: 1000 Plastic: 500 Gold: 250 Silver: 100 - Plasma: 500 \ No newline at end of file + Plasma: 500 diff --git a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml index 0ee347ff94b..30cad0ea0a9 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml @@ -677,6 +677,7 @@ - ShellShotgunSlug - ShellShotgunFlare - ShellTranquilizer + - MagazinePistolSpecial # DeltaV - .38 Special psi-breaker - MagazinePistol - MagazinePistolSubMachineGun - MagazinePistolSubMachineGunTopMounted @@ -684,6 +685,7 @@ - MagazineLightRifle - MagazineBoxPistol - MagazineBoxSpecial # DeltaV - .38 Special revolver + - MagazineBoxSpecialPractice # DeltaV - .38 Special revolver - MagazineBoxMagnum - MagazineBoxRifle - MagazineBoxLightRifle @@ -802,6 +804,7 @@ staticRecipes: - CartridgePistol - CartridgeMagnum + - CartridgeSpecial # DeltaV - .38 Special revolver - ShellShotgun - ShellShotgunSlug - ShellShotgunFlare @@ -810,6 +813,7 @@ - CartridgeRifle - MagazineBoxPistol - MagazineBoxMagnum + - MagazineBoxSpecial # DeltaV - .38 Special revolver - MagazineBoxRifle - MagazineBoxLightRifle - type: MaterialStorage From 8179c2f20e4f405768f5d70ad6a30946ef66b19b Mon Sep 17 00:00:00 2001 From: DeltaV-Bot Date: Sat, 10 Feb 2024 23:17:42 +0000 Subject: [PATCH 03/29] Automatic Changelog Update (#795) --- Resources/Changelog/DeltaVChangelog.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Resources/Changelog/DeltaVChangelog.yml b/Resources/Changelog/DeltaVChangelog.yml index 468f6248744..a32a7238d55 100644 --- a/Resources/Changelog/DeltaVChangelog.yml +++ b/Resources/Changelog/DeltaVChangelog.yml @@ -1558,3 +1558,11 @@ Entries: message: Fixed missing Mantis stamp sprite. id: 234 time: '2024-02-09T10:47:35.0000000+00:00' +- author: FluffiestFloof + changes: + - type: Tweak + message: .38 Special is now in the ammo techfab. + - type: Fix + message: Fixed .38 Special Mindbreaker not breaking minds. + id: 235 + time: '2024-02-10T23:17:28.0000000+00:00' From 61ddd6b0e8addddea436707b9e6c43dfe4a46c24 Mon Sep 17 00:00:00 2001 From: Fluffiest Floofers Date: Sun, 11 Feb 2024 00:21:56 +0100 Subject: [PATCH 04/29] Fix glimmer mite sound being loud (#812) * Delete Resources/Audio/DeltaV/Glimmer_Creatures/mite.ogg Signed-off-by: Fluffiest Floofers * new mite sound --------- Signed-off-by: Fluffiest Floofers --- .../Audio/DeltaV/Glimmer_Creatures/mite.ogg | Bin 91558 -> 74854 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Resources/Audio/DeltaV/Glimmer_Creatures/mite.ogg b/Resources/Audio/DeltaV/Glimmer_Creatures/mite.ogg index 63c99254b3047f5a98a3bc6cf8a8de52635fbfaa..2e69ae4b54acae010166fe1ca0135345c715676f 100644 GIT binary patch literal 74854 zcmagF1yohh*Dt#1kdp4MLr4k&A|c%zx*MdGl$4fkknS#N1SF(Oy4xZIK>^ zUXh-km!Fqcm{*XV9d2XoX=U$XM=$H*W$)(d;%wvM0YeAR-34D+wa4l*vT$)Z6?!cX zPiuQuOmOkBx|+7sV{LK7P1=guDzf7LuBxias{OkvFRKQZ6~_SmQgCfWEp2fmw14!# zq#x@dL5SP=ROknTrW17_hya4jnPGS-wu-RQ)IxTjj8p|gYmhf8BQE$B5S47QyQK$!g_N)?DW3G6`eB#5F*J z0J9|(7{ZC+h?8X`Lj*ZEy`**L+`c+J5>&t>lKu%+#7J56QKSeZETRS(vPQ6k9xIsvj5LvYmjd9e?KIjjBr4bfS1G1sE401%fgw5 z-MBDrIXnUZnM%UB2HgbZ-35o;AA&>PLuNEp<^7oo{(lJpA$ACo6;z z7F?s)&A}U@umJbj&t_p%uIPhj4W_epD%y!bD=Iact)*T2-+2E~i%Qd+$#)_jz!Ooc z*^cd4CZP4(I_Ky;7UJ6fu0E1LZWhbrL%AXJ0rBXT#0+H&DYPC5cqs*ZBd`+MxOh3G z%1{kB1zV{{$nBfcLr@sOtrq{+=~k8hX>mz%G{+cw(**xG7vfaYKPh@p-%s!uhYx5m z*L|SHaVD3 z-P&ZTWh~!tPNT|b znG}hAWAb=V(oeVA6z*@uBC262MBSwI*T1)L|1+UvfgHrPv{e zz8496rP&3oWg!AKX!|MiREnT7F^e*h>=d!h5|Qdsn&5lE`bLpx&EzVPdHY?gX8>Bi5tu||HWL3F$1g-q-Zd(bTaq(AF{VvN5>O(OV2q2EAIUDX1uC8-B0KIh;RgGL#Rb17LHCI(!2dx!V9kpYP_1SgR2d&3<`ne7| zo>tY>RW}|YdOK=X|c2stBxEypmn`m{WF0T68%`x6rKh}7B(81H} z$)Ks@xsht}Ne{e-vzd3E(M5Qpvsh2<)fgCH_Ls<%D|I_~tjUE6TpK#&l(2XZUuu^H zD6Oi^uBtw0bm8o;Igr-W2{1{s*%CG}AamIgjyGD0E2{e1!7<(qCgNKka;5I%r8Zd; z0v)-HwRZxnMlP_X9M^`PU5S1=_bh&mgEgE0bOQ;Y8$@H0g$$g?K@X51bcS7GEdq`~ zdJh8lSNaldK6D0mHKjr7R1GBuhSYhEA$sk2#gUv8LZv6L)LA%2VX20aV`1td+_9l- z-trrL38|7jcj~O6L*>xCVeDNi0{-0+>q$kd(q=>l7;3km1W#J2w1ik$iCcF9D01R7>JW)buqzD@#)^g?^%3>O#2Sbe_CcmBIOGYXf zDl;@$NvSq189tGdf*2|^UP%$wnyjP(s8UjD2!|Uw@h#@So$dpwz);CbPTWI=Mk+0y z1crBRsj6+!b#$m50+X|pk}E4Uw2(Tw@a<44+1DZ_uN)*biU*TxIo>Z@bU<_%Ig2l5 zxhvH!&cowChm~{JLYCk0f4#Y-1NYFPWi4WIj)t^kF!|1^VXR2%tR)yK86FFsFmh@y zOLqVrS@4*aomF?I`{(n9HHbNsL4XVfRv8R9TI&f^p>%M<(4n?@SrW50 ze34(71*n2;?LdYhCj=b=f(~!}2n&>m0ZEb|{AAfey#_?GUt%h5^;1P{|6hkz;WPTHn4z5ItaHEMEk%Wi;Pz&SOm2 zUuNKz-&r4JSoOM?hMC&1PD$IYV zT#oSerD>zFrG;s#@5u#_&s z9l$K2n5E70h^dyP6kw%`hB4g0x7aB$1uvSkfl$t)b$C%IJ(Fd#!mK)NG0 ztYy(MwgvDXc!)*InEQ){cc5*Tr%;eW{j-R)lBT|y?ORzh0I)56%WXtr00*)tKxhkt zj1tf)gpM$T0Wti$7MA$m*9b&+|EU&GsNH|}rD{musupG;xCWyEO2&TMVgW6ze*o@Q z8N&zxluHF8|GSn-2`5WBZZ$1l6Ch2c$AowZ7zBbPk%-Ahz(irFFsPuucbd-_ z74=AZ8zeCiTN*8LA`DN%ep12{&gd=Zp1Wh zj~Uy!*i^ZB&2(*311(=zJdoB5$cPA!)D{sEmC*H(l_LIBUqACk2@;&h=9o{tVJTP%>lOIi5FYzV7 zOsLnX5E2S#WbFFb4!(NjP*#q=B|%$^9Q5>3gacSa>I<#B{LjU9WZl<|o%h~2Z3syo zODc#l)FX9+!PH^mf`V9ExQBNjq|4vHtP!6baVZl8M1wx|_`4|jx)=9dC{W&{2_J^} z6aQdp68;3-9>f)L%h2b(uR#JGUL}3+I!Z18YgYspXbJ`txR`^UH=AAsFEW!Tw{?sR z1aU$Ftv4w%6Fl|ZKi@jG3CLZN=TJdmOC5KXrti20?TVnL2lBR` zoq7LmNl-9mlgAXpR*8>|ut3HWl`KpsZ!xD)y;5tCAmA_c!Sm8B$h;t*3>sC*gaNXv zA5!okq*J8-o~ksN+Q{>3v*}nVDnuph(I2}*&SsF^r1+lG_fHw_$?5<~M%1)DYBf0( z!*k5Qp_~)-{qb-{A&KE872(n?kWuF&oA*zs09xOu$OSYbsuoP>lh{`asSPY%VvR&a z-qR?KI8gJq+BkLZ$rHYufZ*8p3!nDR)|ESDi|kZS9uBnLEt)P4dypb~SdZ~!JqhZz z$$2Txyv{Z!y&i2RycghvUX$Nlfdb_cL1IL;B-jw9s)8luqo>+$n~>T-JPrX#~W2e3^dCW_Z)(CIEpONl4Ht)=kFamTpRNHabq2M z=y9@%2j%+F@@yr)vwn3VdG7P}m7V!P&|W#Dpe`UF0MSF&w9t%Su!YA5q67v1HHM&<8MngJOQGKq2V94OlCNjhb!3ZE zzYh7W)w)>iT$kb2BNxN0ru0mtkQ8Wa;_kBvt(DqKuN9DgLfIq~taaY8SaW3W$)jY2 zHq)H?^9U2LVRFx1)w6BSi%cmct}z^^)sdc>+QS9VAV1=tFSdMtkw(588hVX1?0OC= zL)%M4@LWARs5gQuMk-v8=#@Qs?89)|hB6P-?-@6G!cE6%{Uf5N&D`s)Oeiy#_q6dy zj=bWk7uZ9_&~Xzl2>P*X^XH;N@Q9$mA?j0g`(ZTXz<4&?;w=aQ6W80?mO&6#?}w$} zc|9;2q}5R?uU#_xe(DWUXVzKFIUn+#KR8msE^ok8+j_{bU6I~9BQ{kER#X#jhN`Sj!M@DnPn;*y=AOyLE7xl ziSR@Wcx}gQ%Px~@W)%Wfl-RccD>|5jLfBZHOl#D42Wxmlz`?!I1WhT>g|ng?tabH z`HTL1n;jhDagRkNH?x4daBA*Exo2{hqkj+&P0X|*G7c?Cwc>YDSIpINLP6%W`u@q z+cq}@tjBCm_;{6Kl>!Z|pIkVdzeu7iInC{^aeVjc3A>}K{`K7AYm?y*XtMe*T`Ipd zmV9>c3CdiwYktk%iG&GE`LO-fz!5f|f14e-3&K+g#uVXDy#wkteWQrE`{-%Pw;p-T zvzzs|UQ=W^qbr$F*GJYj(@VCQ z$u$0_wZDDCqtg#OnhNb%E+g(aW@Q?Q9kv8-8i*g!&AnV+Fm27G!A06c$=jjE$b+ZH zFkb!=sa!(e7lz39c2Nn~ZIOXlL+eHYD^rMIM6WGqT4n9j+U>8I@IeS^#AK|2jsW|G zZDiNpT#k%@eIle{ak}iL#-57G3Yn6bG^*Rr$vXbIT&Z-yZQy~RM$9sLFbq^+6hwgA86XEK64Q_q9z0x2+|`qfB;4X1~T6UdQ};TU!wyM07F6so*t-s9cr^3 zqSgKEtBg&J9oPMjcFxYe7(qNK%QHxSNoh{iVdD$ze0@`DKPe)pz_S1mz$C#$y>m<$ z=7&2(%@t)`oUMOIc-r5h{PA4_LmlZBFrg6^>_Nb3xT(XGb?85Csr@u4!$A0*L|I!_ za|G)yuj(K(_W|UpV%_I8Uu{D|LfPtf<3LBy)P{Fu^R7WPg@PXm2}MP?G?FAlBboV8 z#MQ%s4Hpr_(DUKmWJ&csDVP66Q*;F}r!63A)QXukmP(+oyO=M%^3)c_$>z%tDI&JLPJyfJza8)&($%vV4M<@5xQl z^v7f7|9o9MmpxITe-3S;=c3cX)2m#IZ&nQG(g4<>2hkHVL#h{yzWvREQ3#P7L9Ldb z-E%Dib88p&JB?+3z=pBJDoC*VSX!nq;ksk&9T{@#Z5JP-#!9uPulp&E&N z4Oa?;&$MW_qfXoyirlt3krfa}{!97|MIFYeo$dekke%`yRnZniFG-3;j(Di|dLQ~@ z8UE5OqAX?Ro0`mh=;l7SY@WVD@$w~zN5<$!@bYN-E1bY&z$!pW=%VdkD)Yhu)-;M1a+u-qF8N2^7F>1xc)qUV6^g zobmhpa14)G%`Jrr^gA=QZS8(n-#Id}dh(E|58A}3bU*X^MCpMem*xE4_MyaN{14U= z9a;bI{;eD;$yxvzju+_UrbcEC3R{9c9wGfLJw#ED8kg07eN}Cly=Tq9f!$ z5%i$h7KJ1{S`qES<+Mb4?j4=FGw3NO{Pc9vEK3N@&UqcfI`lZX)B$Ww$pV}i-75rrthW+$q25{)ZNe9Mb`aX z#PfvDHqr)L^ddyVspgPzpzUzKVlA(ui!1=I;N;^ys%c)N+sF>nlC^&~JQbDf`1p(p zLPfm>$N(J?b*9_!2%Z}vBC$-hKWA=LVh@Y+G4DAc^nH3>Jf#bFxI&f8A%dgk^d_ohJr0{Wd4qqdUSXaCpDHPjH^@X$mJPLiyzY z2A32zx-^vx+(8Nvila)%5gkFNC;6TMO?yF<-=V*0IT3kq7oCCLi}R9w-Ae#f44Bhd zb1ku)={eJX=~Venf?`O%^=#_UVYkki zD5-+p2igor;2&ijg6qKJ&pKMS2ud9*GP?0uH1LIVN2-xFfLrwZJ09ZPgK=X^pC}JC zCw}D!(|dO5Uej5Z;*QyszM3h-_#6Gp;W9GI#N;4iA3uK7CGNYfhCF8e?E8D^hmIC@ zYoWrwO=yD)QLsof$hXRyvW$DMbrn#;+(;J8Jfbsfk;0G(h(Tx!1=>Nvx9WGLU6y^T z{hFzot5(2y^o}ACBKtJ6d8JBon8l$|F(!1a;hs;;F#v|l>8cVEV&qh&pn3Rv*95k7 z_W3glJZd7`mZJ_oFUiYm536yOBA$CO%<-F6#z)<5U`RTdCH-mIx4jiBiHcsW63aCDTNOWX`fCQ;u1I303)m~M}d~1Y~HGI zCERFO@icQw^E*yg&N!^>t`CWaMozSIWixD0_c@RxNUlZZFXEF6ZX*&ekp{x=>i2M9 zp>A+TRqeGj=GJOXVfQ0lCzJzid-~~ZXAvj)u;HU=BtjG+kU;-M&jm^K+yeQ0er{GO zBI_l^A}*Z(gVYDopz{8;>?kVI6MVn#Q67r-qz5s$xv&zIZKO{1AnwvV1<^`$lERZT5|nk%`EtP~W`J3*Kxb0)rLkkyh@NK7X@3q~?T9 z1YwWKeG@K#dl_#a)j~nNwg-~^!Vqmw@F>dWjxkVjt%XhFEgBYkgd;%2x74Bu0J?(S zd7{Yq0Ud`lIdYrF3)XV#r*9N?)Ej2~jh0NsXRyn~^J$_PkGRg!#`ry@ z?%%Y@fn}H{brX~i#KrgV@0o6@Qi&cS|5L)bg`9T>opWZxoVNgo@Rok)Y_0`jvb7&4 z(Wb3QDvwNj8T9G}E12S4UhB!%)8orbtPi@#gNIOFxex0TdRZ&BX-$;wa|E2Utq=;` z>JhsR=m${~gf2-*oo!A(RRp&)qM8ZR6lMbMNFg zW-r6L1^B#2uom;2EMYJUW;j-!edr-BeQ<7uAR`Gf0{YX!Usc6@v18Lh@bipFGL^5y z90WOi?^p8|ieSJHuF3(z2XPJKSug$`i_$}qientL$4zKy?sgZ;JTR(0>M&I*lZrNN zIekpZl?5KhFkWu45!12P&AGZxu$F)~xV{StZKAF(a{|9b4+r9SNyc^lu^dK0LpXX2 zIyhO?_RprdXf2SNOOndkf8ZLM$9jk_U*?rf9zvQq=Mn9`_U!>pg3(*3S zxaHG#HO$&$<%GU(4O=&MggRb+Erqu?%8bQyWBv8a0YEB212!16JJFYC_9Cx~ zutyQ$1w$O2xA8|d_3=jvtw+ao7OT%VoS;XO0O?77g@Uf#q@Bc_q+5=o`Q>wv4@1nn zT|{`K!lgN%>d&BYu=nx*oxqhdR*B&?bf{1A3D^+2o~|s8_&8xE(RPK`Hmn%Kgs)xP zSrR(x@&|JAG;R_u!e5<6LZIwCxVIkK>z-UM9d%&11^G1esf5uWv<9`6TdFt%4oE5; z1V#I55sUAwYHhJWk{b>JyrJ%yU90EgC&D>yzQqlM>eWOfgKk^m&lLQmGjIrzpx1X< z{z`KX+ikoTua%l?PoLw*H7_Col|DB_s$l=;yh&?AxSS;3{vS>83sX+Ltu%)?xL3~dWp1G%?UvdwTr5Kj~s8%TV( z2XaPVA1it~CW4w1bbSaR527MGwYe&eLN)>mOB3hU6P^|cJ&9f_Lh5B=@eSE=7_@=I zKBHsS2Zu!|VvKANFhR6zxo+yCa|(1StP>&gpO@13;Y(3bsHLrXb^7 zp~5L0(BS=&$ZnF%>UBB~V{rBmh^uVlK+(s^!Zs)@6tHNLD%{S5M5je_k%b^rP(Q_o zndoqyNr<)7&w{*RZx>17{RARReE(uzk%EYKai6lXXmsaK+@H^UmR5rv_9IO{(rk(p z7wlOwnjIWcAP5yt_xBJrx>B>2cX)o?_k!YB^{+vU33WFG$zfDOZTLNi1{48qlkcj? zsbjSlj#>YZ4jV(UIB;<0*T&e=zWa)`KjZiXCO3ZH;o^YodhUR!^&d1C`;AHrk`}if zb$IOL?zS>dI}WN`6nCVITq;B!|DJ5S|G`wLL$ra9aXyJuv7aO|X1uTL10E~el1A`C zpmEM;gSgka@A5CY5%A8g>;w;=#W=N-J>cx16cN?HPm@ z=A$zA?yHS4B;(vUPSi==S^+ojz60NhCu@{EG1;2Cr`)|YgR}|!L*8scmQ?S?L;I|K zI;>w)HS2Od zi-arZgYH^>HK>J~*=2-r32xmRqW6+~z52#tsERw}Y8Y1oW4>%VJQU@g^}}!fFts0! zq3=3R`>ktjJyV;#Mnq127U^$zP9qNhKE1BTx!h~Q3Oz`YL0r)s&S5sd8)ze|RCczd z2QD}ob~lv^fz#>SVl14!!_KzL$JOJb&pubYP~2nzKkw6k%zXg&bNwgI8QPK zgA}6@E&^Xhi<~ENng9CMCr?lGqJK_pZMpZzc;8BS%vG2BMC}+~2RH8f(W@HRyd!?U zW3JHE{JR!cTm>BS6A&wMPI&f*2bqPAzpbbW1Cs)gGKi}*Ru|a7UU}0y*HQ#jn%+n# zs&=qhti~?IAFvM?OzX2{xET_K5XXHd2kYggaqW?aPf2p4!VUq zG9B+aGFUnn^ZAFb3Q7E|=9VG+JewR)Y)Frpmw989x-R^z3jvh^)q>0x1^R#!FUUV< zc0-^U-oW@~IXtndOHnREiE{*~+ThmOo0)toiRZdOf zd=U*@C$IqX5Zz_=D3`)={^59HCqVj`CpwDrt9$@gNZ?{IdsE*lCbuyCqrsH^Ai3Zj z`bjPDoz`Bc1?@`6RA2Xg-oRRqVAEA3KYobQ#!~yrlSUQs_)-b%kUH*Rwb) z)RuhtY67fS$m~s6{|LoYk+S%F2{4U#J)ZqdLhhX7smoXo?@tO2pP8p;)TwE<^X8me z1+ho|=A8}y#_u{Of zpZxpbTom|L$@OC<${T49j_y5GBrLM{^2Ch1y9N<&s|ZpspIvDA$=pG)d)8emKsYXM z-68WGE5nrD=mE`Y=iz!RO!jLo%Yu*~ijZ;elUA2`*4hGElO{`YtR(tB{T^?vSu$t= z-;7U$E5~vBj*?EAqf`-)olVcGc^C)i`0xd4iM;+u6-VZ(MA7FTeGbs0zX%wTPw+k1 za9THHV?*u62me*S{76Z(P(nUg8vj{SQeiM=(0<*l$kflG>#ylc*&3DtF=7k$9NCh4 zUDMv|gUS0`43E8U*qLf>rf|(%MszzE;O6!vHL5R39x*l2L(uYoaIYl+`8~{E>XuKHPTvKz;Dni=)=VkGx?Sx`Xnf zu5mpTBYdy5keFs4)OMI+Upyx)%GW;-Q{wz$`dd9Vre>j?#?3!5fpU1IDeFhBk%Q+ zw!g0XGgc>0xtT*Q^yEXX@aLYmE0Z15X8UIyedfMWB%g$(n)}0fXt+B%PcT{bRNKve z%kCU(#>Z>6NTfy!aCR4br^yUbK<>VS66(4~Nt|c1-d{c6Brs6nqt^d^13-c&RIeY_ zk^m|K^^wYcd~`Z~B=Nk-tETbzs<)NU=zcXy;%I{mNt&l{K%Jk z!ltFPqu|eui0&&<(eMsEBTlcJ zNn1)$nJ$u`h6=l;`)YN{oy_jbp8a5)DkosnL-c#e$5uNyd|8!`IzL$BLziYmX!_7d z+5J8~P{O^QFc=#XPqFj!d49qQn1-|IO-}DqXlnFS>QhNiW^IGe=e~nJ>*UgrI5lm; zW^s|YhepQClF)$SgTf23`N;MqoWE*~JCsYk8+5sslPhfH6#VDbM2(8vuluN|bDi9A zbbRBgejgQzSPmDueKiWLMFJM)=524+s69~eTM)M#;hGYyzKqQwRH$tWxyB-1HHlHX zeO-T#5sf=&cM2iP)HmZu#4Qer%FgOomI94wI6Y&R$(;GhEaL^)`|2J(e;;>;{N&5R zEvb8uj@RA#e%QO4-=6A2sq(j|oPI7gmNRUdYn1r_4;%G>MaG`?nOqA#%7ex`FY*6V zfM^7BgAbwrfdHnQ!jW9GiP@n(US3h*(Xq+NL4FA_aVe=;>FKdaVJS(eu?gKa>+Zr7 z7xxVBYW^tMM95rUp}=2+avWIZvKkxgQzIBBz9EYG@$6!z{;-XG#R^q!uxiW07jd)H z+@h{VnD)LAJ3*>gb_v(0q;-@D6fM%Y9+!;b&u$7son$7;mL$s`U2izkpr=Li$MKfF zlsU6d4O(YYyz#)(UqXY*>`eCa59C(h=#>8U?W6wMt6o=0~vk+;(VXeN!%{lm*_QeDAq9$pRJaPSFJ)kPm682ay@N74RrEKr9gR})EHZEwF)VxwB{)nb3|qhrfLQsyq^Fu8%G2kdt+9D&W;h6;Ivx`aVwX{`vQt69<_LN6r&G_cW#nuQt zO}L+mSu7nYZT*GG`J8EmV4z5#NgKO7X7Y_8!&X`;afR6IJF5gMvR|l6UnAQUQcfZ*evjbzGaK5*T5*Y-i-xD6`-`K~3i8+UTTOSygAI87&{(_rxhAq@x)Ip}oobdACvYvLe_b-qpY zM36cj&dyDMiG7rK13)Hxcd8@-DOttDWsmAA6ka&!#FXt0zu(xqY8=P?yD<~W`9s&L!quC|A}HJoUygan zWb^m7zxoi{AbJX-j&rJBIk#ZX&^nd!wJDo+9I$WvkP2ILI2O6{z@VC-O`mJ(T@gCo}u04Pwf#voRL8M*y%H_)@AX$sLLRz zg4YlmBcGIhpE`T{KpYkloU=c-h#f&~jqe^=k5!EI_~$IE3RO4IdQ$+>Rhyf%0=(wz z|EayCin3!ra1qZ%i4N@$*?q7ZorpDi57iGI5-cL+pV}M)C)36|*KHiO0Tt?`)5=_aECRrK$2sv|MYR|g(jB4l&&H9_h6A~9;_7J<)yo>b$}bcxlj zE*J8aH+JyAJp373`9U`)Eh0Y zoRNMQt1YoAa0?;a#+0qe5Yh5lkXbT*LdA7H>_kzyOHq7hgfIBhb3ogk#p@`rNxv@D z$HUR>%&LulmXBsvb>^;seG>LvDoVDi#qlaZruGMkr7=7A`mKkh(0!?TmI|qtiQk~s zE!VI6s$51db`gGP+rs!F3R?_OywsN?G(hh%RRI)%GV18K0jFg?%k{2c*GeaF4sL-e z{<96p5W)1+Bzo+Zi?4^1NzrXrw|oD^qxS^@@!D(U}Ct+~a@MI3l}Lu;v53@ytan@eJnV zWTaN|9k1Q~@)qRb&^-H3jg*B`>rRs|CbQwsx=_7IDN3$ z(@C`OxQZ!>_R&+71CB~<8@U9VKZzaTD?!dnxyBmliO6O{F1FdP`X(Nb*C`Nxa_h$m zM@JZq89crUHnfvh`DolDD*y@X)u9M_GCmpt61(1h6T-FzL~aR7yR+1^5K^hqG|n9) zUN45)K(f)T>p-+rjr=Z>*C1m4{wGo9oN)o%aE=<*5^9|EeH&PE30jle{nRU0+UEqy zr(a&a>3FS{D8Cw+Q_Z!zlS$`237tRwNsI0MiKWtsh-Mi=L+oNh-<-W*6mH zfd=*FK>AmTI26E-YXub~h>2VGmvg2CRDu*PQSY%sw*V7^&dq4Zhy8o{ z;e~;>92bpROW!Z4G0YV{*6!dv{{Ge*Gsk;#qF?5V>J}~Uh}1GYrHx0oP9(R`I2`4o z)UsxzKrZets#$H-ME`}id~3wsqkej!&oe3mo9z+-V|dw+7H3|y*aFk-??y_10og#z zUyY1yql=&6Z*ARg#;v#C*>DQ2rNV{nel5Np;}=7};-_zN-1clJ>q>MK3#oVMczqJM z@sml@k&~%9c@4+kV72OgQfWLX-W^7#qP@w$>}DuivUSk{@~!A)Dn^ag6p6CAFQ~#zbUEj97-e zB=H@6ZECx3BoR%NkmdEn!9?^eVW$1U>9C$}c>zHK%A}ND5^=Z9Ta5D5xdC=d&eDg% z{rg9Bl2_L^C_6|>dLz67V282_j#Ru|-jei8EbFbc46}=~wuzsRw&gr8Jf#o4tTKGah(Mx+T&jWoIjV759Vv595 z21Yz#wP!6SRdxr7!#fQW{%2O@ro**nlsPk!Abs^CuehC-8UpYWs7|%25oH6P`28m*k-WrR7q88P2a0s zJJT>Y@?ozjduVi~qVj7WhI7|?KCYp7p>A^AYvYbJ?MmVO%0cqxNVCiOYPpcFKe9Nt zslvj$j=y3PzCGn}AB;gZ6Gc8po{`&(p8(&Y-S@Huk*i@!c7yB>sA zMI@yV^t&U0-QtU2R$umqU&DPU52PTc8Y34asz+wtfZ#bKZdv=`wNQOrf z8qtOrbhW`0tJ=rxT*Yvg-bW5(kDtwO{<^-?M09neKK|>wk+g`xyToPj4l3k}Z+48= zEV1g8rbKqXKfL85SN+{&VMPSY?X7id@UV z#~`+#LA~=iEgl%IB7gq0HCr*i)q*4i&UlyV&RwcgHWDs3Tj&yttDfHMyhn<=ip}#Y zUrh>qu*Jw6*2=4Z8E(nH+gio#Ym;hR*QWR9X~FoHQQC(jm0Oox@?;%@BqqY=^{V0I z*sB&4)?|&#Nqfkkl5!#p^J~}`s3^V65ncK#8S?t(U68pN8hyBs;V5v)yv2`DOZ<<+ z@Zn)=pf)dwyl0u{B68vUiuJ?L&AkLB!_BlS<)lFIk%D#KBdu368sE!XGB0c~r52ho zf2b9OwTEy>-O2L2pl6CRvoUVsYjj>pC4D_zYdzD5UEmm@@ON1F7rIije>x&qHK~tQ zH^BxpXJ4p=)?Fb(=4!a+-}I!%0H}ELQ{>NLAR?7{Uwc^b0JYQ6AqD?QoZ(ThsM?sP z8V_-;#!Ykk1p)lMhQ9noc0e&kVOoJm^l7TWa%2k+2HD_D-NNu)_b*aa_wIg=@6@7j zJl2v}vyuOFM%^=sR$9mBtVBx~E+HHWeX_}WzZ=3Siy+92XS6&@l^O)k$?uXqNWGHr z?PDW|&BVi5SkoWhC#}&ab|zApJPGe7%SJL)^=GA`Oq`Xx8 z7K-M!9R^4!1%zR26ZQU;;E$_X-w+!;p_@W%9dD^MzB#gDBv zT9*5{{Ez`x%6K^-vBlj?;VKYAL`}Kg-+ELh`*SuE*Ia)YX2$%*TR$j3j4KNWWIR%IkHdT)-607+5iYNp0> zx&mVS=-CeLoA|yGwlNcAd9y9VHo*YsKXyhW})dN8hDKbLXz(@I9PzNGQj5~c&65%TYp*xyZHM|fTi z8QN6J$v2^|OK_g$0Xy^aEru7a+4aGICSw6_fCX6xbd`Uu;3Ae%GP0pB`^?V}Ybo8- zKV}+_08NtalM#JKEmKcipZCyABK6KL2Ya)Z`0e@Vk`>UT9ZJ+EMd^=#9CjM#* zm5=}%0&5KDrf_c(b<5|kKtZ|V76mr4>m@%J2YjhN5`~!36=gLBCYoO*ApP~0MJO`b zW2_z((MW~2#g@^9-5sfam5npkn$j@uI4I)nOEnuFr#=i7Rog=Pws%5*d}gZt=rhON zW3_E93zDXNPf}UOmt?OQ5;v@a*oSh^yf62qo26|?WuEi+3BO1EPgz0;QQrGkmOy}> zGB1WrhJg6kmq}qsamhI`iBI*lZJeJ5M#Y9FBu#~|T; zgVcsZwA8Ry-YnwXL0O(CSSq-3t)FJsS}`CCK@zUV z@#vQ3dFHp3;l3$MIYc7yKo={CQokz7BaV2{V61A&F2Z0;sC1zSN3>YQ2DeSvTd6Cf z7d6l3@Ub_nt(r;hdHz|xP%a|j&Cr4*SSNiDJ9XPGlymG}f(CDi0G(SA22r4^fdab7pS#F@)DOwu)H&SN&{(O+TiRh?m~!wYu1fKn4atUN~5IQ1+)JJ^!Ppd2fi~uIp!9od%tUUvx_>)?ECh^7|}JS32}%2~%XF zdAx%UlpAfhKl{R~e-A(CTH=Nn)!h-g^GTiwB;ghB zLwMQ8#M%nen!6GDr2tu=CD=br;G=z(UpuFS-C+Ns(zTDF;py56_j4A9Z@7QH8HGmq z`rh~w2UNKGhdgQ6=_jwoGg4o?%HjF)H{8FW=sEGvquGYTo7E@bDiiI@Xy8vJHgCg> z6gwMdEFU(XNqoZ*_P&9BeUT6a1yud>u31nIskfXGROVD`yT1H(J(u7E2$6|J!uO+0 z>C`b>i%lT&uq&@^v6X&9OJl!&k7D=h1(p2qDCO!k3D~1Rq+Xy^V zxicG4p^KBgTK*|+qF(zh735%+xtcFQc z*+vv)szpAaB#-Sue&c;-^WX>1k?uuLaYRM+3YiVLr$pzyoeRv}+FgZ~)6CYcFDeHo zc>K^BD-!TTr^2Hb+Q+1pf^(0`5!)X?d`Iq6eoIcG1yqGn&GI}R1=4`@Rj<3+8Crh- z7HdXgH6Qw}STm9Ao>(n*FGgjJ+Sf>@^IWSh%jFRf_8jV9i*aYm1QkD;fV4PP+rxks zyyIcjvDPMMQ=to!x}19sb_$p7TeuG`x_yjg1%Lni?n@tevkSN)NgPEfQk!^rrOTwmFfw01HHkX}>8PjTELqVRdXbeqogb96O zhMN+_b?%q-P^}u@F?WtfDZO~qmv10E`TIjb@5F*vkc_^wv^xrva=G)>hOb&IngO%P zM_i|9OrVcn!UxTdVP?8$R_MoXwG-^~T~EEluTH8ByW&nAM*&KutWoiOlR2~xY_zSf zDjdDD8|Vs#PyuZqs#R83GYvSG1iB!SXAt`P?pk5J1C{0PUoh!)l$^1;GVREy;B%yJ zLMU%qfgF3aMX&IY(02HXOAb7r$D1^onB%NPJ~6P(94O}PH^8>H;M*l0g6Ks2u5^3X zrS!^zK8*Y4wZ{o-ExvM|DR%vXHSMb&T`EGW^Tnk1EY0I7KNgk>V%sLzE1q7xd-r^! z@`%b3lmX9PgXI|=!$ri#nu|Qb$Wx}<5EC@P7w<$ZZjzd;B!!Xj7nwepHsO;xen%#4 z+w_I_?>18D*@yLs8HDeQP6-E=Wa^t?$wv;|I(+=@TrED9X1W5^^F;dDMD6mfX#Hmq zZqBk2eHVX{C9Uuu^kpCME$U=F7PcY zAvRe>YK6`bAy%#loT{y5VWlqXn^%yLh`* zBgiNLSz}DUjImu*H5Ikboe|+<(BC<-DPr0s6xbmr?N|PEYR~rZ&slk}mO-^5#q$j1 zDV@1iqB-^LxZp1$F*owtQ;OHk7PtQtB>b;GMHmYsRd|SD6-#{YF>;nV`gDT;3%zBr zKlBu8D;z|8(~zbZdE4PCWp_|})!)-!#|)#$u@adM9fqn`at>@^Sx5}ep_kqM+Yh@} zlMk_p&?|*Z+PkD{IlZIjL%h5628-1_wb?yY! z45v^PjkQ<(>}+h_CGaf+zOu>dp#cdlN&bR#Hw|mpVn#HH3RXML_AMq`Sqz(Xe2fj_aqhIdV z$bCwNooZI5rB6trIv7GjGr#k)m>R()AU6i>snrGB*Sl=25N9;HlU{l*ryWKN@{-^0 zL7O0C4sIFN84o{WDv|qp89IV56aG$F{HAKNnbBu(Wc*|hUesGXDrn_%|G&1GNm2VV zgRA{1Qpc{3Fj7STfqOb{3@%5KQokNwz^7eLL@P9>BuaIN&LR%_@$Mbo3`6bf?uEH$ zzq)^BnL1THf}HxnFmCxfu?=%aYaz8NYom4n)4?F)?L?D>fN?xx2z?W+W^3fY=!HYD zV!vWK-X6j|PzV8fAHz`6+#>rP;8nsShAQzPnpZ?{%efpMa^e{+-Y{si-ab7E91`dS zyNa33({%4?Y-srXlT>M=qlbeRY3FpS@}g9KbdbUY&J8jq{fuv_WGX(el#thi*C~>H zrO9>I&uf!rOI9uRlH&jQTQx;NY$wipEB~m?4%<(KMaDiC&h)Ff1`5CM_RP_mXHK%L z++|=0HF0m=nSo^|AVvChE(I@p?{jz~2D*mIvG(vSjpg8;>o^zdlfnJc1g3e6FJ~-|2&?0g%V&q!n3ZmcUx~X%M5FC!H0q=vU5- zzzK^odq@}6d@(^i+en`$Gw|+2+DHV?T<7+dKCQ>pLpfn*an_#(EJ&I?=$ut*MyM9% zU2Ge^S@uLABio|!5x=s_lLt2ZF|YLE0vH-dcrNGXg0Xwtsgwic23m~l55EcVu5^mo zil1n1BU#wDINv9wC`4Bhqfw(^jh+teP+loCVt7-^9q*Vn=7jDFu=_|w(jiHny}_rg z@7A!pe#LF?CwewJ8vd};e`Lt`!usv6d&|ZxDEP(hie;e-;+NxXt51YqL(nEw4Jm^K zaDfD)IzE_|8B!`dlA{-JRCj zEr66a6mFs!rfp|vY5p)Y2fw9Oq1t(eaC7Fw^d^SPFlYjufs<(u&4KGrt=hZyJ0tZB zRm`b1LSGxikuEh8Q})r&RH>Nf5tX#+lA&c|kCNuK$vNKjISV>c88FR00Ml&6ajq)( z8OmyBLU^HTtR(70z<euCM)6C?w_Wk7ueDKr_?Xb$xSJ2F^uJx9fiXf z!gsKz<-vs>G||$Fny=USw~AdXD7kgvi!T5mfGoN~!CAR5G&tt8(bPo@9%el9DI;|> zDgfEy%O~#kpb-N3j8$`%sI`)=lurgBhuOG4S%~0xYaD{TX6wAjjl&@NmQYuW{j=QP zZfXnT6StIoH)oq=r0ax~mhnPC@uXPfPSKPnA2(1r5P5ted+B+!#0TF}+BZy;ZqlX5 zn;tv-067snHE>r9ZWva|RFw0EcD-+61X<1?@+(@)VK4$72~oq4s8D5+_K|1;20?Rr z>*GmNR+Qq%Y!pb?h6+qpBd?H!(xqmLPG`MT5!s`K9)P;S>-k+ukQ zZpft$O%^2>?+W>wUd@Tq$S0{Ina;8EF{wqrd7-^i6bY;cs?Ef~NCtcNo1^iO!ykK~ zx3M-i&{?Gi9G$ik65+u9g!FC6T#VFa77>N>!x|%{;58t;%b-9%R z_G3f#Nr&dDXX0mA{Y9U9&WPPwxAje^)97V+lMmDyU){g)=2JT3GAUJ0+nYya#PRok z8z08}eogswnR%&31hmN(gZC#g%J&%~V~*2;#z~?5e-jp<2(!i#h^Iw|uqI;ZUM2oI zUz)egC%CZzHjHhy`?(dO*pzby9O!rw+<%ERCX}AP-l4s`kL#xWReUj^YfgVz&HQRf z`vKFKiZNCESvZATgh7jcMY`8Og*r5Na{f-(x4B7m!NSh?z61~Nv$7_iX&KDB01aR& zpS@|$PpTCwh>}6z2W(`_fdA;$^~)Huqi_otny_q@ZCQ|^F8D}8wf zwgyDz0x)lYAp4KVm53l&IOT_7(TYXxOYWEMzbKczUSenV&`WOi`)02m?hV0ak*1bEoxkl&3Zi!w-e3OWtQ>mcwe2zb}gx+eO#ZYeL`WlNK zM;@>3xAqA|j1wmTPl6+oJu*??BU%vYv`}mnPBkN*7!bZYRu5VP_fM9D$seUe4$jtJ zH4>+ zH)`_S`}lpZ0Q5fj_A?5RO zu{jd|v85{v<@)l}T;Tgd8n8^5Lmv^O6SXuzX6mz7?%!wl3>YO?oHNCsoRijN*{py# zhq)_%K8V;o#nw5M=xdWbfz%eLX;ERa?Jn37Q>qra*>)&z&tBBjvD0>xh_$?ZWs-~Q zr|(sndr!bH#N5c!;}e3vOI7&cUl*?W-c><(R^oqHqcIQF*07JD;d%Z$5r7m|-oDP77N+W6|ORs$@9T?!O;99G| zQ_7C5lSmS5oy~G~Wr*eLjFEnt%;%m!Dox=>cv&3e=En0=MQ4v`OU$40cmDB2ySRC6 zFc)6fZ?y8|3}xN7$M^OVoZ|PMA^>o7;O^7c`7I?k zTwh#4`_tTw<<1KrVy>sn0MF;M_bN2l9A3wO0TCHodyCWilTY=uMG@|ebBPa_dphrz z2aA_)c<2QLubW8KZB@#?KUb+ks^|6Xmhh}JPze5^()v^IC&w_cTG?9*TU=K~l9{({ z`t#pN*qXzL=?SB1=Pvl3>A0D_(cBgCZO_NUMtQ zuwOyH^Cz(CP@U}?+2sQ!Ao1jKqihJu;7SKt8Vud-!<){9r9_}|M;nuaK%)iRz`uuI z4Km^Wt)BE+F~^rvQe{Fq`78uz*%W++ZnEcg7!bndiHzXV?g{Wmz$s^*K88e$dP=v3 zykADF{fh;5WFag&gGffl$l-xZx}shEvLDn5{mv_ydGYYU3;R5btf*-*M-wGSh{{`GIQq#BUNhIsU5J`x3XRwj5U(rF_ zKbYGLh<|rKJ~!Vk(dilCfJv6)Fcd~|+peF63>J=Ej*fBaw)=OpePC^*C&HMI*MC73 zy3VZ5_5vCkVBS;3F<}`Pd#U~mQAaEtP)7JUxQh?c|G|&n*eFmTfUh9v%`I5<30?yT zO`T7}sq#7{zTDOdM0)LNXP`txIy*Y@QY7IHfbp#3A)-7e5wdKlsg7$v{RojcDhG34 z6^bsdV?y^*r;6ETvvaEvSOAsmG|gVFSZo@fRDgHydmfyk0NM-=Tm^TiP#^@b)>S9B z-IBU~!&CLB0l)N1Tv!b69OSsH>$Wn_$vX16{|Wj3`2GT=-n@bT3-Z1O=JoFl08+6g)FAVSZpbnera* z8iJrG&kQc!%{!<5HNE<2}SBHom!?z*Mq>e20Mk=J()C3 ztCH~6{p&&nc@e_i7Yuzo1|4&xHYUtSml3bAEoc>3De^{!{NOSabzk93-aI52k1EqR zJJf6!W#Q<3ezfe1EMa;!DX3kZH_g64N2itkq@w!`pS}A5n%|%uZpdx)gF@V9 zwd8I>WJDN|AP|h6T49akXWOU>!MzDP6v-5+JEXX3Pf1g*aG8VT4Ka0V~nAfVJKQ(*5g$ zeG=K(6Jt^8iv|jY79`vjyk^6nTMHsx zZVM#(J-IbhghUr(g9?Lb$SQtQS(jnr9m73+zT?JQ$Ci!RMZXpsUo;5krV;p#5Vir1 zf{wzdzH=BWZLz?3R>caKdOAavIkvfQ)9Ke`2Qw$^lS*}`we z-I1z&)$@K_d#=@FBH*d;>8F23Pd>9>;Ri_{I!FrDoduTC^+)u3)vgVXCF)tf_jug@ zm|P6m-VT4|wPuCb3}bi*BRxV>C&fq0oyVkGe}0AKYzhnEQ1@>uyF;iAu3Kok_vtl$i=lo9wW>V()$CLgmTxrjNLhj)UX#nGc=lqS2y1U4doOdLgL;lp#%-jiu$w!j6Zr_s|BSTViA)E>|=fD^*;XM zK5q5#`SI*tvqNNegS&Ur1scz7x~bxO(gsc8hQJ#G9i+!}e>d%8CNp!aVmE`Dbn8ii zHwr>bvb9)_%AGry!eZ0^uB#kv=qKLGZ_?2CzvhDhd^7(c8elgqI#J6^YVgj_S6(Wn zATi}*vfq3E_>l0#SigvmF|qMc0YPDI8NHyUP;gF)COCIyTZ#L>KEZ!A{mFDU^5ONa z0)4+{1%0e|h8+C;v^mzVJk85(2}z2Tto?OMzdwDb=O<6;_JN6XNICz{H=9ebRvhhM zYvW8@Pc}qAw1qnnpa>JVx^Y%GcnWumqTeEZLxy1}9T#?}P_OL^(;OU<+sQ7kOt@P0 zJl)D}(HoIaLV2k3;!t~B^FE}AhYmfyAj6KZ)Np}bC&CQ^XJvQvX6NrTGJLRT%Qf<$ zXPLw>_)4{kX5@VVm}fHf@f7!Mofn^nVCvTLq-Dy|6mhP1$CbH_cpcPlueJ~*$oZDjOaF;!Pf#xd{5=ig~ z?@G*==0fzPs6w7^HXY^Z-&C zrv2vRb{>LvIAaJ_0=k#?uPk{FsqgVyGfc(c))vn$S|#-S2hIBY!R^#@>)+-}8y2_?U(R3}zpBMpRTuN3 z{qm(t@zp26)|*ccwmPg{XLJrVrp#=I9+g?4Mk8FW*=okP&a$5k)K}m=el-+&A9%nk zezkmQ^V3MyWPo};?9G67Kb^(T)p=k$8h~zCct?J#LhDV2hJTf4OkSra=2krKk9vKV z-9xk=k2xX8Rj7qhY2v~^ZWwJN!e5J%r#rnN>NM}iH-eev9B0G07gE`?^`^WfC4nAG zuB$A2>`}xLT5EVSMvoD*<)f8AeKq#O) z8_6(`W&|9`xmJ+xZ$R`PHO#xfqc-ykrS=w9ph56^9#Ptz&$cb~+X3s>`-4m;b4zr! ztW8!jw-28fk>3l`4J>R;lj_tK8vG2bV!+f0dBwd=h10~#X0py#-p_}MsHrqd;d&eE*kaP!ipuuhm0ffNyTTL;?DSnD(Z z2JnvdH1by6NrM&S^oI@zLT>SO!tpA&Tc5tHZh{)fCvum*sBm`qJ@qa3dz%*~v)|A7 z(x2l`ZAet1&&w8ZF)1Gowwk^Fj8Puv&W%Cy?4?i@COHk4xP&Wh)45+pcx>~7KXI<< z_c9XSx?37)^dursavyB&=8i$ld?1h3s&+QFRILs%zXK(}*&?yvUk9u}Kq>I?qK`a} zdI6$=VDd(+!P^8=ZrhK#H}l^cr1OIC3J+QX$8E`0EwnqDN1YL!#9}ABl>TXp=kH(g zS}LpW>-l$%`VqhAvtt=U!Rfol#EhkT&$Pei2?x32LrR^>z_w$Lisbyq!|fi?3#aTH z%3llbPi}F3Tgr$+0itpsjRkoBa77nBv6A2Cce)ovRoJUMAn_O*b-G8;KK}S?{3zb= zZ{*o;neYSNaS{Q5e(#!f2vKd)Q|wvWvmn?f2dOrTBiV zNuEmXm!9MJk85Rx^^S+FGX>16)r>pM7ey9)zQGN1GF}XzJN6$^5{XmTGf&3sM!uu zRBd$4n9x}ZKK>T>W!F)$F85SbP6(TOpS4ebo3e%3Q+ec9KuzHoNPSFuk5`vr6bx6`P33G0NWleT33K<|U4aw3kAVW&z9 zQaHx-+FPM8J@VF~oY-fQSc?E{a@=ix^97C>NLBM@MN0$#A#x`BLzlc-`wF z|oJJ={u555)=&O)?Am1zrV#1Lhr9% zfg2P^o>B~_2q#W4@wTHlG*N8TOUd2ATXRAqb?;E0gl?-(_sjf@>dI#G!}qSgks;=s zT>DPg%jPxhm|mt6xR+$o)b5Twj%BGf z&R@Asw{1UTTHijm{~ak|rBH5pxbt@1l=M-+s?bLKmow*@U+w8HM<}FpUGa>qN*#)B zKCW71&t9j>9-?*sotLG(qCmKJ$5jLe@-r7gbH3+<5*#(J`Fzs06iC1$3Pnzaw!c#JkJ0Bc(X&~AyZ^~sgdlv9&>84saY{;T&e}$Gbw$!4LN=_>H@*MI$#f!J; zBD6B$>oD1ey>LA-9~2c9<6?S{(lZ#fl-x)(gjMZuppJW!|0&}>3aW7n;R%EEJy6lW zRH@7I{pW+?moJbeLFc?*H83JP40KYpmhK5|mHal!Q~PkZkLZWeaN}wPk;D$;lx9ac+=F7>KYE6?0~h00|pCu z=SoZ4Cx$jZ-QRXl(sLV2qNX!`i6l{f6oD=Mhn%*UK$A;t;@mw8LI+Vm>yPumW~I7F zoPuYN{_>5U@2z{L4_W5CN`5MRgfAzn%})<3S<0ABp5k;)dhVmKo-+ zwB*fyg#UXuLOd5vMD7^#3C9@C-8}Up52ZV=M=BHWA@I?O{48*Fny#Lt90ywHK&7ea zxW*Kg;r_iR4^iW$&oJzMUJVv|+Tj(N1D~FcOKR`8Bn&pc8H>D;`^l?IcJgB%SuUod z@RRpW);Pyb<1l9{>h4v7Of}y)8Wm+ytF}xtdSOCN^C^@5@kPs=QUDQbJozm4AHFwW{#znY8BDGy4ncTS~1AzgVHjAyM?b$*;mJ0h3O+ zR`0Y2Yu@9ghkVW^AW+;8n~GH|*Zia+bxm9~bmQ~rF6@vhoN0R$aw~j~8f1YBVX{p= z0s1b`4Eo`v4t3&)y+(Jv^*r0Dq4T+p{0j-kt}{AGCrpDua+t2 z;U(OMgd(!)4;Vk=pOS~u*j{&ilCA9F={aR1xuC-~M=#Pn!3aC)QhjamEsS9t{nr6i zR^zUN;^m{^rO;F%pIj|@waWd7>(ql5@ zdYRmhLVNkmg{+_4_m(HA1zHbZVxKqf8C#WwVsq4Vgt?tGZ!twgG!x9x<=>Y)npi9o zU8q$i5%544T-K&lePXEK_eA@>78bLilk&STbsVv8H(6P9;3>D)9JsW}VC?OczD&Er zsEx(PVbd^x5NMQ+d}v%ZF5`OXwepU+-(DE3k;sv4z3t$GD2?bsqk~qS@V$SPY-Hl{x&;M7jEW_%yJ%w=9{g=pyeC=pns#Y3H1Cw1 zmtaM8*Vw#0T>srfSppC{I8W5@hm`2dyn;@NtZ?&#Xk%rYXFM#9LJ@~buR<9#1gLeJ zP{d);3D9M-!Po6{lDe+hR=Ml^QyB~d8G*#JbXFfyF|y@~A&mPo(VbNh1+2mB(M?<7 zN%Be@!=vFc#NJAt4i2T#eEw$s3CGFi*K-wGjg9%YO*0{x)nqW)OjuO^iR#Zgv5#Ht+$sC9e6L%PQd{sosBmGGY}@JgtcT5UnH;SD!QH4OdGY}Y z;>X4~R9VSh*?t=Ql3YL+I6B~yEToeKd@p0 zJQUd1nP(-Bh<~pvt7zsN9F>zEAK~lv!6hNi)z~l0*WE87*v~5>3beNYBvEP_6#B&T zRWve%caxDV<#-t-;2p{2GNIQWohlfKY5EF%|Fjdsm&kIE`hvf2?RJfyTfV#-N_wss zxI$iP`Us*@%IY|b@8;b7COer__PY(EJ|aV=*U`1r%_HC?S~!&^&a%NlB|C~qI8&8C z^7p^&yMoc%h#SltbMi>hW`dw_0R=MM0~{XWyhjg#LkSg1P0VO}!pX~D+EImC?%trcn~ zDpxta##bY2OL?6!p@a_-R>r5gZ35bE7w>tgQFbBMtCVUDW|LRwqGkG8yM>E&Mb8HI z6l`T-!{X9#t3}z?!^`>mG(5uqx&f4uUkrgEB#%f0HGm&YCX=?H)%EY5nwk!7fg_q9i-mSi~}Uz`i300s#k%XbpTrzxEY_! zUox+2z8W*P(c#zD-2P;*<9ve@x13%1NHSJ%JU8foAo(%C&ff{}E={kXk$@pisOjlF zpjAgHFMT%x+OmMe8B8QRwMOg3Wt;A^0jB&YaDuxBY0khD=w@4~5WH`-|Vc`Q5VDOYN7(bAa*+Onj49o$F0R<^6+ z+a;e#4Q6KCB+TX3=}BK3U2sE%UoxPhV5@q2bm?5U`?UA&gdsG1NqhzjUETAFGpFUDTtZ$UReEEov%P74^Erxa%zbHh2bJt|q; zR>TnS1al+N=hf`+4H~vki|f7|P~t(}f_^eDsXfql=d4Z29p(J+Y31?Rp2y26?>WPs zmzr+ALEZSBR)Ztul=~kp2sEWaAB)<%PCj>9wVM^`CH{#ltfFCkC}h*#AK&SKcOw;f z^y>aom_ngt?_BKui;OknCt;B5C6eClsI8t224<@n78PKYkda%xVO7fdhn?XS5s$)Te!Nue zDgpiux|%e_!@3X==Y!LdzPw+Rvh+EPBaRs4{kj$;g4Kt_TuX=BpwA5`3nsFldm=z3 zI#u<8CD8YHW zbM_%ZQrBrgsLmjBJVeKoN=!EfsR;2S!>cq9S)M_L3F$dgrRz4kmdYV0$XT9mh4Fh% z8)JEd>3)u7AAc|xEN-FyV$PK__x^WYy!&Rq>T2kW+$>&mDwDp%PwT{7;>a+Pk1MbB z({;q^RM>ZPiwlOc^VzSOsX>sZz?kEEBoI*y1 z>(&oBAjrE>=rd?6dFES^^PIp9Z?pWPJ!86BtwyoL)>!F0`;dRif=Q*N zbS+yhbRD(X7S@Abp9Wsgv3AM6{NZu6^X%jO4P-+p_92h^WYJUJe_3>(9$xmXv39hN z7n(f1XfI)h_sZCIJGa~v%Y)k zudg5xs-Ym@*M6KRRo;<*1@*2<`>*CO_n_}T#PdQ@Ki9^UH0x?Py*0%T`c?j(fl+@s z)GR6t|B|xw!M%4%=InzDAI20herY%0#W*LG+E`4gsOlZ;z4-La_OwUgoisKXf=(R> zTHwlSn0xL!8A}d#(zybp9q;Zd0KkmTi5uCBE=UwXnX{zDdFgd$t29H^23+-YT7JnG6Du>SyQa>RLYdfZ!wfzd%=zhRTG zIbM-%Lc8`$tBbP0IpPHqSD!-BW7cKGH$1^31ik&f(?}Av_D^Upw7ZpL>s$Dw50j}p zXl&_kC^@xI9BNR&v=ucYHYtp>(`n!$gJWrD38tx)BZPSMpVg>Pzckn|HWq|&ck8G&%lBf_cV=JR!J4Tu9mZ| zNYu@EKa?Spk|HKoYVy69#evPx?$Q4Chfr3RV&kJZa(?ZNxq2_B$BPC%OO$5)ej}gC zDzURZ8sU}=X$zBFpk)7AWc4GgsU=tP(NY$QdCMVYdJu;q2#fa~19|qBv6Y$HfBs|V zc%l19*WkgOlOJmAddF~|8lrn%@;Bk>ciDa<>e6`>Z?CDA@qeqC39+ZL;>=%aQgElN zM5Fqu8XvK8>a320za<$di5sRqhR*N$0YIeL%EU`eGelTHo zAF-A80UJ8YxiiCaKV2N%M5X7o2TtBf22NC*#!sD@gDFs%J;;A;+d11mE&MY^`S0-j ziw+mck%;XlxK{^+s-sx$wXZNrmZySx%*U4pAw=ZqGe(dx+ua&DleL4}#C%cs>{OYK zcv(95iV5K!*~ipWf{&&8yAtjSkI}x<-tokF4ijc2R zz3uxIVTLm`;CGZ2X6b z3FUovhw}zI?nX}HQnb-?`bh-iqgkr*Yi2R-4!!{E)TNx9ha3Thfgg_IPB_x4kC9s9 zVrGPB69$Z)=NH}_2Nvnno;|D7MYQ^_b$%*;8@lIS!1q5`Ck2BAoJ~M{(rC~suP`-t zTlt?r6$!6mU;~7lH@_2LJ416^qSHFrdU!twS@O+S6qSwu165myF z7#xe>C4Cz}6yn8ytm^{VZD8_0HhqK&Wgu?RfH9OGp~_Q2s{x0~a>k zDnDM8uVlNAp27WDJLiGVpP9d~Dr6YnasTbCJgpysl1k6B5kc=V@$t+F($fULBxYG) zi=ffrmxM_lzmsc+cq=|XYTM1eBK-x6J=$2k4V&gaJ1$RddF5*TlunuL#?4MS_FgNCgBjr;SZ1QIXYQj?=H%UrV*1Tjd2n$- z$)U&p5Q9v~&GM|r;7h&5gK5>E%`#TZar<~{cZOuM&`*+kfYB9CcNO7 z%wa~=RTkBv9`HB@j8XkiauYJcB{5C-ep|oSy@ARxd;Nv zL%H%r>s6iP!9UeW=e~Q6@mep~be+}8+NGHtVP$u2?(b5(eA83f&W6`o-|6F6rH$5}Q||T(b==kKv!xRDLi03VVFs8-0BYLOTRC1>?Im(n z!o><000k5^W-_M6WfoyTAJrdr6syqr0Y~~zxFsBrF}egZ3eYa(nq*+u@nXu zDSNJeFnmzR%g&%4|n78>^)^bp;bqy2{8SI0D^n0TH_ zOuF-BeMf=6;YLin)Z(z#yFu@_=BZ^9v(qFOEH4GWf%8o1HZ(luc<~`%s9ml|PyYT3WP66(0N0Ri?rzGV)E5dsQpXg7Q9hxyO83qSZQaGeYM$o z6Sn5xGIVsWMV)2*D`oO5d4t17>ntz9phsjE88Wv2XEM-$)!uoi_eo<$MvoIbK5&U9 zTUkMHwxr;_bH~of%5?V;_cROuh`^4Eosh{FaNU4Lr(3r_vUu)cU4hIWf31>gn;Arb z;50?Ex3c@q1HZ&9o6gUxyE;2)`W_Bpd<#WM(9htOgEIZJz3h^Q-dm%x+rrzb@~M5D z!aqM*NaaVxYm`{J5HzG{4I_~HjD3Dc$nqCx1Au|6?nFj(7Qtw9KA*E2>>jr^X$1eS z$JWBQrx6gzY2#DQ%jMNW{34nvryDq>{$PE7hRVM6l}ij+%3r()&(Hct zqw{`DW51!8v+8w@ZgGQqO!YHV`=t>)E%lVh$g&y;t-6oMR*4+dKK*;6k~0wYqD8-V z>f@&=^MYby62ns+6r4~vh=XyFd7)(pck1R8+)>`Z5fo#z>;edCL2qh4OE`o>{@R1| zoKfBtjw6uMw^RmdZscM0?NGKyO*b~*T5>gT96n?X^cQrL=ypBOn0)14@Hr%~t8hW~ zrA~0Rr5aaO=}sD3mjj^+;j&k|o*cy~(F0Et&7A!9Plm%>LpgI*z?I>`jN zrT1=kqJJo6+P&)8;OeS{2yt9@cIZ3v-f#S1UyzPm#-jgx<0q4!{BbAY9K~1y>ju;` zqe`?TQTHL`Y5qi>WlwY#gC%XkZ1KzSn$1aSmvycDGK@ulU(=5=TmS;0n*a^&?ViH7#M(I;$>Y$iCK5M^ zcd)9~&|`BhW9(;&agy|S(~}t1FZ-kI@4#B0I0iK>6AzvCebRs-Eyhd=wh}io zM@l=d=Lk3Uxj;3?1Jp=z-oTWW-zUVsD`379nOYUw*ZNO4x7T*RR3|YGA(#Cttiw+I zA4FsHF_cPAIcd)x|D7)t8a=8grlpBd=M?ws@y1uqX-as+7KHorM9unI>{uATkoQY# z*P=X2)*D5<=>Ub5o|XoN+BvR*tMjSbiU+3qwNe=Nvjn*iqATBTt>LB)EF_Nyy zho2(55ccL5@VfL@HO+ds?9`$8PSDS~ey`NUl$#8DMvo}d;$3x2Ut7mvA&GBH*mKsY z7hV4?hKfnuhin{YD}LFIkEbY%Q}Enww3d(E3UiG_;Z@jFWRktI%Lm&xua`Jq@GLxr zHwPvs@haq|h5B1702Yo_zRldloK_j&5zR=2u>6xK%~T zTGCet9^`vN?`w*}RKkcn*FP%f6h~EeE@#mILgj1tZL$idm@AqQ0yKN}M9VM(0De6m z9!LMl zAeyVt);d{cJhT+~mP_B;Irl0xx|8 z)$iba9mDR_(`_K%h5YL0snFEM*KMTy9w8;77WgTlkX{9P$!DC#8vXSG@PI9vWtF|v zuFoL|Pw7{Z>h#I4R0EOw&l_oWI|=RD7Qg2S{q_nR(Z$=1EPIIn&o#gcD<)rF;H@@W zX6XMXK}{og9;VI;zG}0u&+M!l`~_lBk*=u8;dG3pg;dJrll0o_WmSdO7JsWT%ScPc z_fd8$59&5yd$m4e58*^jGd=Q@>`64RE#tP#7Bu11m?iOM)haaan>I2=L5G8l99?0| z?b`^A!Rm**%WxMQOYdFptOnQ<+1KpRsDHp;pgAx5ah2u8pSSxN*5RQa*&^Lv780&1 z?%TUIV4KudVHe$V5+U#V^zdQv^cwLJ}S`HFGk>JjisW7VH+Ngc4OP~+Sq%$#IFIGL;za$nukUa zD#xcUU@;gDNo$}g>;#7|6+g@QO zFHtYeZrf0+YPVGM30gax?;T$44JW#Oh|D8yF3zh`!&}a_4i~kakz=h+GO%V*lV?bk zNOE286yX;AfE%&Z67mQrB)TgfXgW_jI+L<4kNpeV7##Tb3z3mXH^y6I zD(PofckGnHyx+h5=v~#gu)eszF4wOWBR;SEy`tu+>2Ijd;iYeRWn?k?mA%DJP1OdI z7`pjc%=SCdV2Tzz*&Zdq@k{fX5ez-{rv0;|(9Pe`AB{+6>Zjk(z_Xp8;44__)exWK z>CFb88Qlw22#3EAV~v=o_fTm*CQnJRM#OnbRP4p`=W(b-VZl4;PGTt5RTACaYx%zx zn413Zn;7zgq4oLw4RLWsp95QK6WnDbCgGx*eToLYi2OSIsv|4B6w8(K9ZbJ z*DU+RJe2J0(c>%mpbVwbGWM|5q%O}dy8$y`rLMv+?Udy;@tbYFOCTa0rlDs!xV|n1 zqe{IiqL91syAMZL1GjmOd(r{mU7;Au)lQ1gejrRpD{qys7i4UIb)eB*(-e&L&^;=^ znljL1fdPAJA-GvPTQ=oidfZj7k7$3HCrV8Zw$;HHsKmWho%`aFCIcIpRWhoUr^%uFrhyoiyj%o=ht zDc8zG^2E|rqt1s^&F$uNH%KXB??Sw;#QaYj`_#bcgRj;xwSLl>@g};5rjhn#i63%1 z7sI)uTW0_h{$81v`IfL^E>14w0}e2(dUVixGjOEz|A>0)fU1`Fd-%{GAe{=*CEZ;j z-6`E&N-BBiM!Gwtkq#*ZM7ldHlm;awf3vxt@B5yA^j=}loS8lI)LQG&3|z)K?7Bgi zyt@vRGSesh5eoutIMYXbMRCKHYz)|4&nPO)Loz}~Czxzt+^y1mO9Wo=`g1@-f)_b*X9SaWF zB4#Z~&9bPFbD1}t=4gk0O_s+GJeOXo3{3dDcexP!o79mZJ)I6L0=!hS-M`&Fvf$M!my>nXHTt1dL>V zl5WlgK5-2eW}qW~5wcx;+~;pd8f2H$|B5(;SYMdrguf60lp=x4onGl0^S;Y_**4SV z9vc>b__{_@7HSjtL5%eJHw5T2i;VV~8~Ii9z7;zRdl47CioH)EblL_x3IDu1j1DiW z+L(tqP2kmgal8?;{ep_O5zKn)A>}p!tW6awH4^je(tJl>&6leubUv2jrV@vCI=yh= zQ*L;x1ycsqi3q4VG0V31`}H&@WY$1!g8l{2B!+!;J2D&Hf?{_#)6_z)Y8r;*jZVSi<4W# zG&d>H*EU|B>*-TqECF*Q&2j6Y`QZ=!@cXRZXA~GZdCk54IH{3@eDDHff?=>n%uaRM zb~il|PVNV8zg*tw|48azPhEekDd#O^HlK*eS*|W9fF>xr9^Ywl<6OjoB0CbszDv*1 zQ4+h`5O*N=ieI;>sv;TYg>dVcb04{bbWlZX6&hP=@D#hOQ%XWJO}$l@pxz zs+C*6DXE5I8ni(D>~#n64K;v1!9uH>WTa^x&Mjt<_TunQk@1d?McOinsD6HQ+rg_* z%%iAX*;#7WaY{yX^6~45N`LUDuE@pn45B;c=hv8vJjVz4J*Hjk3Xuu47aLeLG^>wN zla)BxXfUN7zy?skT?WIn=wMRbJ zzBQeifQ7M^GnRyKWoQNBG0SS6AP z&*L@hAl;3vatc@;&W%XstI0hP;o_(MV z5fAzGDSUGuq50#1i>Zs>bu%&2UboVIY3TRg501x;9UT4kB#HjAPgY&~3h@31jF~QT zJPNJPPkxif-w&c?!n?fNWJ1)FqCg1(}Hm${0a#e3% za(QlNN|0GUV5m&vdb*b-s|EtoaIq3`l^ez^(3y%Fx=8L)VDK_i7ir?eBl~Pbex){yoLuIhL}Hr1Txh^< zgv(TepY&OdHD!UPgVD+8-^?^oaoWG=i{`#o8<96p&YLlS{%LEWD1@@Bb%mIk5VX|O)%+cQ=_ zMOT_LPHMl?{xgi}xze(JsZ3#lR%^^po#O)=eB7UmvnKsERIzHriwAUWx<6&ZrjjDi zO%VOkuDaoc4Ci-;CReW{0nu+2jgtFpP?bP!zWbX3bhKzmaVq`9sjyYIK>sqUx#Jv<(f_`%l zflhXND11Uv^pOsGC5+OhBbmJA-AX!!gj?Nk%)&x5rmEw>WLag{(v7 zR_Wg(fRb3aiRSs_Bpd%m?q3aoRVWy}$$?qW4>AF7wYQ^^A=z0C+7>L8RPFk8mp2tm zW=WV2X0U~E^4kjwa-K|W*N1Z4xqB)W49=oxX#Di}G5pj+TJML)tWuD_iX*E;Ue1FN zzt5U-CWxPV3H&Wu_Yz#{Xclr0U%U)hu*qyHmjsQk1_8Rxo`=pM`rGeW|DABOd&5gF zDQp8>6(CC>H(RO<6`hVJw0ph|pgY7pWnn0aSQ>IHa)4}oa79zR z=0o-GOLdM&0G>6>FQ=x>hIOkvqI_w%2*lZa2>EJ?T`!6_%C>~I&Bg?;N1ooY4s zr_OsYgdy5YUQ)Tz3ER={*=llCs0JLM2>*}4YPO$!@dGNi!Z^9sGMf2ZEa+el?8^HZ zUOiaB?OWKBL#rjLoM*R=?{~p5Xn%Q|CLQHu`=TyOD?(pELee{pRpqn%14tSN__2EL zdPFYvZOhjMpgVWVRS5>~wbUI2&lb&LXm==tMuADn`zzx$<~^RBv5>i z@~u`w&a|Vy>^o!Qn5G$RJfC-ykf0!e^djlT*@X+H3Vrr89r~p5f4!k}-}Tr=ru&xP z+D#mRzMg>di!A%p82}hyyDIbuRw>0CRV;8&POMjZkgoYK6^mVb2oT?N6OjA!pHiVtnEpCht(U-JgluowmqW0i*LV> zC!z8+K+4U``9_egi|or~Z%YBJ9Goh~N*=TPp1a^_ff%Xj{zZGbMsZ{J1;SC?IuQSb z!DCH?HE^ohXNk76JNRjs!~--M#?b4cQ_k$fyluY)n6Px0ilu#=>NndTIyLH2^OzeT z3vni&iorW$>0BD0=@sj!&+$T_5hnkS>HiCoy->Z+Kh7~{~8lgXGF(RiBdAfoRfnPP%CVJgCV z_w*TJf!_^LPBmj2pA8vDu&myxkZ%E*3b3JS@9wfU0=#zo@2_j9n{O{NIFj%YV-&d5 zgHm-b3hq&bkNI~AVBFr=3O=DN_CGGlW8PZ+(#0na3E(K@3-B#r6UJP~W8-r;{|Kpq`H)#foc%YiY1!3gwk8jJL@QMVBmGqrya^TL>b6ble;=%~yeyKL05 z`=5pl6afHjLr=A8jt=Ocs&kcU+y9D|F+eQ9=+*-({4JvQ7 zC~%BS&9YUIuj+}t-OFIfVEjNO#~u7UUsHR4%~}y8z21Nhd?WDc;xuExja?2LuKe@U zmM@Q5<)EPu5P@*WK9U-9)$B%}x2;e;_=QVm1Vq#j@UM^xn*Kk4?1A;Rjw}tdYr6V0+Da`Qy5k5MMnV~{M&yB+M5qaua{WBZ{zN{l`(c! zM}Mk;MN%YO41Vk=7(|OewRb5bw|OR5VTNf){Gl}rK}Tibh-vEDMUQYj?Dk}V&<+IG z5yqt-ILnbKcUIyWk zwpZ#PHsRZ%zMwqfl$*?X({;s%yX5vG$|cBeiMLhYdOsDrL8U!yN(#>@W47?bHJJ(7YtcK;ts1o@I%j$AI4h_Ad%gsBT&lJIKPOGCookJXx@ zdoG_}jT-1~_YdIzOCnbek~;tVfKt!8K9;Zb&25eUAx#iF{l0UFSc1ZIi3;(alU;7E`Eb7K`uE+b5cBX>43Ii(Kow|@{*Fr`*I?~NJ0 zQmqEIW6N*t#^@$D^Chyy4p&;%4LQw*1@ZE23Q?cj!BD^8mo9Nd&uKJ&iz$@(Fa$S8 zVD=lZgyKKfWl55#!|9eXXyuaHzVCXMujxf15$dnDT>d|9Bid1PCLa`h&Qq>ljzdu* zR@vg2^I>5fS|^6&%KnU)%c^$Du*b@?H}07l8yik<*)!HWjcolv0nCbd*Q259(9HoYJEMC{N8scT!(xYoNiuk6J&`y{8w7&WF(B%Te3#o zB75sQS(9c8MkK)&>|XOoGv4vtpFgcU8}n5E-KNN+$jH!b z4e+V~h=gaLOFkq$yQPYA=)Oe; zaQh-;$VR|Uejvl+*5;lk?k=7BJa0IL9`%sx>F_nfD57pwZhN11MwHbLJSV{OKyv-^ z`<;pm+Z-cyu>|aUK#w0>2v!~?>kA3dMOZPLVR-v~!hJ;jR$>Ayz@)xYUHq+idB@LD z?@LWJy7b4Uyu}XcqgsA-80|izDmVi0?M^54H?|%|OmnV}d=oBz$j4r1qYJRdsMo<0 z-G7np)SZhDVs#A}^BH?YTKp!CGoucP&2O_q*+c$Mm^!^`78x|LUlmY+8o8ew!)Szc z4M0)>V_j7e`vsT-JW0rJr^sZ=#&Y#cx#cm!qD2?QClTk>k?u?)3hmQ9HFsN|=9kkx zmzo*`J()C*WTUBS_(dG}_Kn6xBURuGE#lu?x>9!b+~pPrJ1|TlQFA_Re6L1DB)5}6 zGP$p=fSw@uNCB!lj4I4G2=#Y2(}-3Y7tutJ!>TDe!pSmCuwrF{Vag6x752F_?&vZt zyu)*K88v*=HA5el5|+zZozCR*((rcFrL z1fURS5JL8y?B`uuJ$(;IeXT*h;6LrvkSGLrltr*+j76xIdUr7x8oq!!FW}JN@9_Y2B1Ig7P-5^t$4V!@Qdj|PMxcg-_w#v6pMZ|_2Y zsQ3#^8yoQJ>Vr~IaWUAU!CaZpiJ7Dh#PB)gVG3&cMV&uZp&^dN7Xd$ z*cE4|vKb+@k$&*lwQ~0FU>;Y?4Kg-Fm;ip!+e(grtMMkaEY1WyAY+?M0q*KbFS4-em%cCXwN-GL-eE}T&5 z#J?$gNv2eF^jaGy)JEU#|K+P>g2i#J?iZEoTMWXqV^xhU}xZCtPjkuJkvb}4-`A$ zzs?2E7@qy*f4$E7vtPfjo3fLUzSMq4N&mb%b?mTHQ2!%)`$7>K9LPKx|5e)_p>NXf zDIYGm@6*E!fcem;+P9p*g&x{<&OQ%Y6nFnZxx8>RNaV3mtzwOjcRRpqO#VMI(*4iZ z-*zELa+Yc{r*=%_3jfRpAq)(*?rjW^WB(~8>c`)U`2GGbFAUpVP@e^XIoMbU;~bWy z3Z+XN9$22Ob9;J;{`Zakb1SlYR}|y^;jn7cH-c(V6{kl#Yw1Qd|-yoB`+OJoDq6@TlkOT&i@_yU<5_z=kxBQVEC364>Bvy zZIHj-K*LxSAQT`VLIFm;=G*AB7lEpk_X3d;IFh|7nQ-vLdJ~iH8xc^MOp9D-qo!j) zV|A}-Ql2`~FdgsmFo0>EYyP}37~>t%WQ-^OBb?XZEaae4YR+qPM#kMYqXVFiU&sY< zwu(@m>$Mz426RnQC1eY*%heq`r<_yU9)@j2A3S!7q4KjO5;^E@$baL4EgKm)Y#%<~ z^v)~Rs54ntjkC*6W}LWLNaUH8l~|b$!B9u@{74<=2z5;3D7F8f z5AN8nCVzO0W z6v(8@;8`D^ub;nU*W+dULs~!X7e3t|Rb8yw?$&1WsEfY*PtKB(TClTaiaM(A@4)_l zPMEttX1Zsw$a(_rs%O$>#z;UAnF{q@_R>MC%g?>#H-R{J`X|Mj(m)Ipc3F`GPgxRj z-Z*O|&aEuKvAr`z2eW7@pn*C4HA1zc8 zVfkuLFhT;*Cy;vOH#smGOoIM|nfg;?WB43C92su+9PI|H(GoLIGRrDx|9W4HDg}u~ z35yKotR8pn{d&HOameg%y$hOZ)j(ht+RXQ+l8%s?o1kIIq_W#u8Ic6E*eyrJ zXJkg~DDQZSUH85q0i7E_gM#|U3Q!*A?g+2ny9!BBT&hsrvF)54M(g|dCUuju?ovRn zSLn_OOv~xiNZ>niTYRJCHIvqvu6i`}$9 zDJ&5XdDZuHt;sN>v&ppT*W)2iHpGTc!s9;6NcIbe4{-jML6V!xh99b4HEsWQ=OILv zHXnhkGwf!uuVD=Q36pMjN)3HNy>E>U1I9!mbccH;)|Wx;L7mxg;(ScZu|qIG+R?cb9xH1LpT9wvUQ zU$DXom0Df~>%sfKuXR6C4!L@7Ls=^)=+Z(_w&bdbD5iwx;Y{CoOoAt}f})(q^THH%6_ZS#1 zk$MAfF^AeK-^G=J#iyA@?%k+}DrxJ1U_afME0aoczxgc0c;F=7~wiRQ^@=S1yCN$kPeWz8;pvxctO zDC{^I`}h7iqS%Nn>-6EQM=0qxWbW&-C_SfItQKya;a}=S>IT3K?}~Hth)9DA`(L0FF*^-*XGIa0%;p5=pqw^bLKr>0_mIH z3v9`=Hpnx%EJ)9MVQ~5`zVp%ilVA?rA0wG>MNs##}GTN-Zs@Q8k@GcNLG5FP}MXd>e0nV zpyN-82t|zfn(;CJ3p+-k%r_(K+`fEvrtC9P4qK&hzm_g z2#QF_j}1?Hn-r7!79N(885sF1Mqh`E$eR-FdqO(!4Fny zU%a)-2im4JZ|ulrf%}d7vnii+pAa1M{%(W}v)@k@_Qp&%-ch6AtHUL5z-%)97;bP4 zj8~7f5{R-i1*`e&Q}_-sB%J0QtFsOn>=JG+zWe-{R7i_|s#2lVp9k}z*dZvK{N0n` z(P!$(jN*QKx^HF;!+B0|e9?xb5Qa^NqOd4FjkX(u_mM`MfL7#CX=bDiYk(*j#f8Od0 zflr>q)IYIXB!lE%<_k%nQO~pI$SRzUI(zWxf};;_m%A)YD(Q2?|ES-Lo3_X6Jo-Sy ztH0=r?y90=X|2ow-|bq|$zX+wf$ z2vu=xGE(XH1@mgOu$Jq#C_6oYnX_qj*kxNNFbv$LeF%0EtEOJp9g#+ zs9}pN7nJuXI9C}Cr~yMuCIpNYKTGs~M~PTpOw}OV5{x9{qN#o8a< zSnlcB1;f#WQ?mROJm?X1ZAF?+$6TR8l^X{$5Ig`$f`-8>hI@e;(05E@bQCrL6lR5Tf2qSV?`5HiL)IX z@vpv#`!uw9|#f&Y4~ARZ0B$mT4C>XCB2$z5PZoa%}goLVoJ#rnQy^p4GVyoXzuq6zR#K{_Jj7RgX#c71CheMu zG7>t`JkibEebE)}knP6Y`Z2U#DII75g9Uk_nNOSNwx?N{Uv>{kG(*6xvMPjB*DqfS zfAt2-01H};j>HpV^%#!}jm4ZAuMz(Eny$_9d3;bzY1He`8O{_;Z-#3!!AIn1%9}f3#tluksgv z{Gz0%^A7s-_ql2w;GIEM-&@CR5NnxV9~V#VEM_2a+JvlEN#?JI5-wN zy(YJVV0sT=>J>V7>?-quw6wE{*nN7o2VQBSOMN8_FU#=<{=SOkiJ6xY8BbLxQnWlR zpr>+k7JOT|S0+>a+Cm~#>CFC9?Sm5+NzSy`L<*gRCjR{OFHh5}uJOooiB_KCLRA3Z zrFB+GaD|^k(g4}_H7t3Cym?59a#F1hW@S)9rifaN_{3isQ8(@cbJ>H^|1SfeAbdJy!-&wAoN_a)XQ;H8T!{imSEBq0GKuP*`C5 z$6DOld0z#jgpgsQkmMKTxWy|^n@UakrC(}aI!xJ7(t3&oN(-xtIa;?er|lj+vDx7L zHW9;Uj6)YSf>dPiIEqu4{#`M%$pmA}%%LyeckktP$u_sAkL}G`kiokm>PEtR?)*^0 z26!A0I~(~;yQfJJgcM!#R_fI*soPoEocScNhX}i>+vSD9GLgo~3p0y4DPR4|ZCxqb z*&)JxZ%^=C?cws`D+fX6nLl$`sn?f;ud4s)v_`ViRhqtVLi_YyWaSKF5Kl_l<{ci% zc=<+z;qgaq^!dZ2uKucJ4NofzjInb6tK#EN@N(EAP+>zgQ~+KXO>>GZ+2Wcjn3QuW ztD`2Ux>C8W)0z2cMG3{&x82-CQ+G7L?7kkpqJZ`G{(T(EGj{yLTImylx3-_zevA9Q zut9SAR=Gv^&CGYE-45?}S?H~Z-}{Y?YYSQFSkexI<8^H zd5kG^nlb_WkJ^U`u%WgwUFIBPVL7BPr=JDE9>Sf>II6rotGcFX;@&^xcO%|hw)fmL z!26~ksG79OQNNNr*;w;&I!610r*(ZIwPhO+nCmwy z)nJhYKgCg<3a%Zj50lYQY)}%?NOO-QhoPhbXWUiFbi0~@fT&zg(lHjv;u=a4K~kZy2g*IxCg(#{_)vvylij9 zjdB4UFXUT0MHp+%aq!QI>I^0_^~WUR1qA}!493>YBrrZMW<4QVZ@c5Y%WljxO!V;*nifYsGrY78i4ku3ak-s*qdFc;5 zv%cnxJc}efg}VkG8GLlVQ>ln?7$PYTz7g(Y&r8oFS1R<>s3KE3X*VoDTD9=k{Pn>y zS%a613QR}To#czJ-Z?G~?Y^9Ec=9c5QDQ@aYDk|=?l;u(X_&>N61Bs9QOJsdzd9eX zjCEfMiC&R?Dej8Z9A4*{xJ)A}4fPWY8fDFP@Y#xrS-_3=V7=Fq($X zX!~WWKxaD08zQEl60yyJbQxBCAEZg$7t{zFtgg;(W=x7Ks7e+Y^sn8mREP#vszMWu zCWl1m6LrcRCGjdvOl+=auek)1_&ydq-nf3B^Zl!v97R_{v8`5a2f6h-Z*p_%{0!AK z*&Wu!M4$e&r*Q*rMJ(BUunixD7mbub-Y6{zx+jJb+|61+XQKYzMyT0ykT`4Si> z%R^&*FOM6>;uM%TEiEuzIp(2VSW)|LwNA$(lLtb6lSLbS73^I1jgQ`E$JNGAkgHN8 z8wiUkHc=FnT@JG+*e)IXr;(x>sTxG@{I&OHMjdfu{>75hd0?2%V+-Hpb=m_QX@dB- z(lQ;--+P)WNEK+@OP=N@dGncawRkICVa?RsJN}3l@2w=b!PWTC5%qK(dZn54bxfEo z(3&Mm*%5M-UaYz{O^$B-XzmWB5FcNCfp+KZPvH9!h3}S6CMcf`zu`NH#)V(gI@j)v zwd+e<;rF<#ovLq5j-@`!7N!r5h<_wkIKw zM>F_)R5Newr1n0GgP&_jiwvf7W9|(@wtSmbQ@`m*aq#uu4U|BUG0Gj5MT%+u6(%jJ zeU$cWC-%dy!{HCUpLx1Ftm}#7d84nxq<1%?)=9fVZ-ZzGd4G}e$#TjJuKrNj+JTFf zS4*$z(LLIvr~X{&qZ%^)M$>Vc@mNh z8QY{<9GBfNbo?T0&c?YlT6}lEgeSXMeN15At&!;d6H+|`af#goDz0j8@%o1Rt{{91 z?4Pb4{xb+icJs;}k;-R~MeEy%)>};JfYUpWq{pYuLR?tW*3)1)No_z+Xf%Em6Wk!5 zo3iuv_zTKc4bs(HLs^{8&XIwYGGWL1yrk6t|&UyT1xe zY3g_T#?=&*lXjc4=r^#JD=QrV2cG@HGKe6?u~t>^w)BnG)bw`=7jV6Uo&3I1X&bw; zmXU{Uzjo1&>X&2`Hx_dbV4Olo|85y!Fk06~2Z2ixVfN;a@RoS=`e!nT(%hd0kyPzW ze?hOES68)Lqe$u-)1#TeKfe;mL=o#Vx;DNRc*FBoCz@-eB#={YfSKyKQZ#oqu{{Si zM}`+mL@^Msy8@h|zh%K2RN(9O+@ji(ZIOR{@e53hh)tgq1B#Z_>kmhCeUx=A3xt=gExh57`~kPXm#W#$enHtCH7%&65TH6s z4OR|;v@F$uu>3m2?u93Ezd(GW6Em68OKS0+EF&&DscLV{rrx(PV~~z(MQ}q(4=&SH zJ8?*DNuL|?gJYiKV>|wgj!Vh~({Iy`d{mP+ebOCOVb&P0l-+KrI7z&=+b*?&)Wf>7 z7aV6^F3ILn6)=NZEV%aoskZDk(yk<6`Mw!|5CXdO2f7Dk;7Db6^@WW}fyq2XuA=Em zyXX#2_9Fd*H0<2+{F;(%<)jf6*={Ip_E@Sw{L% zlMdvQnEse=G}Qtm&1s3QbyN8fXuxfB*JGZjmEtPd}V2 zn!eNdBEwa|aSMX%vBgGJZEhCvImsgit<&*HHygj0trd;e(TMzdym*s!r+GIE18RwT zte+$4q(!BqJ~SVH){}5?-^UDTcA`pl!9yNvmJs$NqJZNp&+!qYP?sm7;~TfCha zlKZV%<;_nnuw<3w`96d&)c8r1*?>k<=D`NNK3dzPKlaTcV>{1&z1cwFB?MCvb<+b$ zklQRf+2NV+Dd1aYpha$qr~y6}tXhd}=Lsn3!BDJ*cz+Gg22p$Ku4p5;wO6=^&>`>1 zy{^ddo@IWS$=x~rDxwq>W4X!F%mPgcCwu?5*y=<{BYV#u1Nq6k7aw%K+NApRu!VCL z`wPW!=FhYb)!%XI`7&u*@wWzhx6QWhVt~27r37q$7YGUaTrhOA*el#1%Q&mE_KnPdpOr-N6V@xOtMMJR9 z@;cchJRIdy6zqSKvDGl6WeVL9_stV-`!fuN0et-c*gEtqQZcoshH4|R(DHu^&=q|&8N?CI!|}IW z>-L#nM2k{-n%-40WMHJbvwT4NMQ4^24PK5lEBIRgImaNQtk}RD2fgd@84v9T3VnrE z?b%DzYF)Y`VEz2`BT|g#dWe5m%=#_!aNZ!*yB;zMmRrWMLm^}RJ43lcMg%<)kzUk2 zldvudU=<~ktl6++YNc?ax#x&~zS5XrHv39JFjBg-i;uAzwEmJp+=s>OrDd3SA1*yV z3!=>CL&H!1cA0+=dFmzOrGKifHhFWsflg=7Z%`z(`YB~fkANfPjd=jf1)dMseKsvg z-o>bYL}_n+=Sf{6A>1B!1qDz_rkHkXq#(kZ$i28)2|s17Fx7^+4g;?ZAQ2@eDSaHz zOyhhE`YDk~h_?(%g#Q>XC||j*PM`)iN)5|4Jj*tt{4jdP8_rWv@520`xsk2sSs=;9 zIiu&d-Mzi+u{@N*Zy3IgNaS*izT&?uZirU`(Tw?_lLll)S}X4?KJ0xf{$GDdN~*(j zFGwpN?z!BXZwg3$5RO=B{e_0tuf(s&u%yF2oZ?22Gk=}S*B!nrQpn#9<{PE)&u^1h zjz(d9r*rZF4GC=C+(vD&W@*t%BD#MT^uOV_b=Ov=ibYL-B0n??uHE#Ir}oyx7JnU!|nz>Cw7I zUSw?z6GUYFX9&czWG)n9R`PpByiodx`KTxbZf*A=Ax4x7GgP!?@@;dB|&KQWLU zs-uw=Sn^eMW6A>8r08ALNm@SEPBSg7)?ll{q1GNU1vY3s)acFpZm=J;mk82H{txqk z6gkCd2*w6s@-w&AIxr**ogp?#U+-=$4JO%XxF60iM|d&%S;m}CUXRf2d29EpaQuSF z6qbF=P3(w-LB5ULF{4Ly*9EPyFPd^1O|iN4nM+ifO)e_5RcqRrS|}-a>k&-SAoaV? z^wIEqt@Dz5f|7&;LIbbkXE59cadwBKLhu*Z$BSA&%ABhWJ{ZCS2VMH7$GaaiGB(gl z^!_RZKao_{{_zw!l)H_nXY~F4fyqr=d(-=B_gUMvL|x)w;>YY`R9vP7KfWoY-kKU> zb{3^Z`6B{a7^FAL7fl-2VoL@w5nw=gvaLux3w+PWWw`e}E{v+A?qs-VWw#1(lAI;Y z(eh7`4`U8tfb)myW~{dqHV!x|Pl*P-n=jL(|9$w9p7>5V^HQu}P%s*^sCVE;Wa_YX z*{z^?QEi6KA}`CY;Wl}i1q1*%0K5EF{aNhAV-2_a@*eE67^M5Tg`+_IqIXOLagiKa zYgoNOd`89$`gHzU1(CYLv0nkUKo;*<$+u!v^QkA1~8LP>1$J}2FYC9@4vA^bUr<6pyAdctFg_zle#y!%k= zXKxY^#MuIY@|lX-`^>}++^8FGoEs#Q>ascSdz7M!4IEz*v2`%Z{YetA~Ug%W^O8k0|MD|Hqx0XJoe1(xozg z@Vgsx4LdZB_7JaxFGiS31Nsf!zF`>;R3s;0Kv0Yg&3uO2FRva|NH~W-g5ZY#Ht|Oh z>ZjeXn86j^lA_xrkA}((`|S=@s)sFwGl!VvI+3N&vV@gZ$4aYcLTOSgM-(KMhJ9JD z+eFiLSyAF9oIZvXv4|yC_bL$ms5en-Y{8_G5$0}pBfq^VILj|WjC?r}bL^tc z^~~M_hz#Vo;d~k4%jiFgRX$u&!GZX{Kd++$QZhlzRDUZ3GefEJZL%UitRj4L5k(GW z@`$efP5Y0S#n+fIxf4ATy>_|MII`^I0T%eh(mr*@cO9my`Zx ze<7$ZH7ET?FyGWnD$T0^lhqB?rOKx8Us}<>?>-WTZMY952f7}X9|qSJ(8E9uKomp> zzCVtbWlIm1u=iF#Z0C+v?-t8m0#>4aeRiM|B6+~%36#(rP0v&*%yMGNo-c*I%?Z%3 zFc_oP^GyBHrpTpCC#v>A&3&^M zN{oC+dZvZ%wjKSvHGUPoyu_|>JY_aL6_>OL-zY)?#%C=i^tJitG^4NXGO^h``U*S zKRtXAB%!?AL=#$R)htSAj$PN4JF@-pua3u(hC5#-$F}6>&F=U_Z47rzsrC;|nkXc% zxE$65U#6h`R+<-GyEpu; z)@g=CUg9ioT5n#yhKxlgMCd4k>ys#lxYoapofF&oAQJNb0V+Q8X~v$d{hv?>5nN8q z5hNL5AG*;u1nxIyyBu-jBV{{mb--rM{DgRG!Q3h|?1Yr=fJx3=O9yY$!srY(!mahEa>`VOyS1xcQIe2|D`5s@g$Wv#qyY7-!wk9YO_^*i&jFgK9XG!L7 z4|1y89*p2w9F<`iS}krE#1(Tn{lM(5o?qsmx=f9uIX-35%?LoQLiRzKq^j@p;$Yvh zVz;3${V6M8z(UsrxUTbnmJYhuy_R0|wS6J9!_|*ODBt*B&r4 z>A!ZM#dhwe@+RW%cUS@b-fNZ206ffFkdH%URtC)retT~6QV7&JVN{Eydk4xD+}n2q0$$K2mJg zTxi~?lGw0E2tzFx4+te;W3$jVxz{&1DTn9pEBqg)D+LY#-d=jPBEt%IDhS=nb8|`l z&RT*4D`{4z|8~hz2s?>`rzm*1JqLqNucoP(Sxacr**zZjjS+?XEWz;aDgiKK6L zO4LvB=ZTHTM8H6T))^9|;<0N}*4TLAqI6fS{V$a~uM zdf)M81*<7&oB{TEprK8_aBTlc97|O6Y%{FXB%l8Yg`L!qP23BXO!i;D$9?faYnPmm zREY>(PQ3;-3!e2UT?N2cZ0dhE5O%!sT0XN5XGMQ%f`;~b;n()q^FpaZl0}67V^=WT z*M{%&5KunG;?bu-`q-ei@k#MP@YkVEs%p-b3eV(U7#g^|wD)tfvft_E^pn6MIm4+L_u;# zul+G^XB?~CN?H)hBDTCyTXG~$pq*Bv~bF&J>^j@hqP&+V=y8xPX^qL)d0-z5Tgzz(@m&|M{fOwsot6G={{os z%?o2~Ow(fKm47;QPZ31ZCVJ@OTT0ZhxLTTAn<(e3-#Q$3{z0)CkV;i-ay6Emb9u(p zG@SIR5h~bi)VX0_*yQSb@emy>a8K@1N&vZ7IZx5$rE=T}~|%W@%c#?khrxnKI2W8NPlF9=kt z>en9}(e2lm@>i|=biM`IBJXYA`ZWuqxU{o&9(f&&)J;TwU66h&7@kd zcRrKMVv9P#A73__#Igdo2r7y%6HKEDheEyCCR3`RoZsqMl=wTD&T5~@^HaO+IHCN< z-K$MHuUH37kK{qqBPfIQ3ufS)LqY^9M1rhnA<&x(vl@Ky;JHoC?~qb@Lagi-%}*$I zm&t^mN}P^@Jkszc?LX&Iz*jm#{ypk1v1yxNS@^6Sq1ID66*}CMOSnMIoD1ikx^%{Q z_-UVTMxR6L++FoyjZq^;Oex~+SgD|%`Au;qBMJo!NOeKp>LJZt6jiDJGN)@G?BYfZ z=1$RDVq^fJtJUc-n6~R4SO#%=LpmJDu+Z?Aw_N+$PrM%)D2dAN_qHcKB_<0hZXYL5 zdLT9VY)Y3vAE6{)Aj*{)0V%9=UB z`mkG2+5{F(p6>lWA@QvLw9h0EhNcxA0iPRYm@8BF8(I$Jv`=qR=6q)lSm4|?p<4$E z1H%~^$6KGn==c+ZV#BvQl5>wYW(uOaxrJ-7m2pT$2DdLKn~{u5XJiaTo#>4?`Y`6R zOQY1In{0KHD%#sd)!{XcaShvm$_{C`$5+t~UNp|!&0^#HS8)l}EWw9tK;8c%>Z`-5 zdcLnOT_Q+#H;ANwG}0Z?(%lG1#}(=BkZx%N0SOUQKoF!$S`bO;u6GW8zQ5Ohyw80& z=gd7bvt!NLYnLHf=%;S7k)G)XA*pza(Sh&a1)sh8jK7@~M&)en429NzOtqFb)Q?sj z-3imUp=g)IG-ChpF)YE|eoNAAyp;X4^c0-81^OqnnZ(qvFV-`7@2 zFMB2gwGRidp@g_D%u=XYv>QC)a18Zdy`1L>a=3I$148MklVOUhi*{Zs_Vf>0D(}6uQu0 zZDV;T7}xxE$^R(}A{7i2djJLRv58x}mEUbzxx!zB??%B$V_+=_uwj__kN5qH(D|!;)PS ziASMh>A)AC)X%hJ@Cps|8Fq(igD(hX^Ng;9?%p%fbqb8#+8R8dE|rl42ZBi@IxR!T z=VquZVBTV(Mm6qQtoaU1QBF!^-od-Jur~ZN7>zO6Fx0ge2*Ia29N}MGI9EbCJ+Nzk z7y|EI_nfU`p`!+EFi|jxIJx#uGYvWLdDm(B+!xh`3%VYLGdJ&0F^46?VdWX*Roghu zujc<#SMk!lE&br{wfV=|+Z3b%p!*MpJT$l;4uC*0D3~YY!#tU^oec#9T+!@-OGFBS z8G>Cz%yVpxFzg=o|SpY!;Ci{H6DH4 zte{2;->i{!G8$n+XCqJ2aV{Bm{2ayo^Iq+yk)XHu>NJU;);q3O*a%doK!6W4bzY?W z+`)W2R;mRK(EuifJdgqhuO(l6`##*X@ENPoW{c}vI)u&}5h%?;@2bjZkhdkIq(bHr zhD9QeaUy~U%LqtGj4|3D%np?|+yA3;BbMF+mH~cqgAT*xG1_sxNQyIfB~Ah2ba>DplSFcJ9a*|!%MHJ?JV=VrCN(n zmB|ClCXBNzdGD+MN{UQ{vb(Ep-Vm2#VMMVE_6Uo6q>koflkLs737YLi`R!_S z$@rev&(Bri^RLjreL)49mu}GOph~k5ZY^k-OXA{Y6f? z2O4T$lF@b|97BY_d1U?4Xj&JQCDY&OsU(70yiEt!TJB_H3#PB(YgC52xDHGMfBpXD zP|d7B_nm2}|JOcgG93w#rntX6Y36jc3ps4;(-5?-TD_2xDfj1=WE*XXk6i9c?m5$N zne=M9%@TZPAAMF@^(^>!KI-Xxg#T#vx+I088OCdgEE-AsRR7X#o#S$|ko)u{8_IC&jG{n^%-^(- z1reh%T0%jibK{f7w~spo*N}moc+P{vihfL;x0`dWqmmkcKtuC25HUi89g4OjbP`>KRG`dyOHqJZW(b{$(lp3=Zc0@)I?Q-}4%pXHikkvx}hEJZtQ7W|0DTCOZ> znNO+Yuf}+cpUaw21`ED8Vm?)%dqj@Ln}pYBkcFAy*nkk z#dvX#jm_Waw@>PN+8~0G6?dpx#`BoU-J0`pmEF6B*fI}NY3xhE?+Nx$lBDGMYkb zNdQ^F1f~?Yk~5(nnUeZZF-W^TxdwJ5{zyzyId|u8FAI^2g;qJ2(VI$YEmbWV01uyItpSFc`VSsLHTIDAoGpc&c@g){) zMVe>|LSASmI`ZSeOh&2`O6?csjS+_yS0G1s;Mv3jxn9TlR3mh*DFfBJRzrR?dP$V=dttk9(Z-=C^`<=o5kwK zbbG3gp|6%m zfg79U$UA)b8n_$bM_nE6e8T%>FLW9G2dbB$6-t2zzY>`Q;9~*j&DvHGWd8i4&E%0C z@5fB&^oTp!Qhx>GJNTt5MF{BkF66((hmE6v20$lx0CHn+op$_Vg19XH(@uCqqk?j@ z$nm3u)wH@_F|(lDB`6%59p}AhOqa*K!Gv^c7P`&cwR&%-(F^z^`|MAfo=e zDp#n=99Eo4qw9`}tu9^$78gv5I-4SPW_M2-BT>EUjO|vv-#X~jxy!XN$wMnwZRP>i zFD~~OVykkTqwCWyDLPX+YW)FE8Krn(dzYh=CYEP$TpfjHc>839NyLG7X^U zpF{fjLQy{uj~M}`6=4k~jaSVMg^lh`oll;E|6%^+x)YVYi|k0 zg7Eu?=T9pC@~pqqEUY1B|8TVS47Ltc%R*h|f(lK};rpqM@kE4rRn$P?az#C4R|CGfTsdxv8-Zu?Q~bQ&0Y|yrN3(#2*L)KT0AmMy}M?r zW>tTKovS5cU63v0q{rr*Fa`~)-ZnojmD0sFWXfr~&W+`G^_eL$U%Ft2Z_&}^@-Ko1 z9xx5=Kvt<+4gXAZ=D;RH58RvN8yyJFz)kX*8DUMkEStDKakn2+)v))jp?3@`RxNY8 z@^qjvvg>i`o}fvcjawIO{u>rJvBzo}_ADYmP4%aVSbdOS&yW+Fq{yd3v%CUNDP@L;8CC$p9TMGImZ*vR9*Q_)HmS)vhN}&!uQe!nj$&) z2qZ?l$ruQ8A_Y)qlS2O24f6on>;KpcIN*P&w%0|x66#7k{D#SJO=U?zL4zRw0BdYYHD+K$>8bk+ZD%ytvD5xHSy9CdV8>-1HK?^a^k`g^b z5*RMn0Dn?O67&!*&983Hwwg^m9y2i{{OuZO;a1gxt-}DM!2ta}P%a;Rn+4W_l>-zi z0qPWDH!_5l!Nc1aSE(7m9pGJs{1^R|e>S*a;w|t=mXYd3Nn+1!9Rh3`+Zsec$rq_c z$m<`=VU8fgg`lbETe<1e;=r(FAZ`Il=@6|;!TyG=rDMTOw=qWVTP#eP#LZkQf$zN0 z8_ez4I?87%5nP;~3}?cq_Q-L)ia;H;F>wx%fM#Z}|K$h&Z&;Xca0P767iWAd4=Tfg z(eF9k+J|3;p~FzBkfz0$DIpJRH}HD52IH*fL$UF9~aq z;L4aD5=j3^V|z{Enu*Wy{?{3dQX(P@vi-2uT~5-&yHqZCpOT95MyrkUJ0k4pY%ILH zA`o@tsI+#*(7qv0j@4k^KfQ?IZRA(jR7J!GKntWi3?x`Sq`B&J!2;)mni~jJ;+FRddbh?wBz&w*op0C3$b}qdKvS9c)~Ni_-scrccdi&RVB^=$v`}G(=5QDJy_l&&Y@A!%PIG z3@NXF{?GjNUFsZkHWAr2HJybT5vgJC$DphuT(o4T;s(cTG3R$K-@kse7)$Az#gLDy z3g2R=^tXdHigJrxDR+idbuSJN0({hKz&@}GRKBzfHjbMi`fg~2Sh?z)$b>C{ z6n~DO9<1Ro;2Vr_msI7ArYVjO9*Dk$VpSk&2G9J5W(JYdFA=&gD4M*bz9g zcFc3ucfJcLVR{_c9&19T7{yONt#_?~A<2&wo)ZC6OwH6uMOhrXMjJh7|H*W{Hl+{JC5!C> zmZbiaW@zZlxbPxc%|KMhqP36c^=HtrsLT7Jr|A@?jpbKTct*rTX@rOmfjfXRCda6G zH0w3BlU4fPqKc7q_zsL>-A4{KD+%y|VbZoa!_q3kf_V%Ge6JN8Ld2KS!@76Pl@F$= zmrLZ>Jm=wAv5N`R#`j|~)?d85*dTl(lF6gj&go2UFPtB7UTZdkdNQt6OL}a3DZ{GA zs>sfsumxoiz<|0C-^zRnRBiHJ{GY&E=AH2UYgU9W@enGCtkut%bx_|V=S2r2d$LGO zbXr$R)f?VC$YM~gpQiJ@^}Wh3xhk$pwh{(K)lbX;0~os*+GeDj7pHR)Dq{#By@e>V z{1;27yG<^4R(}WymqihTXkev>>z*~ZgAXv=uB`p5rFbnX1O_9lNlheLLV6iy1l!>N z;*SV?ER+c_Dq`S%SVhMd@4XTiHavO140#}+{)5;Fu3q{efFNDEiX}&qYy-zTh=yb` z_V78fP`1yUh7mx5*0cQ-RGBD6fG)vyP%kn_bkcJG>NzVhhy4NkH4NFmO>oxlcVV*; zVgh2Gw~Ox_{l=si%>m}oJO7ryFW({f@!j+=uaDzot`F|k{3PF(qM=Fv8ZhAGpm;mt zHg;;U&o{#oO1g>qfQl8EwIfOnf#D`&*(Wd{^_4jQ8G5@i58K?*uBcx?xz2NZt5I!~OMm>j4c zkgWi9Jzzk}Lr_OPdA$HKAjo%701RwZ&@3Spwj~06cx4(q!{-=|2WuKH4X?I)4D$fq z+6^l5qYk{zNzuNW0(}N_ZhS8A*B^XzVN2|U_iI5Z;ZRsocQ^PBen7>4qWcv8VSett zin`i*#tc{!@?IyZ2fDGrtA6oRopPQ4l{@3K;m+WD@^p9t~;z;=DQ1f49O5xRZXH7YHhrmX)~bK@Q#ezg2O+7C>MrVMjH|{IuiJFc{Ep0TWg^ejB-~ih38}K(_=F zlXV&AfMVqR@NG)xFcG;pfxq z5I#(VYSS(-Kt&w*w=}rHAVvdylGf3V%Q#+1O?iyO0Q3?m-PQWWCh)h0R7HFLsq-MB zS^+~2Ki)!@@O6)Fdc(^!K1h-Inox&5Dds`{GGN~0W7EiZHP;rx~KHQeM#_d*^A4dkrnWnogsMMgYGYu095W`#fvO?aS>;><9W%zI-ok#XsPL#@zjbjF9Qbn3#fQmTqX8zX5;_okL9FYDitaQh5RWJ{MG>Sfm zW{(eAK_k3$EqmORQrkr7O@N1vi+f5X8y03U^YOYw>U7K5-CF1ziQ%!YC3hVRzl`O4 zK>~>Y=otW-(th1r07TFnNW#o=Bw99F9xUCZR*Z!DW5s~>K-24A<_Nd4-C#@-uf^$| z6Q+3ILPxQXtrZ5Hc1%Rys{)087`O-P7fFV`_y@QO3 zc8v?U*UoD28ztks6{L|DykT6ktKSI7Fsli?2CY9kmvh65mEzuZVbviltUc!iB+83l z`^{rN{&U4qkf;f)D#!(it1Cs5_V@brb3)k^@KyWYdsFoSpwRLjisZe^HyB|O9L(8(vjdyFCX*z53O<0xK5Y2&ZPMXMSHZqRc%jw8cVl-MTK%b8PJa(q|k`Kmn&+~Cwu{O@RO z+T@cQ6hqlk{K5MtNF{V;>0M?&FKL{@+2b7k*W}U-SUd0!Dz1RSG=_RvLz=X_Bs(<~ zL;s8rC)dD~#H7&3h?uyLkm%6(u(;%ecp&8f(e+Pj0wbJ@1JhnXAv(K6lJp;$E->Vm zC;5S^;FYN&e0y;?5nZ&%_7soq8)6qeHSfKbS`7K0ayh^4H;$ z$ZsZ*iM&!AeBi|JlCFq)k8@je^x5+g2X^1Vhc-h-+c(DU`JxtK7#M?OqD{?Zvk#gl zY0Aq4*qyGA2|JBnP9s~Q;pAFfC70v1Sq-IGjBDmT&R)1dm~Ot!Ou)iOF)@HhVenuB z)prl?qtl7h4S?AjMy}gkm{>M<&nX~)oo8I0rYD+23XD9mQjb)ZSVf%m6Qftd_QcA3 zt?H3mqwqMvjWF>QJBc@ytDFBYPRqoFtaeL~nBjRbmSo7vC}M8E|4Sy$)a;N7bbN2= z7E2DL@we%2U$&o7Hog#^MWrH#j;?bxce5zDWglLvnGN3+6aba7eSb)J0`7N;^ab>m z06uV%{nC+Etx?n&nf#}A&2yO_%~=KgEyTg~)bgCp8oVcDKTfL81!F&Qtf1_ojnXEl zz18I7b@?FN^<_wizIx;*?Nw(=iJXh$*DIMmn<_`?A85x<>$tyS^yc+(hQ=eu*8RvC zFHgt702#+~HypdS$opG=2#m==01ruB7WYO0%~#mc!3Ls992*!9E=?>tTl6O`LJ972 z?AQghD80?`G%+?S|3-z!a}>?*ZGUB%`*M=hrL3n`j%}qoaants*XX@@`*|cb%Gk?{ z4bFwo0m3p!XI_3}SA4buQfrYQ!rXyHxjbU( zuY~*nr|Z(#+0afeCEMEkl~{yw+ZmL9r>S|PE>jtWi?>bx)20TRm0(UgcjS;d^G_eP zY@b&uEXQkjg8RWue4d%MSDB}KHtI{jC-duGVs|bD;&Wysj}Ncg0w@tRZ*+Hf-TT_< zE-sfykO>aSgg8-kIZOx%ffbII*UcW^0AlO|SrtE{ea-Amy01i0=zmK1q*(_paZst? z_#F76?-M3Me}+7_nn;Y1msE_sHoPU= zdl(+W(>Uh%;EDBHeQaih-3C~nypmX~I|+IJfQTtN5N?X%GxdSKyD9FVqL zya?z;(Iaa9)gV@^tHFS2@x|L}J2yHd#9dM@Agg!K0Yw;H{R(>Hn!HIy`769w1r5U;84f2IiF<5#(E9N4d0!MP9SjO zHFB1Mxe^PIxT=6A&6HK^W7^!VkS7~VylcJSUh<-4%w{O-Pe(@~w(so?W9cxTj%lw= zg0#B()!&_GK45;KBe?QGBEEf0UTyWO6jSNi*0yR@G%Xu5y*&Jh&kxtRMp1oZebZTx zewIQz@iYN<1PH9!kW#JVz;C9gg(Qd+)c&b)+m)2v9CI*}nf}2BYYL8Y;`=M`v*4{Zd_W90`lo zu7`-o>4czD%*E~dou{-oELLF_r4ihFkj%69gQ$@{VXc5l5HU$ zSL{fP;_M{+HXG>rC8vZxISi_~Z(nWJ%>DA0bcLl{OyJAL4i3EIrU?1GxW73L?5TuO zvc7e#*hg=2;kf~nQ1BgfsTnOtBRJ|Z-X}G8YBRy6vtsl-&R%%@gmG04Q!G5iT(YQu zRk}%IxyTmrH36cnc1_SQ5oU#Immn_X0fO+Kyyj@uo5_o_h7*_9?;lrxbB+tj zg?!*&guVVmZew4hIsyBUt@^jAjo-QJ2#LpO=(BA@D_6I4zW?#?{;)brfGdN&ul}*7 zJyLWtwCXZ3!+L7KsfEBhcA=2N-1@hyeU=bk&cS~7<4XkA6!X2pFn)0L5mvNU!L zG*8A2qR=8W@e5XgB>%pdYT;jm9z;cF3@@@HHtNv|Le4+XZwtG$CsnC$y)}H7>RMt{ z%Q4A!U#zsLn%(w{wsH*pBjqJTd(r!{q#W5Cs;IqI}0>_KIQW6bg)8ebPZXe z>TL{ko-$cWPsD!+MZRe+QvGVAHc0J=i1`ECf1W(6Bl^Nj7f^zT!}4W;(2|r%0g(6y z{6uw_l1Xxo!?4eds6T$!sn<5+^K!(};U!;C&>EdwrfA5Ow0MRqy97_Zbv-T&-luEr z2|@4%pgBMiisy}9Yw^+lwtEUi-$Dp=C&gFNP{s0(@Ipao<>ETN`OZmu_&4>;vQwag z*^5)0@48}P7P%ym2I<$(()i!wg6WKxz6r!+H5ZCbWl8HNhkjwkGDMNjo%%9@1EVmW zT5=}i6_Sm+aVqRO%RWzb9B`oxl(Us1Fc7a5MG(B_b3fM#G$diIbl{4t);ZM>5P@Ko zZ+6VgBi!I6=;XjU1uQ5rdqo0};$2T52g8+*%tx|Wg2mE|`3t=y)q3-B{Ht-j?yzDp ztD=DiY*_I({*pODWs!X&cz1UE!PM+hx8l|L^6YpbRb=;&jKasHYL%67x6f)W8zu$=r#sb!?r?v^= ziF}*A{atG03D5hG1TES8JWt7!t2W41azwgWaE&zos1?K^sY`2l$zQM0MJF^f@j&+D zn(5#wZjg&|t6~wu&=8vxyNfnw+wOiZd*~=(b~5(n-yU6j8pWX5eNRJPNdkf}zA{b3 z#2mAtATI@zV7m$hpITGKANN>{UZFAoJtJVjfp(=_CHA%X}Z96iK|-wrvBvxg>Q0X)>c{nO6X zbL9+kW49#@i`Q!_{89AM78alGzbD)N=G%n$QAZ1Fx{$`3-2(L^FO_nOFur?)H69-fZ7J$L(L7G9%I{0w)k z;zqyLGg~Url;<0q^mWM3UB@=7ZmdwuZ#tRlnaj#5->}mo+-=E z|7M-evjGr`L{v+w+>+$Pg1LsQ4}n?8!zQNsJVAF-j&&`)(=nn49QRkha2X2n5&zuF zsTS-gn9CAiOq-~}emR`bb~`WM`y<2T7&Ak3_Z|Dx6nPN7Ju3pUhMXR~!7D_FN1La) zTeB?98!h_fU)?y0scNAvIPrp4jxo$#Z9&m3Ejrp+9Jbpgj44mv&HOWqy&v0;)uEzYXqCGBapnGLB=Ws;0jvuyW|$$N=4T+T3jdz-`a%!* z928ToGv!&p;rj6Lb((rZOxJ|$}!V&$*A4cDa4tfu!W z_{Wsi6DRf{R{ z#uj)(3N&g>m-Kv+l?KKjwy~!l?;=1qMp=v`upBH=2HlM1m-~Quv4HS z5R)s&s2Qo<0-45JFpGM>}>`{Z_VN>Z+D!5EH(wBhFo>XG;@F7qdg90Z>{{5*{}mtUq^(&w4>? z_Eo04k-$Lky$E6kcqbway5*On!|2=@$GMYW)4)w{@FI+lM4&!8ot`$x3gFeiBv`KP zU5cl6oF8E?)xgRutusuc;!wIImC?Hs=6dPYnkf07$<2E;lGmQ-badBIY{py=V8)!< zP$Gl#%ynDJ>fd^kU71>(l=Qv|++HIpZ0rGjLk7j~7CP7;21LM>(3bTY>QtLThBvU0 zK|x*v4y#RtIBjdxG2{3kDr`ijCS(Y*sgazrS67S(mUGK7hfdKZk8h69&`TpNk} zV|t#J8AQGCSNZl`cWU7ty^>@&D;%xEYR;sP`VBJD?&K>r1tfbK#tXDF! zy|XT8XUiA7ugLBrORsX%K=d2KXc^EB=iykw4oZG%w?^#u@j}(0<$HKpP{I00bzG{j zW2h>9OT`FLwfAdEd#kIgUB4`YUmtC3_e!z0H}{?%ZxS0w-To9g$6D%LBJ(R36>x!P~iLtlgW`u+UFNmA=7aG}V zy>>+Fb-^Ai#W)GFj(-&FWt}E!{7QxRWprLlkG^Yh9L3*6Tr$bh zl^bpNUQWfzi!suY^y%6!2J@78Uxe`y_l1ECaHp?0kw=owI~w>?IsUHD@f%Mo9pJS| z1bM?~Ec>KOkCx6k9zB0l1_m|!#8k#s&Ln@Q-aEJ}(la%d=7m;$$G!d0;8W(9-wE%D zLn&1B7ic%?tgnQbM64Y*GX%}GwDcx$iLmqO)0vWOV|>og&2b{t&Z8^_sx%9$(zcbZ zFA1$gP-3Ofa3HS2A&#Bj*!owUN6Wm0B~sT^cm5aZy3Q5$#mS`#z@*Vc~|OIX}&HAVUdDf!s|N^|Tu_0GLAKLAGz zAdu`Nu{eNOXWc$&t_D0BhFJVr!}zdCyA_j_W|A%%J@jv<7TsjC&6xDB9Q>;r!QZ)~ zWLiqg;)#FBxbSrS+BnPe@~f@ZRZq2lFg`@T7M|#7jKjNnKaYxsSygu`_L=Cm;sf#e zN2V6R+^5SD4+4}}d3U~%rTEv|_(7)Xbz92V*C6vL|M#TMAm({ZBRB4*{S53wJ%0So z&yP}zXW3Q^p2~|{ojnKZXlZskwat;X&T>&#>Do_fE6^4}uH2o$RcTX@n zaY{KL>;R+S?p5w(BmVR`Yq|JO(&@WOKYW^V zSnClMI4`bP&zW^@Ip0pzF>Wjn@E;fMXt!gtYK^5OBw6ze!*_r3b{7G2hA63OFF}fQ zlZxMsSDgN9duFr?3hT?>Pqlm#Wt*Kb(!8~$0l(`{6j{NM;+=SN(ysMQ^hiwA`Pdzw z-5t@C_IGara3JvT$WFmKda&}hkY`-Xpij|#xR9XVpMawFLL5)`THEs6mDM9m8Frai zbCws4>eBTM1+6m^D@0sIxjPxx$*os=dF)`}!0uUlvK7}nQK>|1 zKP(MxB)!tAxsUu3Z?C60iTI}Glahpds@cgggEJmWnQJOaqldX|pf~#Qg$I!R*u|sQ zQB>11k|PKm&z5*8I)xI@z|g^Gs6gKND8_^_vL~AXih6dFPPu}lKiGf(?4QOQzJxMf zr6oie*eVb)O@nNeX)^1Zok8Ps2NNSCjvLp9!UX*klkSKp!zDv>q(_x5TORK}B+By1 z+X$Dv%rvlwI5hMm&nv{;TZ_@cho5Z>o$6gu@G)QZsx&M9+#3E<(@r8Su&k`U*RFGUb*O zyZ-WO2+<3SQVCuC9JOs;Nvb!VI-ALV^IOZCtJ6jrQNS-gu5A5C}O z^vgO03}GIUb{ku|-XyhAwmz_^e@@@Wp#9&}-3@ z(Jt`tJRErfqwuwY<^3??&|Ivy*(|Ws8xGazOL^dc=$lS^`;CB0UFeB#ypSZ?Y6pYT znxP@}%lGTXgUCUwZ3C_m4%`iMrO!`^?Cei_ElOU^S@6Gu21e zv!7inX=Zl394N%Ntb~&qQJtOy_vEwmk)wQn;lTDiw4rgQTl*pgyCODmpB-sS<+n7W zqv?&Z2RfVBTelN!L@nGhI-VV;3CI4qA#|`-{KG0&XDfo}d!9T56$K+M5F=Rw5mw)i zQD_ccOmBecX%e)1U=nXUh6E7MSmC6F*AOEGtB4WhwQISd&Wc`sIk6;@ zbYo_&ZqvXli&hSr2WUhN{1IucEuZqtJA!?o=P_5`O3rj@=*utI%ejH{Q{upm4{qdO zabEreY4oP?kd>9FYMctsL-fg0`Wc(=~d6OudTUU4?rWDI$z6AXTjO-Lg-M>q#m!TTAy#;{I;# z#qjMMp_R0zp`Mz+5$~m;qFRhFTl*Ry&wqG_UEom3<2~v2ZDBOn=pMSPH{o2rDMntK z?y8=7z?wC+QO|+CqHr<;CUQR#pzDH^D&FCUwP$z#-koO#SuU;yHx@ujB^IB*_Hu{t za#)>t;lXsS0&2$a{%4XsuV(8xgi;pS1=8>jf*~GHBeXf_J3`i?^C!OM33%Mk6kqWj z%kY#9N0)0LeZ?KSfq(~X*F&6gueZ|KqJ>AiN5Ij6qEHMP9S$o9rELGe?!1cuo`bu_ zNz$LevDMS_$A}Il{JuCkIG;po?a!B{FbBVjA$op%PabOXHoOP=bZfF(%LTCn78EzP zWs>XoyR`HbpNkgDKD~d~e;qy0V3S2@Bxhc8Xw&^UBs=6cRpc8`v^VT{*+}n>7?|wUM5nNL+8s{jiW6fxq(14 z?!N}0F#T28?*{B($5cJ?f|-UGd9tj=p0PRI->m%v9khN2{|w(=XzUw}wIN6} zu-|K?YCh|*McR-1 zZ146{f0^N7nq+Tam3~Ae$Wv-1Xv{m2Rzwl{S-&;jDp)?HRBw{=wdF09@kYxonq;cl zy(glDoA(SunQTDFcDxGp^xZkfVv9xq$fnMmENx zSfq^h0xAE~89i!U0^GAEyB7px9CqVptFB+8{e50snL=SRvQ4l(A!(gh_8I0LsvV~s z7NJLL*a1=RXS*cZZvl+8xUvjL8ZRFa-57|nND_(JcQxWYaP_Fv;jzGcMmw$(_;c}G zt*04FLvrNf(%y|^Lw?ee@C+C}*eigY#mpB)GW7QH8&n@g(>aGMD1M<~XboVWF!(qF zGzs5w9~_O0o^ETR?UBSFv2i^V&Tz0BACn3FRUOFtenldc^jUKF-(+*K0NccTBN5U7 zQo0qTi|4c0`@zF;l50ADqstGCr*Ku-=I|f=-Q$tt7c(5B9^J;#N0}?&7Rs$Rto7>L z%7+2687QaT1sH=XcaNX<=+_gdxhAC7&hW!_5bTbXj;;zo9|FW9-Z+O>c{QKpeV!Z^gWIu9j^ zIK!=Y`WOI47Mbt0)rUqB6X9Qiamgl(3S&?G_@(@VVf+y7>+NCZ0!JB3PFfm9H+~%X zgL}Dek}V@HR28&rdA7D-zYB}v0x6$-V?K~N?D*wjDg7m&|M}0>7^PuL4c+NzQZ->u z$1MA2N_cg(Z=wR$+C z<_@@Z!HSnefn+I~c=2Dxg|D`y0iIv_0NrQ33_0VsVs;6bt(UO6bTyDj(2%r`rc@24 zJ5hJlnN{QGUi;d1JgL=dJN7(xwjhnMp#3%9POBB0nyx4~Dy3(VHNS`+o8Tt%&0A4i z)<|AvKJHJ0gSQ^huSCOgCzkHYj|4}GG;`DuFbL=e)Oyg1H+pX&*XmytFCpBqXi^$1 z-p(&*XR9306v;cX_Y9fjX2Q6RUQldr-VbQ-~ZY!N%$hM`}6D5Z02rT-uq%J z-x(MYo^pIHb{3HB6G+;`>x>Kdp|5LV5oX({e61RmSh+Q}yqwsX)XzTq5J5!&gdWes zL`y^%yNFhF{trw*#Qm8bYXR2CDdtGGfh7EvB%b)uwmsxTh)7RUKz$EpMPKia*HnH+x{^i?kG|BUvE=HdBr3oCWYH7 zirc+be`b>OT=QjIWLQE>Tyl*Ih_nHhXO8g(=bc9Vo((C)a^ji->5uMs8koEEErwl2 zad1O8dZDG)DQKb1r9xT%jY2f-Vhf%gg{@oT%_J@}r|g2F$^oI3NGp|I_)RbvF zTK=w`3w3bXI(z^p)MB0KBD?NHUi$5V27|r*q%cXBZmA zH%7a=_Y$pB?GyujjgKa+5*OG! z*j|Ki%~?whOa4{YeUO=<$-{^T&)y6@{H6E{$4wEnrq)Rh>vQDWDQS1#UDd8oJJ)t8 zDW~uJIdu2>9pbjfPouKYOg@AyIltDQ36tbeF#VQKVv=A}lBzAPz34)2HsD}}WR1AB z=I2<$w>v`)ff!KlWoymociM$V;0A{Dt6dj_t>IcIcx1{ zWiHkpX{LqDH-3GGWe?+&4=n{cj=7S@ECDzC2Ml6nDdd| z!qaMgcwcLcO~Rm89Pf{YNY>esm#vW@MXI5rxXL-^Nj%1bcdNdPZ5c=@n8)z8&p9EV z2{Qa5r#~C4=9l)~yfAPfe}xS73kBlUyyHU{2#Yxf#b!t3kgyLrZek`1@DJ;sI%8F& zz{`N~{8m=8IGr#cTX}54RnW_Lk^HPfloAwr<_}x!|7I^>7<&%9z3E3eEm8EF~GV95)KY^d;9J@ixs)R zYz+hMzo0cOfVm~aYgN4SXu-u2^4g;fnoX^f#ZOGNPACHZ7;UTFZT{u{bW#4^&Dz4O&_U-;dbK0&S ziLP4RlvAN*lUJ)pSPuF==;NlboXb->mPR{oj*Okj-gr$i&FHCQV^GvI{n2eh87~IHadj5b-GD^3Tp28ua@HfM4LXGli3GRK~I&gGrxH80-F<0LRbVvQEfKq zRZQN)ehxBySTcvPGL0l{;FvN#0Rt>|4XRjR|9W`;)nfAIKg0_VOuO$2Zl-@EoZU6C z@6^*T)Fg~Pu4UsPg@+lbFEmPUNTyyq={AT&rNqxcbRZ`Sks7^>#vm#Bj0Dw3f)Wbe zaYt@Wap7yVtYrv#1svka49Ixv-L@ma#;k**Bil1Af*!IiMT42`T=Ca^E^lgE+dsyZ zR?sZpkLV%7s+2#yZD+T&t$pcwVv8W6vgP|59ghlZ{O4hS<-&Ah9Z{WTm1`vkXnJsv zP=D@!hX<)~ZBd^7df^M8Ll~S;Q~O8Z`@3mLfXbo|Soq$RcwFgQzh5?-U^c}mOl zr$v4BF0#4VJ(V2j3)+74Sll^s@q#vSG21HhO=t3xc2m1FxzcyU9xvt-c;~s7_1*or zZaLmW9iOx)j+e159GMnzBY@*Ds00j@_Ebdf+e`ti&3uqbfJVQ#Z~n2ZR0Z@u#zT{0 zIye~B5V+kaJA=qY+-ZCK9ACo^cjiqF2fA4$4q$H)l(53}^YS;eI@v9h*1Y@dm}x*U z7{K>IG1z+DO|~UO0|kw>Az~?bX-mrG}VEsJ_7cK$M6 zN{_8A*kH=}j?+s~$lFdKvZTKd$f1IFH%Qz*x$};=^ZMV}s%-aNf5@#vdU(pc`PO>Y zlkwj#v9AvK!RivZHOirVESuu*`9td~9BJ8Fv)R)%TaAUtpVwO-0mu!uQg%?5IOkd6h_X~qcl zBn$l35vetUu3E^sLM?kvOK*rrV#fdVVad3J>9w&9f?^lby|AZq-XoF!r#_9HrtrRtdv#ULw1V&zsPi* zm>r%eZy6U*lEqcd^mtg-ux@4_DQ|d^>eUFKYCWtfr`~;q!30H(hhD6HV>E$N+glLb z)Ex)+v)2eDr9pD41 z{K#}a9b(|H9<$ET54dBPGi6yvrSwoGUJrofq zOT6_4#0-Y`hY{ly2Dc>MKox7 zz*}i+uvuxI*PIu4VRQ;`vbcmCD!sPHvf0!g ziq^p$=F)ep|A_rIZCb4+F0AF4@h#Nnf9`~kL52&)0(F=&vAV_ZZyHz2`q6rclpl1f ziBT_KrTCr;EEkE*5~AO;%X0VX7WcuL5j1PUDjaJ!IG$2aSQ*If@Mj=XJ~F|4N1N~P zh&6%?WA#y&hEa?z5w)wB&}O4;TAX-{n8L%6g9AyX8v74wROJO9?L7G~r&@^;73HEN zXvolCZ)JxWahDXv&qU{)eGU9? zoVxUsIO3$3reUv@PXAv3Mgh70VsAamhlO%%p7Sq=r{^jZ=HT~3fpl5&k0h+Rhwmm} zmPyCd^!8~B0N!Oh2XE5vrUVf+kG2itv8fLBc)cG0kjKRNvTv9H0QTV{{eRIGpSA`j z_4D)1I{b7*)*CqwL8|xS^64G@aq7nMR*8K`wblE9WSAzj)<)|3Rw8VOFVI<@oZlDv z9&Hb^xA?w;_Odoe3pI}dRj8kGx6_br-Ufw%nL;NQtM;-(V_1lWWH^tI?z(xjQi3pT zs;5z=9S@i#k1PPWzF%*YG;67T76)2gc59s?l>9Y;6dS5bIebIkw6MoSouX{>R0|4x`Uyc9( literal 91558 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
    H8G;v5F8e=!oXfivUL+uJhXhn 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

    N`ol4lC9*yFm~+T^XpAbNovdfRPNkPaQp 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

    nYX?{B=kOm zk{7+02h=q73tG6N`*ED>hF}O?hr(HTJv8nwndCb}Qlhz#u@@P`I~gukn=uwN3Ik>b zd!nZOTgGeCr2}yWnWnZ&C*P(BgpQ_5946PCoI$D==*Vm&fUvl9w7P^!UgPRg{$=a? zfYx4ovJMrE_bP!zhX|D7QMW%?o2-akpt$@Kd?Td6HDLW0@dGj;wau8FA4h$Pd%xiD z>Be=NGC0iGWbMy_I=9|TFB&rmJoX!m58acTrFGz3;qcEz_CjI6vrd2r!~C&J_M-sR zPTREQbTr;utL}A)WbzzJXmNn96c79GqWo$B2tW3_?DlQzCEZy7*ysK4Jt5ewuhSdE z_M!eSD93rU35_rVPf(_XC0y{W;1Y}7;1x%-X-e;W*|l&n+MBy}Z6DQ$rKXEwXu<@9Y_1gtAfj= zv`3i&Odq-~GJKIBF+lGwHJt5Z?quw_#`K*nWKx(o1CGorV>3VKkcYIY3m(}{baO-~ zk`*cVf87+jbriQAtglqIg_;{AeWUQxAF|J$nK>nkC~AJzdA+>V`Fz3H^2ar98ufkR zMTTQeUr3KvS35i_h88fszLYiXNbbnhBR}6AlVLC7xP8$}!b(jpF)4ZV!{0f;`hiQMeq`*xsx6JP z>IdfTRHWv;O@*cW#h4AsQKycaJ>dpsV`v=;Is6JyO*^p`M{*ad2lK`j6?Lf1A1fHb zep(=~&NIW^{KGRrMEtO0f*)4OCxe`NnmI6=&Dp2V$Hr?X7k8P^JNRpW41HxQn7Hv6 z&}WcJf{=)Be~Qv7Rtuot=X$&IW)9bMc$Gg)Bs={y%t| zT*J|}^RHTZxy|unrBqL>4{Psrf=hVMKTzNM&OtbFXjr*8XjaPT0QF0jmCI`ulra}4 z5}!wSU#K@aBIAv^fiQ7E)G-@Mf2zx=AfFfqN%%<#r;o?zn4p|KGJ2ET0|dhCIj5KL z3bE4QQJd%5o@)936u?~&rRfo3UM)j480{C*T#2tOEgS{&^IRuCwOU{F$E^MSY?EuQ ztQ2?6OE@Rf_L9y$s-!R``?LQD-kiQJYk`ekFA?iE#yED=2q)h?Ji(>(bppKTwp*4- z)|euBI}Qjyk##)>HxMcPF|Ix0Q07m($V(85L7t*N1?(eNfUrC^6wgV1w|$Z)A!u@G zy25eahwEBx-P7-mk&OgXa*vA<0lE`wD`C6B-X$uq50(TtuGE+*KTw}Fx(L`RAn~T5 z>4w+CFVZ7E2qZKAA6V~lv#WCs(++2>F<2dZg)r9m8m-v@pfW*ttd%R{cLl9j8fT^tbr*zZu!Qy` z(*6)}R{`@FtQd)@QRZJO`g7QkIG^SF#}+%P#Hzy0a+fYZ=$w;Q*lwAaM6^(Ll8 zs)Udz)b}{TprLI#HmD?D)Q&@CGYC-*W1YXMbLBpDNuG z9x(GZFqNHn?b`E^qM*Yp{vBll;a`Q^W$5DW9hIi*CDdi|sovmxq?|UQ8K(XIG)krB zj^~XNUbSJT2Q5piwP$zk&O3CuI$UIzjEBJ0+NU;L7Rk55?iX5D?-Te${_RKQ*`vFq zFK32}wn^70&#>p++hxR_r}H$J%ko?hEti1%^ZQ+**Xa)xijY4}ss8-kQx@g3J51eu zovK554QS$bA8%TlTp!d7-E#puA~9o(v6}I|FIV~{R%N!$P3|N*Ct>C&%Rp4b_XF+a zh)iGV%i2^*f&X^jkL|gz7dLKLm{C7WZlBv+cOD9H(R4W>EmQtlH%vo8F2OUM)q2Y~ zSi$e4a!!TJ+7{;FnKjJ3DEj@Z{Cg9lN7o7s_6@}2y+HSFzxUbN`t@(UR3Tec>j%;;OU()1QWf`_;rj_`QyN Date: Sat, 10 Feb 2024 23:22:10 +0000 Subject: [PATCH 05/29] Automatic Changelog Update (#812) --- Resources/Changelog/DeltaVChangelog.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Resources/Changelog/DeltaVChangelog.yml b/Resources/Changelog/DeltaVChangelog.yml index a32a7238d55..60643480570 100644 --- a/Resources/Changelog/DeltaVChangelog.yml +++ b/Resources/Changelog/DeltaVChangelog.yml @@ -1566,3 +1566,9 @@ Entries: message: Fixed .38 Special Mindbreaker not breaking minds. id: 235 time: '2024-02-10T23:17:28.0000000+00:00' +- author: FluffiestFloof + changes: + - type: Fix + message: Fixed glimmer mite being extremely loud for some. + id: 236 + time: '2024-02-10T23:21:56.0000000+00:00' From cc8e8d87ea6b95f0fccd97ae1c36d9d498bb4798 Mon Sep 17 00:00:00 2001 From: leo <136020119+leonardo-dabepis@users.noreply.github.com> Date: Sun, 11 Feb 2024 12:33:10 +1000 Subject: [PATCH 06/29] Center glimmer mite sprite (#813) centered silly insect sprite --- .../Mobs/Ghosts/glimmermite.rsi/mite.png | Bin 1405 -> 1412 bytes .../Mobs/Ghosts/glimmermite.rsi/mite_dead.png | Bin 721 -> 724 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/Resources/Textures/DeltaV/Mobs/Ghosts/glimmermite.rsi/mite.png b/Resources/Textures/DeltaV/Mobs/Ghosts/glimmermite.rsi/mite.png index 222d81f9165e5515311bed836159333db9fe6259..b67a10af6a3a214fda61d911f52ecd65cbfb8699 100644 GIT binary patch delta 857 zcmV-f1E&1_3WN)gB!6*fLqkw$V`BgSD3NuMze~eF6vw}96-6r@6cO!^p%sS~ih?*w z1-n#-wt`icr)6j#B;q2M68_-pV#&{c3%5ClaKadh_AA|<|S3N6yUaCslT z_r8z2cYr^wGsEsl0EX%COe!g@=GUaYclZ#-C?*h?{JeOGj{Gz8+ zY-6R3S&19OQ^XNNudwEM#7%;#xss(kPAd!>8KjVe1O*jrLWhGmWs_#s*_UYemQf}T zqrZhJI5~-`gByq-2czh)@G)??!hF``|7%%QJ`-hsMlQg_tbUk zXF%WuxHensiyQ-?9pLh&r6~u%)h;mhY{^`1NC8@YO#?nIfT27vd=Ct) zd$VfpwNLh0L04^f{04^f|c%?sf z000BIle7U)0a%j-0xt(R$OMvMoSTze0#|>a`dkxAKU??`=V&Sstqn4*iEH{Q+HlBTHs^6yod`Su`FU+pa8G6{bm zM&J6sz4b@rq{ub7C~tqQ$m~`_J{?{gng0R$!3cr^z-_6z5X2amDu5GH zvb2AT2Fx&SeKl{~HpJ8)rZzCML4+xg)SxIFP(wt_xbzCTA( zGUXcJYY-kXY^NYRCOoxLuoZ6#w;NeKDSRLta^!%*mr75R`AKo6%x{XFSaclxs;8Fu z!HFMiWF1quPdI4iibmx;>L!7dH8(4@OJ+ANQ6`C?k)X&jISTYkwIs8@ec^B440-Vw z^0!&V5l4oscz;8p7Nu)SYFhM^d^uKC?!WVN(}M%$?tuu@J$l}257ci%Y0L9I4?VAR z1T_zEZdLtx$!Yjq^sTBE+=te6IK8N9i5)oGfX;hccl2+mMy5ZVhL;m)jziluG%l92 zs;qN-2eCDIqAS?lgI?L+y7UE(plD3nLh7gh000SaNRy-i5&^Z7w*gQARFen-FO&WQ z3zPl>3zPl>3kNu;1d?G4pOZcUSASpizY+pKomZ$;N#yv^LpI|-w_5g5{rq@r(|)hN z>)4Pvi;mHGoxbYj>6>|z*fw-pbLKeo2xRF?n2M}RRv>h-x~;%c>1ov6yq^%=ST z{gN#FSeB_Hld{v^k^0h{%{&({MHe}5yqm8jO;P>j->Wk7?Lnr#+F8bB5`RF9zV&~5 z>yOAuk!x~M-u_yV*{z0rI=nVA{{!@c5d;N*+fsEQmfNdIYoTcu`N`|2HrrkXi17&ZMgVrzxiW8ZVkORpQNfBRd1Y@5>aW$B059c7F{sRk>{sRk>{sRj)Qm#YLamfvq1y}0U1W& a7xBL<%9|CXkIjAn0000r)6j#B;q2M68_-pV#&{c3%5ClaKadh_AA|<|S3N6yUaCslT z_r8z2cYr^wGsEsl0EX%COe!g@=GUaYclZ#-C?*h?{JeOGj{Gz8+ zY-6R3S&19OQ^XNNudwEM#7%;#xss(kPAd!>8KjVe1O*jrLWhGmWs_#s*_UYemQf}T zqrZhJI5~-`gByq-2czh)@G)??!hF``|7%%QJ`-hsMlQg_tbUk zXF%WuxHensiyQ-?9pLh&r6~u%)h;mhY{^`1NC8@YO#?nIfT27vd=Ct) zd$Vfp`)5dZ)H07*qoM6N<$g8Grl@Bjb+ delta 427 zcmV;c0aX6f1zCTA( zGUXcJYY-kXY^NYRCOoxLuoZ6#w;NeKDSRLta^!%*mr75R`AKo6%x{XFSaclxs;8Fu z!HFMiWF1quPdI4iibmx;>L!7dH8(4@OJ+ANQ6`C?k)X&jISTYkwIs8@ec^B440-Vw z^0!&V5l4oscz;8p7Nu)SYFhM^d^uKC?!WVN(}M%$?tuu@J$l}257ci%Y0L9I4?VAR z1T_zEZdLtx$!Yjq^sTBE+=te6IK8N9i5)oGfX;hccl2+mMy5ZVhL;m)jziluG%l92 zs;qN-2eCDIqAS?lgI?L+y7UE(plD3nLh7gh000SaNRy-iDFZMX0+Yc3>==mVY5;*} VRoSYXm=6E|002ovPDHLkV1jYA%VYom From 8d228a9abf6c388beaba4e5de5b582c87333a802 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 11 Feb 2024 13:36:55 +0100 Subject: [PATCH 07/29] Update Credits (#814) Co-authored-by: DeltaV-Bot --- 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 7cf9563f689..93c2315a084 100644 --- a/Resources/Credits/GitHub.txt +++ b/Resources/Credits/GitHub.txt @@ -1 +1 @@ -08A, 0x6273, 2013HORSEMEATSCANDAL, 20kdc, 21Melkuu, 4dplanner, 612git, 778b, Ablankmann, Acruid, actioninja, adamsong, Admiral-Obvious-001, Adrian16199, Aerocrux, Aexxie, africalimedrop, Agoichi, Ahion, AitorLogedo, AJCM-git, AjexRose, Alekshhh, AlexMorgan3817, AlmondFlour, AlphaQwerty, Altoids1, amylizzle, ancientpower, Arendian, arimah, artak10t, Arteben, AruMoon, as334, AsikKEsel, asperger-sind, avghdev, AzzyIsNotHere, BananaFlambe, BasedUser, BGare, BingoJohnson-zz, BismarckShuffle, Bixkitts, Blackern5000, Blazeror, Boaz1111, BobdaBiscuit, brainfood1183, Brandon-Huu, Bribrooo, Bright0, brndd, BubblegumBlue, BYONDFuckery, c4llv07e, CakeQ, CaptainSqrBeard, Carbonhell, Carolyn3114, casperr04, CatTheSystem, Centronias, chairbender, Charlese2, Cheackraze, cheesePizza2, Chief-Engineer, chromiumboy, Chronophylos, clement-or, Clyybber, ColdAutumnRain, Colin-Tel, collinlunn, ComicIronic, coolmankid12345, corentt, crazybrain23, creadth, CrigCrag, Crotalus, CrudeWax, CrzyPotato, Cyberboss, d34d10cc, Daemon, daerSeebaer, dahnte, dakamakat, DamianX, DangerRevolution, daniel-cr, Darkenson, DawBla, dch-GH, Deahaka, DEATHB4DEFEAT, DeathCamel58, deathride58, DebugOk, Decappi, Delete69, deltanedas, DeltaV-Bot, DerbyX, DmitriyMX, DoctorBeard, DogZeroX, dontbetank, Doru991, DoubleRiceEddiedd, DrMelon, DrSmugleaf, drteaspoon420, DTanxxx, DubiousDoggo, Duddino, Dutch-VanDerLinde, Easypoller, eclips_e, EEASAS, Efruit, ElectroSR, elthundercloud, Emisse, EmoGarbage404, Endecc, enumerate0, eoineoineoin, ERORR404V1, Errant-4, estacaoespacialpirata, evilexecutive, exp111, Fahasor, FairlySadPanda, ficcialfaint, FillerVK, Fishfish458, Flareguy, FluffiestFloof, FluidRock, FoLoKe, fooberticus, Fortune117, freeman2651, Fromoriss, GalacticChimp, gbasood, Geekyhobo, Genkail, Git-Nivrak, github-actions[bot], gituhabu, GoodWheatley, Gotimanga, graevy, GreyMario, Guess-My-Name, gusxyz, h3half, Hanzdegloker, Hardly3D, harikattar, Hebiman, Henry12116, HerCoyote23, HoofedEar, hord-brayden, hubismal, Hugal31, Hyenh, iacore, IamVelcroboy, icekot8, igorsaux, ike709, Illiux, Ilya246, IlyaElDunaev, Injazz, Insineer, IntegerTempest, Interrobang01, IProduceWidgets, ItsMeThom, j-giebel, Jackal298, Jackrost, jamessimo, janekvap, JerryImMouse, Jessetriesagain, jessicamaybe, Jezithyr, jicksaw, JiimBob, JoeHammad1844, joelhed, JohnGinnane, johnku1, joshepvodka, jproads, Jrpl, juliangiebel, JustCone14, JustinTether, JustinTrotter, KaiShibaa, kalane15, kalanosh, KEEYNy, Keikiru, Kelrak, kerisargit, keronshb, KIBORG04, KingFroozy, kira-er, Kit0vras, KittenColony, Kmc2000, komunre, koteq, Krunklehorn, kxvvv, Lamrr, LankLTE, lapatison, Leander-0, leonardo-dabepis, LetterN, Level10Cybermancer, lever1209, LightVillet, liltenhead, LittleBuilderJane, Lomcastar, LordCarve, LordEclipse, LudwigVonChesterfield, Lukasz825700516, luringens, lvvova1, lzimann, lzk228, M3739, MACMAN2003, Macoron, MagnusCrowe, ManelNavola, Master2112, matthst, Matz05, MehimoNemo, MeltedPixel, MemeProof, Menshin, Mervill, metalgearsloth, mhamsterr, MilenVolf, Minty642, Mirino97, mirrorcult, MishaUnity, MisterMecky, Mith-randalf, ModeratelyAware, Moneyl, Moomoobeef, moony, Morb0, Mr0maks, Myakot, Myctai, N3X15, Nails-n-Tape, Nairodian, Naive817, namespace-Memory, NickPowers43, nikthechampiongr, Nimfar11, Nirnael, nmajask, nok-ko, notafet, notquitehadouken, noudoit, noverd, nuke-haus, NULL882, Nylux, OCOtheOmega, OctoRocket, OldDanceJacket, onoira, Owai-Seek, pali6, Pangogie, patrikturi, PaulRitter, Peptide90, peptron1, Phantom-Lily, PHCodes, Phill101, PixelTheKermit, PJB3005, pofitlo, pointer-to-null, PoorMansDreams, potato1234x, ProfanedBane, ProPandaBear, PrPleGoo, ps3moira, Psychpsyo, psykzz, PuroSlavKing, PursuitInAshes, Putnam3145, quatre, QuietlyWhisper, qwerltaz, Radosvik, Radrark, Rainbeon, Rainfey, Rane, Ranger6012, ravage123321, rbertoche, Redict, RedlineTriad, RednoWCirabrab, RemberBM, RemieRichards, RemTim, rene-descartes2021, renodubois, RiceMar1244, RieBi, RIKELOLDABOSS, Rinkashikachi, Rockdtben, rolfero, rosieposieeee, Saakra, SadAways, Samsterious, SamV522, SaphireLattice, ScalyChimp, scrato, Scribbles0, ScumbagDog, Serkket, SethLafuente, ShadowCommander, Shadowtheprotogen546, SignalWalker, Simyon264, SirDragooon, Sirionaut, siyengar04, Skarletto, Skrauz, Skyedra, SlamBamActionman, Slava0135, Snowni, snowsignal, SonicHDC, SoulSloth, SpaceManiac, SpeltIncorrectyl, spoogemonster, ssdaniel24, Stealthbomber16, StrawberryMoses, Subversionary, SweptWasTaken, Szunti, TadJohnson00, TaralGit, Tayrtahn, tday93, TekuNut, TemporalOroboros, tentekal, tgrkzus, thatrandomcanadianguy, TheArturZh, theashtronaut, thedraccx, themias, Theomund, theOperand, TheShuEd, ThunderBear2006, timothyteakettle, TimrodDX, Titian3, TK-A369, tkdrg, tmtmtl30, tom-leys, tomasalves8, Tomeno, tosatur, Tryded, TsjipTsjip, Tunguso4ka, TurboTrackerss14, Tyler-IN, Tyzemol, UbaserB, UKNOWH, UnicornOnLSD, Uriende, UristMcDorf, Vaaankas, Varen, VasilisThePikachu, veliebm, Veritius, Verslebas, VigersRay, Visne, Volotomite, volundr-, Vordenburg, vulppine, Warentan, waylon531, weaversam8, Willhelm53, wixoaGit, WlarusFromDaSpace, wrexbe, WTCWR68, xRiriq, yathxyz, Ygg01, YotaXP, youarereadingthis, YuriyKiss, zach-hill, Zandario, ZelteHonor, zerorulez, zionnBE, zlodo, ZNixian, ZoldorfTheWizard, Zumorica, Zymem +08A, 0x6273, 2013HORSEMEATSCANDAL, 20kdc, 21Melkuu, 4dplanner, 612git, 778b, Ablankmann, Acruid, actioninja, adamsong, Admiral-Obvious-001, Adrian16199, Aerocrux, Aexxie, africalimedrop, Agoichi, Ahion, AitorLogedo, AJCM-git, AjexRose, Alekshhh, AlexMorgan3817, AlmondFlour, AlphaQwerty, Altoids1, amylizzle, ancientpower, Arendian, arimah, artak10t, Arteben, AruMoon, as334, AsikKEsel, asperger-sind, avghdev, AzzyIsNotHere, BananaFlambe, BasedUser, BGare, BingoJohnson-zz, BismarckShuffle, Bixkitts, Blackern5000, Blazeror, Boaz1111, BobdaBiscuit, brainfood1183, Brandon-Huu, Bribrooo, Bright0, brndd, BubblegumBlue, BYONDFuckery, c4llv07e, CakeQ, CaptainSqrBeard, Carbonhell, Carolyn3114, casperr04, CatTheSystem, Centronias, chairbender, Charlese2, Cheackraze, cheesePizza2, Chief-Engineer, chromiumboy, Chronophylos, clement-or, Clyybber, ColdAutumnRain, Colin-Tel, collinlunn, ComicIronic, coolmankid12345, corentt, crazybrain23, creadth, CrigCrag, Crotalus, CrudeWax, CrzyPotato, Cyberboss, d34d10cc, Daemon, daerSeebaer, dahnte, dakamakat, DamianX, DangerRevolution, daniel-cr, Darkenson, DawBla, dch-GH, Deahaka, DEATHB4DEFEAT, DeathCamel58, deathride58, DebugOk, Decappi, Delete69, deltanedas, DeltaV-Bot, DerbyX, DmitriyMX, DoctorBeard, DogZeroX, dontbetank, Doru991, DoubleRiceEddiedd, 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, exp111, Fahasor, FairlySadPanda, ficcialfaint, FillerVK, Fishfish458, Flareguy, FluffiestFloof, FluidRock, FoLoKe, fooberticus, Fortune117, freeman2651, Fromoriss, FungiFellow, GalacticChimp, gbasood, Geekyhobo, Genkail, Git-Nivrak, github-actions[bot], gituhabu, GoodWheatley, Gotimanga, graevy, GreyMario, Guess-My-Name, gusxyz, h3half, Hanzdegloker, Hardly3D, harikattar, Hebiman, Henry12116, HerCoyote23, HoofedEar, hord-brayden, hubismal, Hugal31, Hyenh, iacore, IamVelcroboy, icekot8, igorsaux, ike709, Illiux, Ilya246, IlyaElDunaev, Injazz, Insineer, IntegerTempest, Interrobang01, IProduceWidgets, ItsMeThom, j-giebel, Jackal298, Jackrost, jamessimo, janekvap, JerryImMouse, Jessetriesagain, jessicamaybe, Jezithyr, jicksaw, JiimBob, JoeHammad1844, joelhed, JohnGinnane, johnku1, joshepvodka, jproads, Jrpl, juliangiebel, JustCone14, JustinTether, JustinTrotter, KaiShibaa, kalane15, kalanosh, KEEYNy, Keikiru, Kelrak, kerisargit, keronshb, KIBORG04, KingFroozy, kira-er, Kit0vras, KittenColony, Kmc2000, komunre, koteq, Krunklehorn, kxvvv, Lamrr, LankLTE, lapatison, Leander-0, leonardo-dabepis, LetterN, Level10Cybermancer, lever1209, LightVillet, liltenhead, LittleBuilderJane, Lomcastar, LordCarve, LordEclipse, LudwigVonChesterfield, Lukasz825700516, lunarcomets, luringens, lvvova1, lzimann, lzk228, M3739, MACMAN2003, Macoron, MagnusCrowe, ManelNavola, Master2112, matthst, Matz05, MehimoNemo, MeltedPixel, MemeProof, Menshin, Mervill, metalgearsloth, mhamsterr, MilenVolf, Minty642, Mirino97, mirrorcult, MishaUnity, MisterMecky, Mith-randalf, ModeratelyAware, Moneyl, Moomoobeef, moony, Morb0, Mr0maks, Myakot, Myctai, N3X15, Nails-n-Tape, Nairodian, Naive817, namespace-Memory, NickPowers43, nikthechampiongr, Nimfar11, Nirnael, nmajask, nok-ko, Nopey, notafet, notquitehadouken, noudoit, noverd, nuke-haus, NULL882, Nylux, OCOtheOmega, OctoRocket, OldDanceJacket, onoira, Owai-Seek, pali6, Pangogie, patrikturi, PaulRitter, Peptide90, peptron1, Phantom-Lily, PHCodes, Phill101, PixelTheKermit, PJB3005, pofitlo, pointer-to-null, PoorMansDreams, potato1234x, ProfanedBane, ProPandaBear, PrPleGoo, ps3moira, Psychpsyo, psykzz, PuroSlavKing, PursuitInAshes, Putnam3145, quatre, QuietlyWhisper, qwerltaz, Radosvik, Radrark, Rainbeon, Rainfey, Rane, Ranger6012, ravage123321, rbertoche, Redict, RedlineTriad, RednoWCirabrab, RemberBM, RemieRichards, RemTim, rene-descartes2021, renodubois, RiceMar1244, RieBi, RIKELOLDABOSS, Rinkashikachi, Rockdtben, rolfero, rosieposieeee, Saakra, SadAways, Samsterious, SamV522, SaphireLattice, ScalyChimp, scrato, Scribbles0, ScumbagDog, Serkket, SethLafuente, ShadowCommander, Shadowtheprotogen546, SignalWalker, Simyon264, SirDragooon, Sirionaut, siyengar04, Skarletto, Skrauz, Skyedra, SlamBamActionman, Slava0135, Snowni, snowsignal, SonicHDC, SoulSloth, SpaceManiac, SpeltIncorrectyl, spoogemonster, ssdaniel24, Stealthbomber16, StrawberryMoses, Subversionary, SweptWasTaken, Szunti, TadJohnson00, TaralGit, Tayrtahn, tday93, TekuNut, TemporalOroboros, tentekal, tgrkzus, thatrandomcanadianguy, TheArturZh, theashtronaut, thedraccx, themias, Theomund, theOperand, TheShuEd, ThunderBear2006, timothyteakettle, TimrodDX, Titian3, tkdrg, tmtmtl30, tom-leys, tomasalves8, Tomeno, tosatur, Tryded, TsjipTsjip, Tunguso4ka, TurboTrackerss14, Tyler-IN, Tyzemol, UbaserB, UKNOWH, UnicornOnLSD, Uriende, UristMcDorf, Vaaankas, Varen, VasilisThePikachu, veliebm, Veritius, Verslebas, VigersRay, Visne, VMSolidus, volundr-, Vordenburg, vulppine, weaversam8, Willhelm53, wixoaGit, WlarusFromDaSpace, wrexbe, WTCWR68, xRiriq, yathxyz, Ygg01, YotaXP, youarereadingthis, YuriyKiss, zach-hill, Zandario, Zap527, ZelteHonor, zerorulez, zionnBE, zlodo, ZNixian, ZoldorfTheWizard, Zumorica, Zymem From 3107457143a2d3608c019804e3c497554b46dec1 Mon Sep 17 00:00:00 2001 From: Debug <49997488+DebugOk@users.noreply.github.com> Date: Sun, 11 Feb 2024 13:39:56 +0100 Subject: [PATCH 08/29] Update server config (#818) Update deltav.toml Signed-off-by: Debug <49997488+DebugOk@users.noreply.github.com> --- Resources/ConfigPresets/DeltaV/deltav.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Resources/ConfigPresets/DeltaV/deltav.toml b/Resources/ConfigPresets/DeltaV/deltav.toml index b6ca8b8b3ab..49a5599cb88 100644 --- a/Resources/ConfigPresets/DeltaV/deltav.toml +++ b/Resources/ConfigPresets/DeltaV/deltav.toml @@ -43,5 +43,5 @@ rich_main_icon_id = "deltav" [ic] flavor_text = true -[worldgen] -enabled = true +#[worldgen] +#enabled = true From 09b79b3c22af2a12f0355b7b28a6c499f95d8780 Mon Sep 17 00:00:00 2001 From: Fluffiest Floofers Date: Sun, 11 Feb 2024 20:40:33 +0100 Subject: [PATCH 09/29] Refill the DIY Holy Water kit (#819) replace the bottle with wine cans --- .../Catalog/Fills/Boxes/general.yml | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/Resources/Prototypes/Nyanotrasen/Catalog/Fills/Boxes/general.yml b/Resources/Prototypes/Nyanotrasen/Catalog/Fills/Boxes/general.yml index 6f227252cb6..ed839a011dc 100644 --- a/Resources/Prototypes/Nyanotrasen/Catalog/Fills/Boxes/general.yml +++ b/Resources/Prototypes/Nyanotrasen/Catalog/Fills/Boxes/general.yml @@ -60,16 +60,16 @@ id: BoxHolyWater description: This box is filled with everything you need to make homemade holy water. Water not included. components: -# - type: StorageFill -# contents: -# - id: MercuryChemistryBottle -# amount: 3 -# - id: DrinkWineBottleFull -# amount: 1 -# - id: SprayBottle -# amount: 1 - - type: Sprite - layers: - - state: box_science - - sprite: Nyanotrasen/Objects/Storage/boxes.rsi - state: holywater + - type: StorageFill + contents: + - id: DrinkWineCan + amount: 2 + - id: SprayBottle + amount: 1 + - id: MercuryChemistryBottle + amount: 2 + - type: Sprite + layers: + - state: box_science + - sprite: Nyanotrasen/Objects/Storage/boxes.rsi + state: holywater From 40c61f84e48d8e6515b8e4178bbcf26e09007768 Mon Sep 17 00:00:00 2001 From: Adrian16199 <144424013+Adrian16199@users.noreply.github.com> Date: Mon, 12 Feb 2024 21:51:35 +0100 Subject: [PATCH 10/29] Felinid bubble speech. (#808) * Felinid bubble speech. THATS RIGHT. I did something. Felinid wise, again. Im a felinid enjoyer, yes. Dont judge me. =w= * Simplification * Update felinid0.png * The finalle --- .../Prototypes/DeltaV/typing_indicator.yml | 4 ++++ .../Entities/Mobs/Species/felinid.yml | 2 ++ .../Textures/Effects/speech.rsi/felinid0.png | Bin 0 -> 899 bytes .../Textures/Effects/speech.rsi/felinid1.png | Bin 0 -> 721 bytes .../Textures/Effects/speech.rsi/felinid2.png | Bin 0 -> 712 bytes .../Textures/Effects/speech.rsi/meta.json | 17 +++++++++++++++++ 6 files changed, 23 insertions(+) create mode 100644 Resources/Prototypes/DeltaV/typing_indicator.yml create mode 100644 Resources/Textures/Effects/speech.rsi/felinid0.png create mode 100644 Resources/Textures/Effects/speech.rsi/felinid1.png create mode 100644 Resources/Textures/Effects/speech.rsi/felinid2.png diff --git a/Resources/Prototypes/DeltaV/typing_indicator.yml b/Resources/Prototypes/DeltaV/typing_indicator.yml new file mode 100644 index 00000000000..c5372b3cc35 --- /dev/null +++ b/Resources/Prototypes/DeltaV/typing_indicator.yml @@ -0,0 +1,4 @@ +- type: typingIndicator + id: felinid + typingState: felinid0 + offset: 0, 0.2 # 0625 diff --git a/Resources/Prototypes/Nyanotrasen/Entities/Mobs/Species/felinid.yml b/Resources/Prototypes/Nyanotrasen/Entities/Mobs/Species/felinid.yml index e2e15dcfa95..7f1b30a1512 100644 --- a/Resources/Prototypes/Nyanotrasen/Entities/Mobs/Species/felinid.yml +++ b/Resources/Prototypes/Nyanotrasen/Entities/Mobs/Species/felinid.yml @@ -47,6 +47,8 @@ Blunt: 1 - type: Stamina critThreshold: 85 + - type: TypingIndicator + proto: felinid - type: PseudoItem shape: - 0,0,5,1 diff --git a/Resources/Textures/Effects/speech.rsi/felinid0.png b/Resources/Textures/Effects/speech.rsi/felinid0.png new file mode 100644 index 0000000000000000000000000000000000000000..586d1e6a343b2f9ed7f295291819c9f9905d7dc6 GIT binary patch literal 899 zcmV-}1AP36P)l(9dr-<1J{FO{Ay^ONFincozR8K8i!|56}a;_!ZCmgf#1*0;L`jS@Do}H1} zCA%AsBnjeZq$#jM9-jfJwq*9VZ}7)A&8m0|c{>zw#gQc^-hNRF($$oj5#5w0Pf_Lm zJ5Mh&JXG%98i&TmAb9P8@HTvvg5dKo2)>S>{sGSIs()2-8hsbNRMlep5Z!>&i>j91 zfwN8Mymxe0|B>othcX#>If1r$XupQYVmYhIImdU9T9;pR1-pCDEBB*I-_bc|^xxnq zzyJUM32;bRa{vGf5&!@T5&_cPe*6Fc0lY~>K~#8N?V7(!12Gteds5KNy_5JCh>MGx z|F45?Lig$-xC-JZZcc&<*EcnhnETOdxvwASb8y^|qbv=YZxT50R^W zKHr{XEbR69XsmVwP0R2{#xfXcrG@Bzn>ov(qw|^cus$`>)kNr2b52%I2!o@F+&*#1MdzTpU1FTkH`h@@lAOHafKmY;|fB*y_009U<00Izz00eeU ZUzcsbCj%Xe(HCX<|QwriLU%imTw_P;d}k z{2KfRx(coef}jW@j?R89QsTK*sEFQha~|G%-^0lp@J|&C(`g(Bv*_CKSX7%!&1=n1 z_z4iCow2mxSksBgB>%4W8+@u>M^vx>@BO)2mokn4z82vT!?ImrnTDxV*HXMG+-2m` zOTzoYVOs_izEHYe<44808ow&Glko}gtDai!2kSrB$lIpyfN;nxl#K6r)RzP^#o2_^ z9@)J(#EB6_L#M;4tVY4lC>N?i->LB~3roYysd z8%{T%`_4++=`X24wm+MN=VNF~LFW|&7HV02pL28z$u;>!m$0)7{c^u!@e>~qXc(-W zx)}ff010qNS#tmY3labT3lag+-G2N4009X}L_t(oN9~g_3&JoEg&QgAP;htj7l?y8 zxcPq_bQ9cL7eR0moQty{6rsM;JE3}%5Hw2wM9D-C;V zMg&8coXMC5<`c?TUyu&S5%yBd+uod6NC?b|!eop{U>aG5qox`t=@JDd;M?;}PY9GA zp2OAqH#9KXBF1bO%R4AG02;KM^4 zBuyQgYT%P@)%Wp>-qceGC;=s)1eAahPy$Ne4+z`=g0EB#V{wto00000NkvXXu0mjf DP!vS` literal 0 HcmV?d00001 diff --git a/Resources/Textures/Effects/speech.rsi/felinid2.png b/Resources/Textures/Effects/speech.rsi/felinid2.png new file mode 100644 index 0000000000000000000000000000000000000000..abb5f04373eeaeb41d4e7946340372195b52cfb1 GIT binary patch literal 712 zcmV;(0yq7MP)zcsbCj%Xe(HCX<|QwriLU%imTw_P;d}k z{2KfRx(coef}jW@j?R89QsTK*sEFQha~|G%-^0lp@J|&C(`g(Bv*_CKSX7%!&1=n1 z_z4iCow2mxSksBgB>%4W8+@u>M^vx>@BO)2mokn4z82vT!?ImrnTDxV*HXMG+-2m` zOTzoYVOs_izEHYe<44808ow&Glko}gtDai!2kSrB$lIpyfN;nxl#K6r)RzP^#o2_^ z9@)J(#EB6_L#M;4tVY4lC>N?i->LB~3roYysd z8%{T%`_4++=`X24wm+MN=VNF~LFW|&7HV02pL28z$u;>!m$0)7{c^u!@e>~qXc(-W zx)}ff010qNS#tmY3labT3lag+-G2N40096=L_t(oN9|KF3IZ_@yvTtTg1x0L5DT@i z^S>6_3HGOrU@KUQA2>LLIEz^c3DF!R2(k+yo9t$0ZZ0W`SL`uXCJ#+p6pmkdT9-TK zgwk3MkZ%GAYt%=r(IXC&rl-L?1WB!ws@!wfr+SuP2OdE0g1iA);SSnIoy4->WMWuA z36dKTb6`E=9Q%E&uUOxcF&iKju!sbnMD|6uu>kJ?zM5V}_Fw_t#j}5br6Tz=Q~*C< zObtn8-vjGDP&zm39p+^!Ye)dc1qr?Nw;L=5ZctATW1NcE#W@9l$q^F7qRzPle8Tna u$1g+(r#K)Ehy&t)I3Ny)1LDB{I`9Oll1NI}FYCwv0000 Date: Mon, 12 Feb 2024 20:51:56 +0000 Subject: [PATCH 11/29] Automatic Changelog Update (#808) --- Resources/Changelog/DeltaVChangelog.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Resources/Changelog/DeltaVChangelog.yml b/Resources/Changelog/DeltaVChangelog.yml index 60643480570..c5a3db7366d 100644 --- a/Resources/Changelog/DeltaVChangelog.yml +++ b/Resources/Changelog/DeltaVChangelog.yml @@ -1572,3 +1572,9 @@ Entries: message: Fixed glimmer mite being extremely loud for some. id: 236 time: '2024-02-10T23:21:56.0000000+00:00' +- author: Adrian16199 + changes: + - type: Add + message: Added a speech bubble to felinids. Mraow! + id: 237 + time: '2024-02-12T20:51:35.0000000+00:00' From d8df4327ec6efaa9609493f4d88d909d9fd02de9 Mon Sep 17 00:00:00 2001 From: Debug <49997488+DebugOk@users.noreply.github.com> Date: Mon, 12 Feb 2024 21:52:49 +0100 Subject: [PATCH 12/29] Fix PseudoItems (#821) * Fix PseudoItem * Add pain * Cancel attack events --- .../Item/PseudoItem/PseudoItemSystem.cs | 7 + .../Item/PseudoItem/PseudoItemSystem.cs | 206 ++++-------------- Content.Shared/Item/ItemComponent.cs | 5 +- .../PseudoItemComponent.cs | 6 +- .../SharedPseudoItemSystem.Checks.cs | 165 ++++++++++++++ .../Item/PseudoItem/SharedPseudoItemSystem.cs | 165 ++++++++++++++ .../EntitySystems/SharedStorageSystem.cs | 3 +- .../Entities/Mobs/Species/felinid.yml | 5 +- 8 files changed, 393 insertions(+), 169 deletions(-) create mode 100644 Content.Client/Nyanotrasen/Item/PseudoItem/PseudoItemSystem.cs rename Content.Shared/Nyanotrasen/Item/{Components => PseudoItem}/PseudoItemComponent.cs (84%) create mode 100644 Content.Shared/Nyanotrasen/Item/PseudoItem/SharedPseudoItemSystem.Checks.cs create mode 100644 Content.Shared/Nyanotrasen/Item/PseudoItem/SharedPseudoItemSystem.cs diff --git a/Content.Client/Nyanotrasen/Item/PseudoItem/PseudoItemSystem.cs b/Content.Client/Nyanotrasen/Item/PseudoItem/PseudoItemSystem.cs new file mode 100644 index 00000000000..f9427362a66 --- /dev/null +++ b/Content.Client/Nyanotrasen/Item/PseudoItem/PseudoItemSystem.cs @@ -0,0 +1,7 @@ +using Content.Shared.Nyanotrasen.Item.PseudoItem; + +namespace Content.Client.Nyanotrasen.Item.PseudoItem; + +public sealed class PseudoItemSystem : SharedPseudoItemSystem +{ +} diff --git a/Content.Server/Nyanotrasen/Item/PseudoItem/PseudoItemSystem.cs b/Content.Server/Nyanotrasen/Item/PseudoItem/PseudoItemSystem.cs index 03c494332cf..76cfe7d904b 100644 --- a/Content.Server/Nyanotrasen/Item/PseudoItem/PseudoItemSystem.cs +++ b/Content.Server/Nyanotrasen/Item/PseudoItem/PseudoItemSystem.cs @@ -1,174 +1,56 @@ -using Content.Server.DoAfter; +using Content.Server.DoAfter; +using Content.Server.Item; using Content.Server.Storage.EntitySystems; using Content.Shared.DoAfter; -using Content.Shared.Hands; using Content.Shared.IdentityManagement; using Content.Shared.Item; using Content.Shared.Item.PseudoItem; +using Content.Shared.Nyanotrasen.Item.PseudoItem; using Content.Shared.Storage; using Content.Shared.Tag; using Content.Shared.Verbs; -using Robust.Shared.Containers; -namespace Content.Server.Item.PseudoItem; +namespace Content.Server.Nyanotrasen.Item.PseudoItem; -public sealed class PseudoItemSystem : EntitySystem +public sealed class PseudoItemSystem : SharedPseudoItemSystem { - // [Dependency] private readonly StorageSystem _storageSystem = default!; - // [Dependency] private readonly ItemSystem _itemSystem = default!; - // [Dependency] private readonly DoAfterSystem _doAfter = default!; - // [Dependency] private readonly TagSystem _tagSystem = default!; - // - // [ValidatePrototypeId] - // private const string PreventTag = "PreventLabel"; - // - // public override void Initialize() - // { - // base.Initialize(); - // SubscribeLocalEvent>(AddInsertVerb); - // SubscribeLocalEvent>(AddInsertAltVerb); - // SubscribeLocalEvent(OnEntRemoved); - // SubscribeLocalEvent(OnGettingPickedUpAttempt); - // SubscribeLocalEvent(OnDropAttempt); - // SubscribeLocalEvent(OnDoAfter); - // SubscribeLocalEvent(OnInsertAttempt); - // } - // - // private void AddInsertVerb(EntityUid uid, PseudoItemComponent component, GetVerbsEvent args) - // { - // if (!args.CanInteract || !args.CanAccess) - // return; - // - // if (component.Active) - // return; - // - // if (!TryComp(args.Target, out var targetStorage)) - // return; - // - // if (component.Size > targetStorage.StorageCapacityMax - targetStorage.StorageUsed) - // return; - // - // if (Transform(args.Target).ParentUid == uid) - // return; - // - // InnateVerb verb = new() - // { - // Act = () => - // { - // TryInsert(args.Target, uid, component, targetStorage); - // }, - // Text = Loc.GetString("action-name-insert-self"), - // Priority = 2 - // }; - // args.Verbs.Add(verb); - // } - // - // private void AddInsertAltVerb(EntityUid uid, PseudoItemComponent component, GetVerbsEvent args) - // { - // if (!args.CanInteract || !args.CanAccess) - // return; - // - // if (args.User == args.Target) - // return; - // - // if (args.Hands == null) - // return; - // - // if (!TryComp(args.Hands.ActiveHandEntity, out var targetStorage)) - // return; - // - // AlternativeVerb verb = new() - // { - // Act = () => - // { - // StartInsertDoAfter(args.User, uid, args.Hands.ActiveHandEntity.Value, component); - // }, - // Text = Loc.GetString("action-name-insert-other", ("target", Identity.Entity(args.Target, EntityManager))), - // Priority = 2 - // }; - // args.Verbs.Add(verb); - // } - // - // private void OnEntRemoved(EntityUid uid, PseudoItemComponent component, EntGotRemovedFromContainerMessage args) - // { - // if (!component.Active) - // return; - // - // RemComp(uid); - // component.Active = false; - // } - // - // private void OnGettingPickedUpAttempt(EntityUid uid, PseudoItemComponent component, - // GettingPickedUpAttemptEvent args) - // { - // if (args.User == args.Item) - // return; - // - // Transform(uid).AttachToGridOrMap(); - // args.Cancel(); - // } - // - // private void OnDropAttempt(EntityUid uid, PseudoItemComponent component, DropAttemptEvent args) - // { - // if (component.Active) - // args.Cancel(); - // } - // - // private void OnDoAfter(EntityUid uid, PseudoItemComponent component, DoAfterEvent args) - // { - // if (args.Handled || args.Cancelled || args.Args.Used == null) - // return; - // - // args.Handled = TryInsert(args.Args.Used.Value, uid, component); - // } - // - // public bool TryInsert(EntityUid storageUid, EntityUid toInsert, PseudoItemComponent component, - // StorageComponent? storage = null) - // { - // if (!Resolve(storageUid, ref storage)) - // return false; - // - // if (component.Size > storage.StorageCapacityMax - storage.StorageUsed) - // return false; - // - // var item = EnsureComp(toInsert); - // _tagSystem.TryAddTag(toInsert, PreventTag); - // _itemSystem.SetSize(toInsert, component.Size, item); - // - // if (!_storageSystem.Insert(storageUid, toInsert, out _, null, storage)) - // { - // component.Active = false; - // RemComp(toInsert); - // return false; - // } - // - // component.Active = true; - // return true; - // } - // - // private void StartInsertDoAfter(EntityUid inserter, EntityUid toInsert, EntityUid storageEntity, - // PseudoItemComponent? pseudoItem = null) - // { - // if (!Resolve(toInsert, ref pseudoItem)) - // return; - // - // var ev = new PseudoItemInsertDoAfterEvent(); - // var args = new DoAfterArgs(EntityManager, inserter, 5f, ev, toInsert, toInsert, storageEntity) - // { - // BreakOnTargetMove = true, - // BreakOnUserMove = true, - // NeedHand = true - // }; - // - // _doAfter.TryStartDoAfter(args); - // } - // - // private void OnInsertAttempt(EntityUid uid, PseudoItemComponent component, - // ContainerGettingInsertedAttemptEvent args) - // { - // if (!component.Active) - // return; - // // This hopefully shouldn't trigger, but this is a failsafe just in case so we dont bluespace them cats - // args.Cancel(); - // } + [Dependency] private readonly StorageSystem _storage = default!; + [Dependency] private readonly ItemSystem _item = default!; + [Dependency] private readonly DoAfterSystem _doAfter = default!; + + + public override void Initialize() + { + base.Initialize(); + SubscribeLocalEvent>(AddInsertAltVerb); + } + + private void AddInsertAltVerb(EntityUid uid, PseudoItemComponent component, GetVerbsEvent args) + { + if (!args.CanInteract || !args.CanAccess) + return; + + if (component.Active) + return; + + if (!TryComp(args.Using, out var targetStorage)) + return; + + if (!CheckItemFits((uid, component), (args.Using.Value, targetStorage))) + return; + + if (args.Hands?.ActiveHandEntity == null) + return; + + AlternativeVerb verb = new() + { + Act = () => + { + StartInsertDoAfter(args.User, uid, args.Hands.ActiveHandEntity.Value, component); + }, + Text = Loc.GetString("action-name-insert-other", ("target", Identity.Entity(args.Target, EntityManager))), + Priority = 2 + }; + args.Verbs.Add(verb); + } } diff --git a/Content.Shared/Item/ItemComponent.cs b/Content.Shared/Item/ItemComponent.cs index 9fadfa0783c..0f599ebdbed 100644 --- a/Content.Shared/Item/ItemComponent.cs +++ b/Content.Shared/Item/ItemComponent.cs @@ -1,4 +1,5 @@ using Content.Shared.Hands.Components; +using Content.Shared.Nyanotrasen.Item.PseudoItem; using Robust.Shared.GameStates; using Robust.Shared.Prototypes; using Robust.Shared.Serialization; @@ -12,11 +13,11 @@ namespace Content.Shared.Item; /// [RegisterComponent] [NetworkedComponent] -[Access(typeof(SharedItemSystem)), AutoGenerateComponentState(true)] +[Access(typeof(SharedItemSystem), typeof(SharedPseudoItemSystem)), AutoGenerateComponentState(true)] // DeltaV - Gave PseudoItem access public sealed partial class ItemComponent : Component { [DataField, ViewVariables(VVAccess.ReadWrite), AutoNetworkedField] - [Access(typeof(SharedItemSystem))] + [Access(typeof(SharedItemSystem), typeof(SharedPseudoItemSystem))] // DeltaV - Gave PseudoItem access public ProtoId Size = "Small"; [Access(typeof(SharedItemSystem))] diff --git a/Content.Shared/Nyanotrasen/Item/Components/PseudoItemComponent.cs b/Content.Shared/Nyanotrasen/Item/PseudoItem/PseudoItemComponent.cs similarity index 84% rename from Content.Shared/Nyanotrasen/Item/Components/PseudoItemComponent.cs rename to Content.Shared/Nyanotrasen/Item/PseudoItem/PseudoItemComponent.cs index cad826aa6b9..d3774439d36 100644 --- a/Content.Shared/Nyanotrasen/Item/Components/PseudoItemComponent.cs +++ b/Content.Shared/Nyanotrasen/Item/PseudoItem/PseudoItemComponent.cs @@ -1,8 +1,7 @@ - using Content.Shared.Item; using Robust.Shared.Prototypes; -namespace Content.Shared.Nyanotrasen.Item.Components; +namespace Content.Shared.Nyanotrasen.Item.PseudoItem; ///

    /// For entities that behave like an item under certain conditions, @@ -21,5 +20,8 @@ public sealed partial class PseudoItemComponent : Component [DataField, AutoNetworkedField] public List? Shape; + [DataField, AutoNetworkedField] + public Vector2i StoredOffset; + public bool Active = false; } diff --git a/Content.Shared/Nyanotrasen/Item/PseudoItem/SharedPseudoItemSystem.Checks.cs b/Content.Shared/Nyanotrasen/Item/PseudoItem/SharedPseudoItemSystem.Checks.cs new file mode 100644 index 00000000000..7000c654048 --- /dev/null +++ b/Content.Shared/Nyanotrasen/Item/PseudoItem/SharedPseudoItemSystem.Checks.cs @@ -0,0 +1,165 @@ +using Content.Shared.Item; +using Content.Shared.Storage; + +namespace Content.Shared.Nyanotrasen.Item.PseudoItem; + +/// +/// Almost all of this is code taken from other systems, but adapted to use PseudoItem. +/// I couldn't use the original functions because the resolve would fuck shit up, even if I passed a constructed itemcomp +/// +/// This is horrible, and I hate it. But such is life +/// +public partial class SharedPseudoItemSystem +{ + protected bool CheckItemFits(Entity itemEnt, Entity storageEnt) + { + if (!Resolve(itemEnt, ref itemEnt.Comp) || !Resolve(storageEnt, ref storageEnt.Comp)) + return false; + + if (Transform(itemEnt).Anchored) + return false; + + if (storageEnt.Comp.Whitelist?.IsValid(itemEnt, EntityManager) == false) + return false; + + if (storageEnt.Comp.Blacklist?.IsValid(itemEnt, EntityManager) == true) + return false; + + var maxSize = _storage.GetMaxItemSize(storageEnt); + if (_item.GetSizePrototype(itemEnt.Comp.Size) > maxSize) + return false; + + // The following is shitfucked together straight from TryGetAvailableGridSpace, but eh, it works + + var itemComp = new ItemComponent + { Size = itemEnt.Comp.Size, Shape = itemEnt.Comp.Shape, StoredOffset = itemEnt.Comp.StoredOffset }; + + var storageBounding = storageEnt.Comp.Grid.GetBoundingBox(); + + Angle startAngle; + if (storageEnt.Comp.DefaultStorageOrientation == null) + startAngle = Angle.FromDegrees(-itemComp.StoredRotation); // PseudoItem doesn't support this + else + { + if (storageBounding.Width < storageBounding.Height) + { + startAngle = storageEnt.Comp.DefaultStorageOrientation == StorageDefaultOrientation.Horizontal + ? Angle.Zero + : Angle.FromDegrees(90); + } + else + { + startAngle = storageEnt.Comp.DefaultStorageOrientation == StorageDefaultOrientation.Vertical + ? Angle.Zero + : Angle.FromDegrees(90); + } + } + + for (var y = storageBounding.Bottom; y <= storageBounding.Top; y++) + { + for (var x = storageBounding.Left; x <= storageBounding.Right; x++) + { + for (var angle = startAngle; angle <= Angle.FromDegrees(360 - startAngle); angle += Math.PI / 2f) + { + var location = new ItemStorageLocation(angle, (x, y)); + if (ItemFitsInGridLocation(itemEnt, storageEnt, location.Position, location.Rotation)) + return true; + } + } + } + + return false; + } + + private bool ItemFitsInGridLocation( + Entity itemEnt, + Entity storageEnt, + Vector2i position, + Angle rotation) + { + if (!Resolve(itemEnt, ref itemEnt.Comp) || !Resolve(storageEnt, ref storageEnt.Comp)) + return false; + + var gridBounds = storageEnt.Comp.Grid.GetBoundingBox(); + if (!gridBounds.Contains(position)) + return false; + + var itemShape = GetAdjustedItemShape(itemEnt, rotation, position); + + foreach (var box in itemShape) + { + for (var offsetY = box.Bottom; offsetY <= box.Top; offsetY++) + { + for (var offsetX = box.Left; offsetX <= box.Right; offsetX++) + { + var pos = (offsetX, offsetY); + + if (!IsGridSpaceEmpty(itemEnt, storageEnt, pos, itemShape)) + return false; + } + } + } + + return true; + } + + private IReadOnlyList GetAdjustedItemShape(Entity entity, Angle rotation, + Vector2i position) + { + if (!Resolve(entity, ref entity.Comp)) + return new Box2i[] { }; + + var shapes = entity.Comp.Shape ?? _item.GetSizePrototype(entity.Comp.Size).DefaultShape; + var boundingShape = shapes.GetBoundingBox(); + var boundingCenter = ((Box2) boundingShape).Center; + var matty = Matrix3.CreateTransform(boundingCenter, rotation); + var drift = boundingShape.BottomLeft - matty.TransformBox(boundingShape).BottomLeft; + + var adjustedShapes = new List(); + foreach (var shape in shapes) + { + var transformed = matty.TransformBox(shape).Translated(drift); + var floored = new Box2i(transformed.BottomLeft.Floored(), transformed.TopRight.Floored()); + var translated = floored.Translated(position); + + adjustedShapes.Add(translated); + } + + return adjustedShapes; + } + + private bool IsGridSpaceEmpty(Entity itemEnt, Entity storageEnt, + Vector2i location, IReadOnlyList shape) + { + if (!Resolve(storageEnt, ref storageEnt.Comp)) + return false; + + var validGrid = false; + foreach (var grid in storageEnt.Comp.Grid) + { + if (grid.Contains(location)) + { + validGrid = true; + break; + } + } + + if (!validGrid) + return false; + + foreach (var (ent, storedItem) in storageEnt.Comp.StoredItems) + { + if (ent == itemEnt.Owner) + continue; + + var adjustedShape = shape; + foreach (var box in adjustedShape) + { + if (box.Contains(location)) + return false; + } + } + + return true; + } +} diff --git a/Content.Shared/Nyanotrasen/Item/PseudoItem/SharedPseudoItemSystem.cs b/Content.Shared/Nyanotrasen/Item/PseudoItem/SharedPseudoItemSystem.cs new file mode 100644 index 00000000000..4b7910746f1 --- /dev/null +++ b/Content.Shared/Nyanotrasen/Item/PseudoItem/SharedPseudoItemSystem.cs @@ -0,0 +1,165 @@ +using Content.Shared.DoAfter; +using Content.Shared.Hands; +using Content.Shared.IdentityManagement; +using Content.Shared.Interaction.Events; +using Content.Shared.Item; +using Content.Shared.Item.PseudoItem; +using Content.Shared.Storage; +using Content.Shared.Storage.EntitySystems; +using Content.Shared.Tag; +using Content.Shared.Verbs; +using Robust.Shared.Containers; + +namespace Content.Shared.Nyanotrasen.Item.PseudoItem; + +public abstract partial class SharedPseudoItemSystem : EntitySystem +{ + [Dependency] private readonly SharedStorageSystem _storage = default!; + [Dependency] private readonly SharedItemSystem _item = default!; + [Dependency] private readonly SharedDoAfterSystem _doAfter = default!; + [Dependency] private readonly TagSystem _tag = default!; + + [ValidatePrototypeId] + private const string PreventTag = "PreventLabel"; + + public override void Initialize() + { + base.Initialize(); + SubscribeLocalEvent>(AddInsertVerb); + SubscribeLocalEvent(OnEntRemoved); + SubscribeLocalEvent(OnGettingPickedUpAttempt); + SubscribeLocalEvent(OnDropAttempt); + SubscribeLocalEvent(OnInsertAttempt); + SubscribeLocalEvent(OnInteractAttempt); + SubscribeLocalEvent(OnDoAfter); + SubscribeLocalEvent(OnAttackAttempt); + } + + private void AddInsertVerb(EntityUid uid, PseudoItemComponent component, GetVerbsEvent args) + { + if (!args.CanInteract || !args.CanAccess) + return; + + if (component.Active) + return; + + if (!TryComp(args.Target, out var targetStorage)) + return; + + if (!CheckItemFits((uid, component), (args.Target, targetStorage))) + return; + + if (Transform(args.Target).ParentUid == uid) + return; + + InnateVerb verb = new() + { + Act = () => + { + TryInsert(args.Target, uid, component, targetStorage); + }, + Text = Loc.GetString("action-name-insert-self"), + Priority = 2 + }; + args.Verbs.Add(verb); + } + + private bool TryInsert(EntityUid storageUid, EntityUid toInsert, PseudoItemComponent component, + StorageComponent? storage = null) + { + if (!Resolve(storageUid, ref storage)) + return false; + + if (!CheckItemFits((toInsert, component), (storageUid, storage))) + return false; + + var itemComp = new ItemComponent + { Size = component.Size, Shape = component.Shape, StoredOffset = component.StoredOffset }; + AddComp(toInsert, itemComp); + _item.VisualsChanged(toInsert); + + _tag.TryAddTag(toInsert, PreventTag); + + if (!_storage.Insert(storageUid, toInsert, out _, null, storage)) + { + component.Active = false; + RemComp(toInsert); + return false; + } + + component.Active = true; + return true; + } + + private void OnEntRemoved(EntityUid uid, PseudoItemComponent component, EntGotRemovedFromContainerMessage args) + { + if (!component.Active) + return; + + RemComp(uid); + component.Active = false; + } + + private void OnGettingPickedUpAttempt(EntityUid uid, PseudoItemComponent component, + GettingPickedUpAttemptEvent args) + { + if (args.User == args.Item) + return; + + Transform(uid).AttachToGridOrMap(); + args.Cancel(); + } + + private void OnDropAttempt(EntityUid uid, PseudoItemComponent component, DropAttemptEvent args) + { + if (component.Active) + args.Cancel(); + } + + private void OnInsertAttempt(EntityUid uid, PseudoItemComponent component, + ContainerGettingInsertedAttemptEvent args) + { + if (!component.Active) + return; + // This hopefully shouldn't trigger, but this is a failsafe just in case so we dont bluespace them cats + args.Cancel(); + } + + // Prevents moving within the bag :) + private void OnInteractAttempt(EntityUid uid, PseudoItemComponent component, InteractionAttemptEvent args) + { + if (args.Uid == args.Target && component.Active) + args.Cancel(); + } + + private void OnDoAfter(EntityUid uid, PseudoItemComponent component, DoAfterEvent args) + { + if (args.Handled || args.Cancelled || args.Args.Used == null) + return; + + args.Handled = TryInsert(args.Args.Used.Value, uid, component); + } + + protected void StartInsertDoAfter(EntityUid inserter, EntityUid toInsert, EntityUid storageEntity, + PseudoItemComponent? pseudoItem = null) + { + if (!Resolve(toInsert, ref pseudoItem)) + return; + + var ev = new PseudoItemInsertDoAfterEvent(); + var args = new DoAfterArgs(EntityManager, inserter, 5f, ev, toInsert, toInsert, storageEntity) + { + BreakOnTargetMove = true, + BreakOnUserMove = true, + NeedHand = true + }; + + _doAfter.TryStartDoAfter(args); + } + + private void OnAttackAttempt(EntityUid uid, PseudoItemComponent component, AttackAttemptEvent args) + { + if (component.Active) + args.Cancel(); + } +} diff --git a/Content.Shared/Storage/EntitySystems/SharedStorageSystem.cs b/Content.Shared/Storage/EntitySystems/SharedStorageSystem.cs index eb81a78e3ef..c00df042653 100644 --- a/Content.Shared/Storage/EntitySystems/SharedStorageSystem.cs +++ b/Content.Shared/Storage/EntitySystems/SharedStorageSystem.cs @@ -10,9 +10,8 @@ using Content.Shared.Implants.Components; using Content.Shared.Interaction; using Content.Shared.Item; -using Content.Shared.Item.PseudoItem; using Content.Shared.Lock; -using Content.Shared.Nyanotrasen.Item.Components; +using Content.Shared.Nyanotrasen.Item.PseudoItem; using Content.Shared.Placeable; using Content.Shared.Popups; using Content.Shared.Stacks; diff --git a/Resources/Prototypes/Nyanotrasen/Entities/Mobs/Species/felinid.yml b/Resources/Prototypes/Nyanotrasen/Entities/Mobs/Species/felinid.yml index 7f1b30a1512..6cabe87e810 100644 --- a/Resources/Prototypes/Nyanotrasen/Entities/Mobs/Species/felinid.yml +++ b/Resources/Prototypes/Nyanotrasen/Entities/Mobs/Species/felinid.yml @@ -50,8 +50,11 @@ - type: TypingIndicator proto: felinid - type: PseudoItem + storedOffset: 0,17 shape: - - 0,0,5,1 + - 0,0,1,4 + - 0,2,3,4 + - 4,0,5,4 - type: Vocal wilhelm: "/Audio/Nyanotrasen/Voice/Felinid/cat_wilhelm.ogg" sounds: From bbd3e76d951afd2d6fa6ecc807bb4fb51ce4189d Mon Sep 17 00:00:00 2001 From: DeltaV-Bot Date: Mon, 12 Feb 2024 20:53:04 +0000 Subject: [PATCH 13/29] Automatic Changelog Update (#821) --- Resources/Changelog/DeltaVChangelog.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Resources/Changelog/DeltaVChangelog.yml b/Resources/Changelog/DeltaVChangelog.yml index c5a3db7366d..3f27db154df 100644 --- a/Resources/Changelog/DeltaVChangelog.yml +++ b/Resources/Changelog/DeltaVChangelog.yml @@ -1578,3 +1578,9 @@ Entries: message: Added a speech bubble to felinids. Mraow! id: 237 time: '2024-02-12T20:51:35.0000000+00:00' +- author: DebugOk + changes: + - type: Add + message: Felinids now fit in bags again! + id: 238 + time: '2024-02-12T20:52:49.0000000+00:00' From 0451fc6f6255cc2e9431ceed80971f82f0639c36 Mon Sep 17 00:00:00 2001 From: Guess-My-Name <34919974+Guess-My-Name@users.noreply.github.com> Date: Mon, 12 Feb 2024 22:01:43 +0100 Subject: [PATCH 14/29] Bureaucratic error changes (#532) * reenables bureaucratic error event * change * Update events.yml removed whitespace likely causing test failures Signed-off-by: Colin-Tel <113523727+Colin-Tel@users.noreply.github.com> --------- Signed-off-by: Colin-Tel <113523727+Colin-Tel@users.noreply.github.com> Co-authored-by: Colin-Tel <113523727+Colin-Tel@users.noreply.github.com> --- .../Events/BureaucraticErrorRule.cs | 2 ++ Resources/Prototypes/GameRules/events.yml | 22 +++++++++---------- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/Content.Server/StationEvents/Events/BureaucraticErrorRule.cs b/Content.Server/StationEvents/Events/BureaucraticErrorRule.cs index b82546a55ba..6415aa4c2af 100644 --- a/Content.Server/StationEvents/Events/BureaucraticErrorRule.cs +++ b/Content.Server/StationEvents/Events/BureaucraticErrorRule.cs @@ -33,12 +33,14 @@ protected override void Started(EntityUid uid, BureaucraticErrorRuleComponent co { var chosenJob = RobustRandom.PickAndTake(jobList); _stationJobs.MakeJobUnlimited(chosenStation.Value, chosenJob); // INFINITE chaos. + /* DeltaV - don't close all other jobs foreach (var job in jobList) { if (_stationJobs.IsJobUnlimited(chosenStation.Value, job)) continue; _stationJobs.TrySetJobSlot(chosenStation.Value, job, 0); } + */ } else { diff --git a/Resources/Prototypes/GameRules/events.yml b/Resources/Prototypes/GameRules/events.yml index 2fbde82b049..83dffda3095 100644 --- a/Resources/Prototypes/GameRules/events.yml +++ b/Resources/Prototypes/GameRules/events.yml @@ -43,17 +43,17 @@ minimumPlayers: 15 - type: BreakerFlipRule -# - type: entity -# id: BureaucraticError # DeltaV - Prevent the BureaucraticError event to happen. -# parent: BaseGameRule -# noSpawn: true -# components: -# - type: StationEvent -# startAnnouncement: station-event-bureaucratic-error-announcement -# minimumPlayers: 25 -# weight: 5 -# duration: 1 -# - type: BureaucraticErrorRule +- type: entity + id: BureaucraticError + parent: BaseGameRule + noSpawn: true + components: + - type: StationEvent + startAnnouncement: station-event-bureaucratic-error-announcement + minimumPlayers: 25 + weight: 5 + duration: 1 + - type: BureaucraticErrorRule - type: entity id: ClericalError From 961196227d297ec0119bdf096a774a15d3474594 Mon Sep 17 00:00:00 2001 From: DeltaV-Bot Date: Mon, 12 Feb 2024 21:01:59 +0000 Subject: [PATCH 15/29] Automatic Changelog Update (#532) --- Resources/Changelog/DeltaVChangelog.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Resources/Changelog/DeltaVChangelog.yml b/Resources/Changelog/DeltaVChangelog.yml index 3f27db154df..905850e29c8 100644 --- a/Resources/Changelog/DeltaVChangelog.yml +++ b/Resources/Changelog/DeltaVChangelog.yml @@ -1584,3 +1584,11 @@ Entries: message: Felinids now fit in bags again! id: 238 time: '2024-02-12T20:52:49.0000000+00:00' +- author: Guess-My-Name + changes: + - type: Add + message: >- + Some budget cuts were made in HR department, expect more bureaucratic + errors in near future. + id: 239 + time: '2024-02-12T21:01:44.0000000+00:00' From 49d3c45d0d7c499853cc3a1559cb2d9bd1e91e0a Mon Sep 17 00:00:00 2001 From: Adrian16199 <144424013+Adrian16199@users.noreply.github.com> Date: Mon, 12 Feb 2024 22:10:43 +0100 Subject: [PATCH 16/29] Felinid changes. (#666) * Felinid changes. A plan * Just slappin it together for a friend to see and help * Somethin somethin Cos I could be at yours on friday Tonight's at the place we started It's a long way back from sorry But here I go .... How does it feel, how does it feel Just tell me something I don't know what to tell you I don't know what to say I got into my head, i'm sorry i threw it away But i'm so glad you came back, even through all the pain Let me try and mend it, i can promise that i have changed Oh, let me give you all of me Can we just sort it out for real * just makin this less messy.... I guess * Just tell me somethin. How does it feel, how does it feel. * . * cleaning.... * Makes it work. Yey. * just a small change tbh. * okay maybe just a bit. * Hm, maybe.... * This feels bit better. * hopefully fixes yaml linter * Update Resources/Prototypes/Nyanotrasen/Entities/Mobs/Species/felinid.yml Co-authored-by: Debug <49997488+DebugOk@users.noreply.github.com> Signed-off-by: Adrian16199 <144424013+Adrian16199@users.noreply.github.com> * Doin the changes. * Renaming. * Renaming notes. --------- Signed-off-by: Adrian16199 <144424013+Adrian16199@users.noreply.github.com> Co-authored-by: Debug <49997488+DebugOk@users.noreply.github.com> --- .../Component/NoShoesSilentFootstepsComponent.cs | 9 +++++++++ .../Movement/Systems/SharedMoverController.cs | 10 ++++++++++ Resources/Prototypes/Entities/Mobs/NPCs/regalrat.yml | 3 +++ .../Nyanotrasen/Entities/Mobs/Species/felinid.yml | 10 ++++++---- 4 files changed, 28 insertions(+), 4 deletions(-) create mode 100644 Content.Shared/DeltaV/StepTrigger/Component/NoShoesSilentFootstepsComponent.cs diff --git a/Content.Shared/DeltaV/StepTrigger/Component/NoShoesSilentFootstepsComponent.cs b/Content.Shared/DeltaV/StepTrigger/Component/NoShoesSilentFootstepsComponent.cs new file mode 100644 index 00000000000..ae2697b0ef0 --- /dev/null +++ b/Content.Shared/DeltaV/StepTrigger/Component/NoShoesSilentFootstepsComponent.cs @@ -0,0 +1,9 @@ +using Robust.Shared.GameStates; + +namespace Content.Shared.StepTrigger.Components; + + +[RegisterComponent, NetworkedComponent] +public sealed partial class NoShoesSilentFootstepsComponent : Component +{ +} diff --git a/Content.Shared/Movement/Systems/SharedMoverController.cs b/Content.Shared/Movement/Systems/SharedMoverController.cs index 7d5e24a15b1..49ad40ae596 100644 --- a/Content.Shared/Movement/Systems/SharedMoverController.cs +++ b/Content.Shared/Movement/Systems/SharedMoverController.cs @@ -23,6 +23,7 @@ using Robust.Shared.Physics.Systems; using Robust.Shared.Timing; using Robust.Shared.Utility; +using Content.Shared.StepTrigger.Components; // Delta V-NoShoesSilentFootstepsComponent namespace Content.Shared.Movement.Systems { @@ -46,6 +47,7 @@ public abstract partial class SharedMoverController : VirtualController [Dependency] protected readonly SharedPhysicsSystem Physics = default!; [Dependency] private readonly SharedTransformSystem _transform = default!; [Dependency] private readonly TagSystem _tags = default!; + [Dependency] private readonly IEntityManager _entities = default!; // Delta V-NoShoesSilentFootstepsComponent protected EntityQuery MoverQuery; protected EntityQuery MobMoverQuery; @@ -443,6 +445,14 @@ private bool TryGetSound( sound = moverModifier.FootstepSoundCollection; return true; } + + // If got the component in yml and no shoes = no sound. Delta V + if (_entities.TryGetComponent(uid, out NoShoesSilentFootstepsComponent? _) & + !_inventory.TryGetSlotEntity(uid, "shoes", out var _)) + { + return false; + } + // Delta V NoShoesSilentFootsteps till here. if (_inventory.TryGetSlotEntity(uid, "shoes", out var shoes) && TryComp(shoes, out var modifier)) diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/regalrat.yml b/Resources/Prototypes/Entities/Mobs/NPCs/regalrat.yml index 3f38b1c2723..396094eeafa 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/regalrat.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/regalrat.yml @@ -274,6 +274,9 @@ guides: - MinorAntagonists - type: FelinidFood # Nyanotrasen - Felinid, ability to eat rat, see Content.Server/Nyanotrasen/Abilities/Felinid/FelinidSystem.cs + - type: Food + - type: Item + size: Tiny # Delta V - Make them eatable and pickable. - type: weightedRandomEntity id: RatKingLoot diff --git a/Resources/Prototypes/Nyanotrasen/Entities/Mobs/Species/felinid.yml b/Resources/Prototypes/Nyanotrasen/Entities/Mobs/Species/felinid.yml index 6cabe87e810..d9b25c5dd1b 100644 --- a/Resources/Prototypes/Nyanotrasen/Entities/Mobs/Species/felinid.yml +++ b/Resources/Prototypes/Nyanotrasen/Entities/Mobs/Species/felinid.yml @@ -25,6 +25,10 @@ prototype: Felinid - type: Damageable damageModifierSet: Felinid + - type: SlowOnDamage + speedModifierThresholds: + 60: 0.85 # 0.7 is base speed. + 80: 0.75 # 0.5 is base speed. - type: MeleeWeapon soundHit: collection: Punch @@ -36,12 +40,9 @@ # - type: DiseaseCarrier # naturalImmunities: # - OwOnavirus - - type: Thieving - stealthy: true - stripTimeReduction: 1 - type: Speech speechSounds: Alto - - type: DamageOnHighSpeedImpact + - type: DamageOnHighSpeedImpact # Landing on all fours! damage: types: Blunt: 1 @@ -62,6 +63,7 @@ Female: FemaleFelinid Unsexed: MaleFelinid - type: Felinid + - type: NoShoesSilentFootsteps - type: entity save: false From 7a5c18c73a1480ca0f6bfcff4e92e71d556651ba Mon Sep 17 00:00:00 2001 From: DeltaV-Bot Date: Mon, 12 Feb 2024 21:10:56 +0000 Subject: [PATCH 17/29] Automatic Changelog Update (#666) --- Resources/Changelog/DeltaVChangelog.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Resources/Changelog/DeltaVChangelog.yml b/Resources/Changelog/DeltaVChangelog.yml index 905850e29c8..62f0ea0c355 100644 --- a/Resources/Changelog/DeltaVChangelog.yml +++ b/Resources/Changelog/DeltaVChangelog.yml @@ -1592,3 +1592,9 @@ Entries: errors in near future. id: 239 time: '2024-02-12T21:01:44.0000000+00:00' +- author: Adrian16199 + changes: + - type: Tweak + message: Felinid's thieving gloves have been removed for Soft paws mechanic. + id: 240 + time: '2024-02-12T21:10:44.0000000+00:00' From 3b8c4a4647ff793bb1c8c005cc43b93ddbb923d2 Mon Sep 17 00:00:00 2001 From: Adrian16199 <144424013+Adrian16199@users.noreply.github.com> Date: Mon, 12 Feb 2024 22:11:43 +0100 Subject: [PATCH 18/29] Make felinids scream in agony when sprayed with water. (#556) * Make felinids scream in agony when sprayed with water. Their screams will be heard thro walls and halls. You will hear a felinid scream in a shift atleast once. Their sheer agony. * Giving probability as the best possible implementation as of now --------- Co-authored-by: Debug <49997488+DebugOk@users.noreply.github.com> --- .../Nyanotrasen/Entities/Mobs/Player/felinid.yml | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/Resources/Prototypes/Nyanotrasen/Entities/Mobs/Player/felinid.yml b/Resources/Prototypes/Nyanotrasen/Entities/Mobs/Player/felinid.yml index bd6c39db6fd..db7936cc5b4 100644 --- a/Resources/Prototypes/Nyanotrasen/Entities/Mobs/Player/felinid.yml +++ b/Resources/Prototypes/Nyanotrasen/Entities/Mobs/Player/felinid.yml @@ -18,6 +18,21 @@ speechVerb: Felinid - type: MobMover - type: InputMover + - type: Reactive + groups: + Flammable: [ Touch ] + Extinguish: [ Touch ] + reactions: + - reagents: [ Water, SpaceCleaner ] + methods: [ Touch ] + effects: + - !type:WashCreamPieReaction + - reagents: [ Water ] + methods: [ Touch ] + effects: + - !type:Emote + emote: Scream + probability: 0.2 - type: Respirator damage: types: From c13e538c0359ddf23f14e043768698e906db30ce Mon Sep 17 00:00:00 2001 From: DeltaV-Bot Date: Mon, 12 Feb 2024 21:11:57 +0000 Subject: [PATCH 19/29] Automatic Changelog Update (#556) --- Resources/Changelog/DeltaVChangelog.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Resources/Changelog/DeltaVChangelog.yml b/Resources/Changelog/DeltaVChangelog.yml index 62f0ea0c355..f7baad085a5 100644 --- a/Resources/Changelog/DeltaVChangelog.yml +++ b/Resources/Changelog/DeltaVChangelog.yml @@ -1598,3 +1598,9 @@ Entries: message: Felinid's thieving gloves have been removed for Soft paws mechanic. id: 240 time: '2024-02-12T21:10:44.0000000+00:00' +- author: Adrian16199 + changes: + - type: Add + message: Felinids now scream in agony from water. + id: 241 + time: '2024-02-12T21:11:44.0000000+00:00' From 1f3128c6ea0074f5cf3b8b2482612a1ccc609bdf Mon Sep 17 00:00:00 2001 From: VMSolidus Date: Mon, 12 Feb 2024 17:25:02 -0500 Subject: [PATCH 20/29] Harpy Visual Rework (#677) * It begins * Delete error.txt * Patch by Debug * HIDING WINGS NOW WORKS * Runs smoother from Shared * Delete HarpyVisualsSystem.cs * The entire clientside script is no longer needed, and the visuals now work correctly. Helmetbug is gone. * Update HarpyVisualsSystem.cs * First completed Harpy Hardsuit * Captain and Atmos tech birdsuits * Update hardsuit-helmets.yml * And more content * Adding new finch tail <3 * whoops * guh * I swear the tail works now, I just need the adhd meds to kick in * birb juggsuit * More stuff * Nukie hardsuits * fixing clipping issues on birb juggsuit * Update meta.json * aaaaaaaaa * two more * Ton of extra harpy sprites * Create equipped-INNERCLOTHING-harpy.png * Harpy Ultravision trait TODO: Optional trait that disables it * Trait that removes Ultravision * Code optimizations * Adding hueshift maps to all harpy markings * No more jumpsuits * 1984 the harpy jumpsuits, they are no longer needed * last 2 * final QA pass * shennanigans related to an earlier merge conflict --------- Signed-off-by: VMSolidus --- .../DeltaV/Harpy/HarpyVisualsComponent.cs | 5 + .../DeltaV/Overlays/UltraVisionOverlay.cs | 44 +++++ .../DeltaV/Overlays/UltraVisionSystem.cs | 31 +++ .../Abilities/DefaultVisionComponent.cs | 8 + .../DeltaV/Abilities/DefaultVisionSystem.cs | 19 ++ .../DeltaV/Abilities/UltraVisionComponent.cs | 8 + .../DeltaV/Harpy/HarpySingerComponent.cs | 1 + .../DeltaV/Harpy/HarpyVisualsSystem.cs | 40 ++++ .../Harpy/SharedHarpyVisualsComponent.cs | 9 + Content.Shared/Roles/StartingGearPrototype.cs | 4 +- .../deltav/chat/managers/chat_manager.ftl | 5 + .../Locale/en-US/deltav/markings/harpy.ftl | 52 +++-- .../Locale/en-US/deltav/traits/traits.ftl | 4 + .../Prototypes/DeltaV/Body/Parts/harpy.yml | 186 ++++++++++++++++++ .../DeltaV/Body/Prototypes/harpy.yml | 26 +-- .../Mobs/Customization/Markings/harpy.yml | 122 +++++++++++- .../DeltaV/Entities/Mobs/Species/harpy.yml | 10 +- .../digitigrade_inventory_template.yml | 119 +++++++++++ .../Prototypes/DeltaV/Shaders/birdvision.yml | 4 + Resources/Prototypes/DeltaV/Species/harpy.yml | 111 ++++++++++- .../Prototypes/DeltaV/Traits/altvision.yml | 13 ++ .../Prototypes/DeltaV/Voice/speech_sounds.yml | 9 + .../Prototypes/DeltaV/Voice/speech_verbs.yml | 8 + Resources/Prototypes/DeltaV/tags.yml | 6 + .../OuterClothing/base_clothingouter.yml | 4 + .../Uniforms/base_clothinguniforms.yml | 3 + .../Mobs/Customization/Markings/gauze.yml | 14 +- .../Mobs/Customization/Markings/scars.yml | 4 +- .../Mobs/Customization/Markings/tattoos.yml | 12 +- .../atmospherics.rsi/equipped-head-harpy.png | Bin 0 -> 559 bytes .../Head/Hardsuits/atmospherics.rsi/meta.json | 4 + .../Head/Hardsuits/capspace.rsi/meta.json | 8 + .../off-equipped-HELMET-harpy.png | Bin 0 -> 1181 bytes .../capspace.rsi/on-equipped-HELMET-harpy.png | Bin 0 -> 1350 bytes .../cybersun.rsi/equipped-HELMET-harpy.png | Bin 0 -> 494 bytes .../Head/Hardsuits/cybersun.rsi/meta.json | 40 ++-- .../Hardsuits/engineering-white.rsi/meta.json | 10 +- .../off-equipped-HELMET-harpy.png | Bin 0 -> 1219 bytes .../on-equipped-HELMET-harpy.png | Bin 0 -> 1623 bytes .../equipped-OUTERCLOTHING-harpy.png | Bin 0 -> 1044 bytes .../Hardsuits/atmospherics.rsi/meta.json | 38 ++-- .../equipped-OUTERCLOTHING-harpy.png | Bin 0 -> 1068 bytes .../Hardsuits/capspace.rsi/meta.json | 38 ++-- .../equipped-OUTERCLOTHING-harpy.png | Bin 0 -> 1365 bytes .../Hardsuits/cybersun.rsi/meta.json | 42 ++-- .../equipped-OUTERCLOTHING-harpy.png | Bin 0 -> 2258 bytes .../Hardsuits/engineering-white.rsi/meta.json | 38 ++-- .../equipped-OUTERCLOTHING-harpy.png | Bin 0 -> 2226 bytes .../Hardsuits/engineering.rsi/meta.json | 40 ++-- .../equipped-OUTERCLOTHING-harpy.png | Bin 0 -> 4020 bytes .../Hardsuits/luxury.rsi/meta.json | 38 ++-- .../equipped-OUTERCLOTHING-harpy.png | Bin 0 -> 2074 bytes .../Hardsuits/medical.rsi/meta.json | 38 ++-- .../equipped-OUTERCLOTHING-harpy.png | Bin 0 -> 2577 bytes .../Hardsuits/paramed.rsi/meta.json | 38 ++-- .../equipped-OUTERCLOTHING-harpy.png | Bin 0 -> 2338 bytes .../Hardsuits/salvage.rsi/meta.json | 38 ++-- .../equipped-OUTERCLOTHING-harpy.png | Bin 0 -> 2376 bytes .../Hardsuits/spatio.rsi/meta.json | 40 ++-- .../equipped-OUTERCLOTHING-harpy.png | Bin 0 -> 1180 bytes .../Hardsuits/syndicate.rsi/meta.json | 38 ++-- .../equipped-OUTERCLOTHING-harpy.png | Bin 0 -> 1198 bytes .../Hardsuits/syndiecommander.rsi/meta.json | 40 ++-- .../equipped-OUTERCLOTHING-harpy.png | Bin 0 -> 1208 bytes .../Hardsuits/syndiemedic.rsi/meta.json | 38 ++-- .../Head/Hardsuits/Combat/hos.rsi/meta.json | 56 +++--- .../hos.rsi/off-equipped-HELMET-harpy.png | Bin 0 -> 915 bytes .../hos.rsi/on-equipped-HELMET-harpy.png | Bin 0 -> 1431 bytes .../Hardsuits/Combat/officer.rsi/meta.json | 56 +++--- .../officer.rsi/off-equipped-HELMET-harpy.png | Bin 0 -> 1252 bytes .../officer.rsi/on-equipped-HELMET-harpy.png | Bin 0 -> 1364 bytes .../Hardsuits/Combat/standard.rsi/meta.json | 56 +++--- .../off-equipped-HELMET-harpy.png | Bin 0 -> 1156 bytes .../standard.rsi/on-equipped-HELMET-harpy.png | Bin 0 -> 1252 bytes .../equipped-OUTERCLOTHING-harpy.png | Bin 0 -> 1347 bytes .../Hardsuits/Combat/advanced.rsi/meta.json | 38 ++-- .../equipped-OUTERCLOTHING-harpy.png | Bin 0 -> 1409 bytes .../Hardsuits/Combat/corpsman.rsi/meta.json | 38 ++-- .../hos.rsi/equipped-OUTERCLOTHING-harpy.png | Bin 0 -> 1414 bytes .../Hardsuits/Combat/hos.rsi/meta.json | 38 ++-- .../equipped-OUTERCLOTHING-harpy.png | Bin 0 -> 1356 bytes .../Hardsuits/Combat/medical.rsi/meta.json | 38 ++-- .../equipped-OUTERCLOTHING-harpy.png | Bin 0 -> 1403 bytes .../Hardsuits/Combat/officer.rsi/meta.json | 38 ++-- .../riot.rsi/equipped-OUTERCLOTHING-harpy.png | Bin 0 -> 1375 bytes .../Hardsuits/Combat/riot.rsi/meta.json | 38 ++-- .../equipped-OUTERCLOTHING-harpy.png | Bin 0 -> 1339 bytes .../Hardsuits/Combat/standard.rsi/meta.json | 38 ++-- .../equipped-OUTERCLOTHING-harpy.png | Bin 0 -> 1446 bytes .../Hardsuits/Combat/warden.rsi/meta.json | 38 ++-- .../Harpy/harpy_chest.rsi/lower.png | Bin 0 -> 309 bytes .../Harpy/harpy_chest.rsi/meta.json | 19 ++ .../Harpy/harpy_chest.rsi/upper.png | Bin 0 -> 380 bytes .../harpy_ears.rsi/harpy_ears_default.png | Bin 786 -> 640 bytes .../Harpy/harpy_legs.rsi/feet.png | Bin 0 -> 335 bytes .../Harpy/harpy_legs.rsi/meta.json | 23 +++ .../Harpy/harpy_legs.rsi/talons.png | Bin 0 -> 190 bytes .../Harpy/harpy_legs.rsi/thighs.png | Bin 0 -> 2301 bytes .../Harpy/harpy_tails.rsi/meta.json | 3 +- .../Harpy/harpy_tails.rsi/phoenix_tail.png | Bin 1076 -> 773 bytes .../Harpy/harpy_tails.rsi/rooster_tail.png | Bin 1052 -> 754 bytes .../Harpy/harpy_tailsx72.rsi/finch_tail.png | Bin 0 -> 475 bytes .../Harpy/harpy_tailsx72.rsi/meta.json | 15 ++ .../Customization/Harpy/harpy_wingcover.png | Bin 0 -> 438 bytes .../Harpy/harpy_wings.rsi/classicharpy.png | Bin 0 -> 1277 bytes .../Harpy/harpy_wings.rsi/harpy.png | Bin 1365 -> 1033 bytes .../Harpy/harpy_wings.rsi/harpy2tone1.png | Bin 813 -> 734 bytes .../Harpy/harpy_wings.rsi/harpy2tone2.png | Bin 1015 -> 1001 bytes .../Harpy/harpy_wings.rsi/harpy3tone1.png | Bin 820 -> 508 bytes .../Harpy/harpy_wings.rsi/harpy3tone2.png | Bin 493 -> 465 bytes .../Harpy/harpy_wings.rsi/harpy3tone3.png | Bin 791 -> 829 bytes .../Harpy/harpy_wings.rsi/harpyfolded.png | Bin 0 -> 1017 bytes .../Harpy/harpy_wings.rsi/harpyspeckled1.png | Bin 1321 -> 1229 bytes .../Harpy/harpy_wings.rsi/harpyspeckled2.png | Bin 749 -> 732 bytes .../Harpy/harpy_wings.rsi/harpyundertone1.png | Bin 1298 -> 1207 bytes .../Harpy/harpy_wings.rsi/harpyundertone2.png | Bin 356 -> 344 bytes .../Harpy/harpy_wings.rsi/harpywingtip1.png | Bin 1132 -> 1038 bytes .../Harpy/harpy_wings.rsi/harpywingtip2.png | Bin 791 -> 824 bytes .../Harpy/harpy_wings.rsi/meta.json | 10 +- .../Mobs/Species/Harpy/organs.rsi/lung-l.png | Bin 0 -> 279 bytes .../Mobs/Species/Harpy/organs.rsi/lung-r.png | Bin 0 -> 275 bytes .../Mobs/Species/Harpy/organs.rsi/meta.json | 17 ++ .../Mobs/Species/Harpy/parts.rsi/full.png | Bin 0 -> 585 bytes .../Mobs/Species/Harpy/parts.rsi/head_f.png | Bin 0 -> 442 bytes .../Mobs/Species/Harpy/parts.rsi/head_m.png | Bin 0 -> 435 bytes .../Mobs/Species/Harpy/parts.rsi/l_arm.png | Bin 0 -> 153 bytes .../Mobs/Species/Harpy/parts.rsi/l_foot.png | Bin 0 -> 272 bytes .../Mobs/Species/Harpy/parts.rsi/l_hand.png | Bin 0 -> 153 bytes .../Mobs/Species/Harpy/parts.rsi/l_leg.png | Bin 0 -> 2285 bytes .../Mobs/Species/Harpy/parts.rsi/meta.json | 62 ++++++ .../Mobs/Species/Harpy/parts.rsi/r_arm.png | Bin 0 -> 154 bytes .../Mobs/Species/Harpy/parts.rsi/r_foot.png | Bin 0 -> 280 bytes .../Mobs/Species/Harpy/parts.rsi/r_hand.png | Bin 0 -> 153 bytes .../Mobs/Species/Harpy/parts.rsi/r_leg.png | Bin 0 -> 2283 bytes .../Mobs/Species/Harpy/parts.rsi/torso_f.png | Bin 0 -> 646 bytes .../Mobs/Species/Harpy/parts.rsi/torso_m.png | Bin 0 -> 602 bytes .../Textures/DeltaV/Shaders/ultravision.swsl | 14 ++ 137 files changed, 1572 insertions(+), 510 deletions(-) create mode 100644 Content.Client/DeltaV/Harpy/HarpyVisualsComponent.cs create mode 100644 Content.Client/DeltaV/Overlays/UltraVisionOverlay.cs create mode 100644 Content.Client/DeltaV/Overlays/UltraVisionSystem.cs create mode 100644 Content.Shared/DeltaV/Abilities/DefaultVisionComponent.cs create mode 100644 Content.Shared/DeltaV/Abilities/DefaultVisionSystem.cs create mode 100644 Content.Shared/DeltaV/Abilities/UltraVisionComponent.cs create mode 100644 Content.Shared/DeltaV/Harpy/HarpyVisualsSystem.cs create mode 100644 Content.Shared/DeltaV/Harpy/SharedHarpyVisualsComponent.cs create mode 100644 Resources/Prototypes/DeltaV/Body/Parts/harpy.yml create mode 100644 Resources/Prototypes/DeltaV/InventoryTemplates/digitigrade_inventory_template.yml create mode 100644 Resources/Prototypes/DeltaV/Shaders/birdvision.yml create mode 100644 Resources/Prototypes/DeltaV/Traits/altvision.yml create mode 100644 Resources/Textures/Clothing/Head/Hardsuits/atmospherics.rsi/equipped-head-harpy.png create mode 100644 Resources/Textures/Clothing/Head/Hardsuits/capspace.rsi/off-equipped-HELMET-harpy.png create mode 100644 Resources/Textures/Clothing/Head/Hardsuits/capspace.rsi/on-equipped-HELMET-harpy.png create mode 100644 Resources/Textures/Clothing/Head/Hardsuits/cybersun.rsi/equipped-HELMET-harpy.png create mode 100644 Resources/Textures/Clothing/Head/Hardsuits/engineering-white.rsi/off-equipped-HELMET-harpy.png create mode 100644 Resources/Textures/Clothing/Head/Hardsuits/engineering-white.rsi/on-equipped-HELMET-harpy.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Hardsuits/atmospherics.rsi/equipped-OUTERCLOTHING-harpy.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Hardsuits/capspace.rsi/equipped-OUTERCLOTHING-harpy.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Hardsuits/cybersun.rsi/equipped-OUTERCLOTHING-harpy.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Hardsuits/engineering-white.rsi/equipped-OUTERCLOTHING-harpy.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Hardsuits/engineering.rsi/equipped-OUTERCLOTHING-harpy.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Hardsuits/luxury.rsi/equipped-OUTERCLOTHING-harpy.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Hardsuits/medical.rsi/equipped-OUTERCLOTHING-harpy.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Hardsuits/paramed.rsi/equipped-OUTERCLOTHING-harpy.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Hardsuits/salvage.rsi/equipped-OUTERCLOTHING-harpy.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Hardsuits/spatio.rsi/equipped-OUTERCLOTHING-harpy.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Hardsuits/syndicate.rsi/equipped-OUTERCLOTHING-harpy.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Hardsuits/syndiecommander.rsi/equipped-OUTERCLOTHING-harpy.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Hardsuits/syndiemedic.rsi/equipped-OUTERCLOTHING-harpy.png create mode 100644 Resources/Textures/DeltaV/Clothing/Head/Hardsuits/Combat/hos.rsi/off-equipped-HELMET-harpy.png create mode 100644 Resources/Textures/DeltaV/Clothing/Head/Hardsuits/Combat/hos.rsi/on-equipped-HELMET-harpy.png create mode 100644 Resources/Textures/DeltaV/Clothing/Head/Hardsuits/Combat/officer.rsi/off-equipped-HELMET-harpy.png create mode 100644 Resources/Textures/DeltaV/Clothing/Head/Hardsuits/Combat/officer.rsi/on-equipped-HELMET-harpy.png create mode 100644 Resources/Textures/DeltaV/Clothing/Head/Hardsuits/Combat/standard.rsi/off-equipped-HELMET-harpy.png create mode 100644 Resources/Textures/DeltaV/Clothing/Head/Hardsuits/Combat/standard.rsi/on-equipped-HELMET-harpy.png create mode 100644 Resources/Textures/DeltaV/Clothing/OuterClothing/Hardsuits/Combat/advanced.rsi/equipped-OUTERCLOTHING-harpy.png create mode 100644 Resources/Textures/DeltaV/Clothing/OuterClothing/Hardsuits/Combat/corpsman.rsi/equipped-OUTERCLOTHING-harpy.png create mode 100644 Resources/Textures/DeltaV/Clothing/OuterClothing/Hardsuits/Combat/hos.rsi/equipped-OUTERCLOTHING-harpy.png create mode 100644 Resources/Textures/DeltaV/Clothing/OuterClothing/Hardsuits/Combat/medical.rsi/equipped-OUTERCLOTHING-harpy.png create mode 100644 Resources/Textures/DeltaV/Clothing/OuterClothing/Hardsuits/Combat/officer.rsi/equipped-OUTERCLOTHING-harpy.png create mode 100644 Resources/Textures/DeltaV/Clothing/OuterClothing/Hardsuits/Combat/riot.rsi/equipped-OUTERCLOTHING-harpy.png create mode 100644 Resources/Textures/DeltaV/Clothing/OuterClothing/Hardsuits/Combat/standard.rsi/equipped-OUTERCLOTHING-harpy.png create mode 100644 Resources/Textures/DeltaV/Clothing/OuterClothing/Hardsuits/Combat/warden.rsi/equipped-OUTERCLOTHING-harpy.png create mode 100644 Resources/Textures/DeltaV/Mobs/Customization/Harpy/harpy_chest.rsi/lower.png create mode 100644 Resources/Textures/DeltaV/Mobs/Customization/Harpy/harpy_chest.rsi/meta.json create mode 100644 Resources/Textures/DeltaV/Mobs/Customization/Harpy/harpy_chest.rsi/upper.png create mode 100644 Resources/Textures/DeltaV/Mobs/Customization/Harpy/harpy_legs.rsi/feet.png create mode 100644 Resources/Textures/DeltaV/Mobs/Customization/Harpy/harpy_legs.rsi/meta.json create mode 100644 Resources/Textures/DeltaV/Mobs/Customization/Harpy/harpy_legs.rsi/talons.png create mode 100644 Resources/Textures/DeltaV/Mobs/Customization/Harpy/harpy_legs.rsi/thighs.png create mode 100644 Resources/Textures/DeltaV/Mobs/Customization/Harpy/harpy_tailsx72.rsi/finch_tail.png create mode 100644 Resources/Textures/DeltaV/Mobs/Customization/Harpy/harpy_tailsx72.rsi/meta.json create mode 100644 Resources/Textures/DeltaV/Mobs/Customization/Harpy/harpy_wingcover.png create mode 100644 Resources/Textures/DeltaV/Mobs/Customization/Harpy/harpy_wings.rsi/classicharpy.png create mode 100644 Resources/Textures/DeltaV/Mobs/Customization/Harpy/harpy_wings.rsi/harpyfolded.png create mode 100644 Resources/Textures/DeltaV/Mobs/Species/Harpy/organs.rsi/lung-l.png create mode 100644 Resources/Textures/DeltaV/Mobs/Species/Harpy/organs.rsi/lung-r.png create mode 100644 Resources/Textures/DeltaV/Mobs/Species/Harpy/organs.rsi/meta.json create mode 100644 Resources/Textures/DeltaV/Mobs/Species/Harpy/parts.rsi/full.png create mode 100644 Resources/Textures/DeltaV/Mobs/Species/Harpy/parts.rsi/head_f.png create mode 100644 Resources/Textures/DeltaV/Mobs/Species/Harpy/parts.rsi/head_m.png create mode 100644 Resources/Textures/DeltaV/Mobs/Species/Harpy/parts.rsi/l_arm.png create mode 100644 Resources/Textures/DeltaV/Mobs/Species/Harpy/parts.rsi/l_foot.png create mode 100644 Resources/Textures/DeltaV/Mobs/Species/Harpy/parts.rsi/l_hand.png create mode 100644 Resources/Textures/DeltaV/Mobs/Species/Harpy/parts.rsi/l_leg.png create mode 100644 Resources/Textures/DeltaV/Mobs/Species/Harpy/parts.rsi/meta.json create mode 100644 Resources/Textures/DeltaV/Mobs/Species/Harpy/parts.rsi/r_arm.png create mode 100644 Resources/Textures/DeltaV/Mobs/Species/Harpy/parts.rsi/r_foot.png create mode 100644 Resources/Textures/DeltaV/Mobs/Species/Harpy/parts.rsi/r_hand.png create mode 100644 Resources/Textures/DeltaV/Mobs/Species/Harpy/parts.rsi/r_leg.png create mode 100644 Resources/Textures/DeltaV/Mobs/Species/Harpy/parts.rsi/torso_f.png create mode 100644 Resources/Textures/DeltaV/Mobs/Species/Harpy/parts.rsi/torso_m.png create mode 100644 Resources/Textures/DeltaV/Shaders/ultravision.swsl diff --git a/Content.Client/DeltaV/Harpy/HarpyVisualsComponent.cs b/Content.Client/DeltaV/Harpy/HarpyVisualsComponent.cs new file mode 100644 index 00000000000..1c3253c74ef --- /dev/null +++ b/Content.Client/DeltaV/Harpy/HarpyVisualsComponent.cs @@ -0,0 +1,5 @@ +namespace Content.Client.DeltaV.Harpy; + +[RegisterComponent] +public sealed partial class HarpyVisualsComponent : Component +{ } diff --git a/Content.Client/DeltaV/Overlays/UltraVisionOverlay.cs b/Content.Client/DeltaV/Overlays/UltraVisionOverlay.cs new file mode 100644 index 00000000000..73c05e052b6 --- /dev/null +++ b/Content.Client/DeltaV/Overlays/UltraVisionOverlay.cs @@ -0,0 +1,44 @@ +using Robust.Client.Graphics; +using Robust.Client.Player; +using Robust.Shared.Enums; +using Robust.Shared.Prototypes; +using Content.Shared.Abilities; + +namespace Content.Client.DeltaV.Overlays; + +public sealed partial class UltraVisionOverlay : Overlay +{ + [Dependency] private readonly IPrototypeManager _prototypeManager = default!; + [Dependency] private readonly IPlayerManager _playerManager = default!; + [Dependency] IEntityManager _entityManager = default!; + + + public override bool RequestScreenTexture => true; + public override OverlaySpace Space => OverlaySpace.WorldSpace; + private readonly ShaderInstance _ultraVisionShader; + + public UltraVisionOverlay() + { + IoCManager.InjectDependencies(this); + _ultraVisionShader = _prototypeManager.Index("UltraVision").Instance().Duplicate(); + } + + protected override void Draw(in OverlayDrawArgs args) + { + if (ScreenTexture == null) + return; + if (_playerManager.LocalPlayer?.ControlledEntity is not {Valid: true} player) + return; + if (!_entityManager.HasComponent(player)) + return; + + _ultraVisionShader?.SetParameter("SCREEN_TEXTURE", ScreenTexture); + + + var worldHandle = args.WorldHandle; + var viewport = args.WorldBounds; + worldHandle.SetTransform(Matrix3.Identity); + worldHandle.UseShader(_ultraVisionShader); + worldHandle.DrawRect(viewport, Color.White); + } +} diff --git a/Content.Client/DeltaV/Overlays/UltraVisionSystem.cs b/Content.Client/DeltaV/Overlays/UltraVisionSystem.cs new file mode 100644 index 00000000000..00a0f362421 --- /dev/null +++ b/Content.Client/DeltaV/Overlays/UltraVisionSystem.cs @@ -0,0 +1,31 @@ +using Content.Shared.Abilities; +using Robust.Client.Graphics; + +namespace Content.Client.DeltaV.Overlays; + +public sealed partial class UltraVisionSystem : EntitySystem +{ + [Dependency] private readonly IOverlayManager _overlayMan = default!; + + private UltraVisionOverlay _overlay = default!; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnUltraVisionInit); + SubscribeLocalEvent(OnUltraVisionShutdown); + + _overlay = new(); + } + + private void OnUltraVisionInit(EntityUid uid, UltraVisionComponent component, ComponentInit args) + { + _overlayMan.AddOverlay(_overlay); + } + + private void OnUltraVisionShutdown(EntityUid uid, UltraVisionComponent component, ComponentShutdown args) + { + _overlayMan.RemoveOverlay(_overlay); + } +} diff --git a/Content.Shared/DeltaV/Abilities/DefaultVisionComponent.cs b/Content.Shared/DeltaV/Abilities/DefaultVisionComponent.cs new file mode 100644 index 00000000000..0126450e5d4 --- /dev/null +++ b/Content.Shared/DeltaV/Abilities/DefaultVisionComponent.cs @@ -0,0 +1,8 @@ +using Robust.Shared.GameStates; +namespace Content.Shared.DeltaV.Abilities; + +[RegisterComponent] +[NetworkedComponent] + +public sealed partial class DefaultVisionComponent : Component +{} diff --git a/Content.Shared/DeltaV/Abilities/DefaultVisionSystem.cs b/Content.Shared/DeltaV/Abilities/DefaultVisionSystem.cs new file mode 100644 index 00000000000..599fc0db140 --- /dev/null +++ b/Content.Shared/DeltaV/Abilities/DefaultVisionSystem.cs @@ -0,0 +1,19 @@ +using Content.Shared.Abilities; +using Content.Shared.DeltaV.Abilities; + +namespace Content.Client.DeltaV.Overlays; + +public sealed partial class DefaultVisionSystem : EntitySystem +{ + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnDefaultVisionInit); + } + + private void OnDefaultVisionInit(EntityUid uid, DefaultVisionComponent component, ComponentInit args) + { + RemComp(uid); + } +} diff --git a/Content.Shared/DeltaV/Abilities/UltraVisionComponent.cs b/Content.Shared/DeltaV/Abilities/UltraVisionComponent.cs new file mode 100644 index 00000000000..5f631c54f25 --- /dev/null +++ b/Content.Shared/DeltaV/Abilities/UltraVisionComponent.cs @@ -0,0 +1,8 @@ +using Robust.Shared.GameStates; +namespace Content.Shared.Abilities; + +[RegisterComponent] +[NetworkedComponent] + +public sealed partial class UltraVisionComponent : Component +{} diff --git a/Content.Shared/DeltaV/Harpy/HarpySingerComponent.cs b/Content.Shared/DeltaV/Harpy/HarpySingerComponent.cs index 1ee3f795d58..f2edeeb8726 100644 --- a/Content.Shared/DeltaV/Harpy/HarpySingerComponent.cs +++ b/Content.Shared/DeltaV/Harpy/HarpySingerComponent.cs @@ -1,6 +1,7 @@ using Robust.Shared.GameStates; using Robust.Shared.Prototypes; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; +using Robust.Shared.Serialization; namespace Content.Shared.DeltaV.Harpy { diff --git a/Content.Shared/DeltaV/Harpy/HarpyVisualsSystem.cs b/Content.Shared/DeltaV/Harpy/HarpyVisualsSystem.cs new file mode 100644 index 00000000000..f75fcee8d42 --- /dev/null +++ b/Content.Shared/DeltaV/Harpy/HarpyVisualsSystem.cs @@ -0,0 +1,40 @@ +using Content.Shared.Inventory.Events; +using Content.Shared.Tag; +using Content.Shared.Humanoid; + +namespace Content.Shared.DeltaV.Harpy; + +public sealed class HarpyVisualsSystem : EntitySystem +{ + [Dependency] private readonly TagSystem _tagSystem = default!; + [Dependency] private readonly SharedHumanoidAppearanceSystem _humanoidSystem = default!; + + [ValidatePrototypeId] + private const string HarpyWingsTag = "HidesHarpyWings"; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnDidEquipEvent); + SubscribeLocalEvent(OnDidUnequipEvent); + } + + private void OnDidEquipEvent(EntityUid uid, HarpySingerComponent component, DidEquipEvent args) + { + if (args.Slot == "outerClothing" && _tagSystem.HasTag(args.Equipment, HarpyWingsTag)) + { + _humanoidSystem.SetLayerVisibility(uid, HumanoidVisualLayers.RArm, false); + _humanoidSystem.SetLayerVisibility(uid, HumanoidVisualLayers.Tail, false); + } + } + + private void OnDidUnequipEvent(EntityUid uid, HarpySingerComponent component, DidUnequipEvent args) + { + if (args.Slot == "outerClothing" && _tagSystem.HasTag(args.Equipment, HarpyWingsTag)) + { + _humanoidSystem.SetLayerVisibility(uid, HumanoidVisualLayers.RArm, true); + _humanoidSystem.SetLayerVisibility(uid, HumanoidVisualLayers.Tail, true); + } + } +} diff --git a/Content.Shared/DeltaV/Harpy/SharedHarpyVisualsComponent.cs b/Content.Shared/DeltaV/Harpy/SharedHarpyVisualsComponent.cs new file mode 100644 index 00000000000..cc0f7c39354 --- /dev/null +++ b/Content.Shared/DeltaV/Harpy/SharedHarpyVisualsComponent.cs @@ -0,0 +1,9 @@ +using Robust.Shared.Serialization; + +namespace Content.Shared.DeltaV.Harpy; + +[Serializable, NetSerializable] +public enum HardsuitWings : byte +{ + Worn +} diff --git a/Content.Shared/Roles/StartingGearPrototype.cs b/Content.Shared/Roles/StartingGearPrototype.cs index 0d4122b6466..1e7881113fe 100644 --- a/Content.Shared/Roles/StartingGearPrototype.cs +++ b/Content.Shared/Roles/StartingGearPrototype.cs @@ -1,3 +1,4 @@ +using Content.Shared.DeltaV.Harpy; using Content.Shared.Preferences; using Robust.Shared.Prototypes; @@ -32,7 +33,8 @@ public string GetGear(string slot, HumanoidCharacterProfile? profile) { if (profile != null) { - if (slot == "jumpsuit" && profile.Clothing == ClothingPreference.Jumpskirt && !string.IsNullOrEmpty(InnerClothingSkirt)) + if (slot == "jumpsuit" && profile.Clothing == ClothingPreference.Jumpskirt && !string.IsNullOrEmpty(InnerClothingSkirt) + || slot == "jumpsuit" && profile.Species == "Harpy" && !string.IsNullOrEmpty(InnerClothingSkirt)) //DeltaV adds this line to prevent Harpies from starting with jumpsuits return InnerClothingSkirt; if (slot == "back" && profile.Backpack == BackpackPreference.Satchel && !string.IsNullOrEmpty(Satchel)) return Satchel; diff --git a/Resources/Locale/en-US/deltav/chat/managers/chat_manager.ftl b/Resources/Locale/en-US/deltav/chat/managers/chat_manager.ftl index bd8719fd56b..fd5635de4a9 100644 --- a/Resources/Locale/en-US/deltav/chat/managers/chat_manager.ftl +++ b/Resources/Locale/en-US/deltav/chat/managers/chat_manager.ftl @@ -7,3 +7,8 @@ chat-speech-verb-felinid-1 = mraows chat-speech-verb-felinid-2 = mews chat-speech-verb-felinid-3 = meows chat-speech-verb-felinid-4 = purrs out + +chat-speech-verb-harpy-1 = chirps +chat-speech-verb-harpy-2 = tweets +chat-speech-verb-harpy-3 = caws +chat-speech-verb-harpy-4 = trills diff --git a/Resources/Locale/en-US/deltav/markings/harpy.ftl b/Resources/Locale/en-US/deltav/markings/harpy.ftl index c2e9beb5c87..3c1a2e3b9b2 100644 --- a/Resources/Locale/en-US/deltav/markings/harpy.ftl +++ b/Resources/Locale/en-US/deltav/markings/harpy.ftl @@ -1,26 +1,32 @@ marking-HarpyWingDefault = Basic Wings marking-HarpyWingDefault-harpy = Wings -marking-HarpyWing2Tone = Two Tone Wings -marking-HarpyWing2Tone-harpy2tone1 = Top Half -marking-HarpyWing2Tone-harpy2tone2 = Bottom Half +marking-HarpyWingFolded = Folded Wings +marking-HarpyWingFolded-harpyfolded = Wings -marking-HarpyWing3Tone = Three Tone Wings -marking-HarpyWing3Tone-harpy3tone1 = Top Third -marking-HarpyWing3Tone-harpy3tone2 = Middle Third -marking-HarpyWing3tone-harpy3tone3 = Bottom Third +marking-HarpyWingClassic = Classic Wings +marking-HarpyWingClassic-classicharpy = Wings -marking-HarpyWingSpeckled = Speckled Wings -marking-HarpyWingSpeckled-harpyspeckled1 = Main -marking-HarpyWingSpeckled-harpyspeckled2 = Speckles +marking-HarpyWing2ToneClassic = Classic Two Tone Wings +marking-HarpyWing2ToneClassic-harpy2tone1 = Top Half +marking-HarpyWing2ToneClassic-harpy2tone2 = Bottom Half -marking-HarpyWingUndertone = Wings with Undertone -marking-HarpyWingUndertone-harpyundertone1 = Front -marking-HarpyWingUndertone-harpyundertone2 = Back +marking-HarpyWing3ToneClassic = Classic Three Tone Wings +marking-HarpyWing3ToneClassic-harpy3tone1 = Top Third +marking-HarpyWing3ToneClassic-harpy3tone2 = Middle Third +marking-HarpyWing3ToneClassic-harpy3tone3 = Bottom Third -marking-HarpyWingTips = Wings with Feather Tips -marking-HarpyWingTips-harpywingtip1 = Main -marking-HarpyWingTips-harpywingtip2 = Feathertips +marking-HarpyWingSpeckledClassic = Speckled Classic Wings +marking-HarpyWingSpeckledClassic-harpyspeckled1 = Main +marking-HarpyWingSpeckledClassic-harpyspeckled2 = Speckles + +marking-HarpyWingUndertoneClassic = Classic Wings with Undertone +marking-HarpyWingUndertoneClassic-harpyundertone1 = Front +marking-HarpyWingUndertoneClassic-harpyundertone2 = Back + +marking-HarpyWingTipsClassic = Classic Wings with Feather Tips +marking-HarpyWingTipsClassic-harpywingtip1 = Main +marking-HarpyWingTipsClassic-harpywingtip2 = Feathertips marking-HarpyEarsDefault = Feather Tufts marking-HarpyEarsDefault-harpy_ears_default = Tufts @@ -30,3 +36,17 @@ marking-HarpyTailPhoenix-phoenix_tail = Tail marking-HarpyTailRooster = Rooster Tail marking-HarpyTailRooster-rooster_tail = Tail + +marking-HarpyTailFinch = Finch Tail +marking-HarpyTailFinch-finch_tail = Tail + +marking-HarpyChestDefault = Wing & Groin Under-Clothes +marking-HarpyChestDefault-upper = Wing Under-Clothes +marking-HarpyChestDefault-lower = Groin Under-Clothes + +marking-HarpyLegsDefault = Avian Legs +marking-HarpyLegsDefault-thighs = Thighs + +marking-HarpyFeetDefault = Avian Feet +marking-HarpyFeetDefault-feet = Feet +marking-HarpyFeetDefault-talons = Talons diff --git a/Resources/Locale/en-US/deltav/traits/traits.ftl b/Resources/Locale/en-US/deltav/traits/traits.ftl index 6698832a8cf..0eaff0408a4 100644 --- a/Resources/Locale/en-US/deltav/traits/traits.ftl +++ b/Resources/Locale/en-US/deltav/traits/traits.ftl @@ -1,5 +1,9 @@ trait-scottish-accent-name = Scottish Accent trait-scottish-accent-desc = Fer tha folk who come frae Hielan clan. +trait-ultravision-desc = Whether through custom bionic eyes, random mutation, + or being a Harpy, you perceive the world with ultraviolet light. + +trait-defaultvision-desc = You lack any vision variation from the norm for a non-human species. trait-uncloneable-name = Uncloneable trait-uncloneable-desc = Cannot be cloned diff --git a/Resources/Prototypes/DeltaV/Body/Parts/harpy.yml b/Resources/Prototypes/DeltaV/Body/Parts/harpy.yml new file mode 100644 index 00000000000..358cb1de11f --- /dev/null +++ b/Resources/Prototypes/DeltaV/Body/Parts/harpy.yml @@ -0,0 +1,186 @@ +- type: entity + id: PartHarpy + parent: BaseItem + name: "harpy body part" + abstract: true + components: + - type: Damageable + damageContainer: Biological + - type: BodyPart + - type: ContainerContainer + containers: + bodypart: !type:Container + ents: [] + - type: StaticPrice #DynamicPrice + price: 100 + - type: Tag + tags: + - Trash + +- type: entity + id: TorsoHarpy + name: "harpy torso" + parent: PartHarpy + components: + - type: Sprite + netsync: false + sprite: DeltaV/Mobs/Species/Harpy/parts.rsi + state: "torso_m" + - type: Icon + sprite: DeltaV/Mobs/Species/Harpy/parts.rsi + state: "torso_m" + - type: BodyPart + partType: Torso + +- type: entity + id: HeadHarpy + name: "harpy head" + parent: PartHarpy + components: + - type: Sprite + netsync: false + sprite: DeltaV/Mobs/Species/Harpy/parts.rsi + state: "head_m" + - type: Icon + sprite: DeltaV/Mobs/Species/Harpy/parts.rsi + state: "head_m" + - type: BodyPart + partType: Head + vital: true + - type: Input + context: "ghost" + - type: InputMover + - type: GhostOnMove + - type: Tag + tags: + - Head + +- type: entity + id: LeftArmHarpy + name: "left harpy arm" + parent: PartHarpy + components: + - type: Sprite + netsync: false + sprite: DeltaV/Mobs/Species/Harpy/parts.rsi + state: "l_arm" + - type: Icon + sprite: DeltaV/Mobs/Species/Harpy/parts.rsi + state: "l_arm" + - type: BodyPart + partType: Arm + symmetry: Left + +- type: entity + id: RightArmHarpy + name: "right harpy arm" + parent: PartHarpy + components: + - type: Sprite + netsync: false + sprite: DeltaV/Mobs/Species/Harpy/parts.rsi + state: "r_arm" + - type: Icon + sprite: DeltaV/Mobs/Species/Harpy/parts.rsi + state: "r_arm" + - type: BodyPart + partType: Arm + symmetry: Right + +- type: entity + id: LeftHandHarpy + name: "left harpy hand" + parent: PartHarpy + components: + - type: Sprite + netsync: false + sprite: DeltaV/Mobs/Species/Harpy/parts.rsi + state: "l_hand" + - type: Icon + sprite: DeltaV/Mobs/Species/Harpy/parts.rsi + state: "l_hand" + - type: BodyPart + partType: Hand + symmetry: Left + +- type: entity + id: RightHandHarpy + name: "right harpy hand" + parent: PartHarpy + components: + - type: Sprite + netsync: false + sprite: DeltaV/Mobs/Species/Harpy/parts.rsi + state: "r_hand" + - type: Icon + sprite: DeltaV/Mobs/Species/Harpy/parts.rsi + state: "r_hand" + - type: BodyPart + partType: Hand + symmetry: Right + +- type: entity + id: LeftLegHarpy + name: "left harpy leg" + parent: PartHarpy + components: + - type: Sprite + netsync: false + sprite: DeltaV/Mobs/Species/Harpy/parts.rsi + state: "l_leg" + - type: Icon + sprite: DeltaV/Mobs/Species/Harpy/parts.rsi + state: "l_leg" + - type: BodyPart + partType: Leg + symmetry: Left + - type: MovementBodyPart + +- type: entity + id: RightLegHarpy + name: "right harpy leg" + parent: PartHarpy + components: + - type: Sprite + netsync: false + sprite: DeltaV/Mobs/Species/Harpy/parts.rsi + state: "r_leg" + - type: Icon + sprite: DeltaV/Mobs/Species/Harpy/parts.rsi + state: "r_leg" + - type: BodyPart + partType: Leg + symmetry: Right + - type: MovementBodyPart + +- type: entity + id: LeftFootHarpy + name: "left harpy foot" + parent: PartHarpy + components: + - type: Sprite + netsync: false + sprite: DeltaV/Mobs/Species/Harpy/parts.rsi + state: "l_foot" + - type: Icon + sprite: DeltaV/Mobs/Species/Harpy/parts.rsi + state: "l_foot" + - type: BodyPart + partType: Foot + symmetry: Left + +- type: entity + id: RightFootHarpy + name: "right harpy foot" + parent: PartHarpy + components: + - type: Sprite + netsync: false + sprite: DeltaV/Mobs/Species/Harpy/parts.rsi + state: "r_foot" + - type: Icon + sprite: DeltaV/Mobs/Species/Harpy/parts.rsi + state: "r_foot" + - type: BodyPart + partType: Foot + symmetry: Right diff --git a/Resources/Prototypes/DeltaV/Body/Prototypes/harpy.yml b/Resources/Prototypes/DeltaV/Body/Prototypes/harpy.yml index 65073a778fa..5b3615c55d8 100644 --- a/Resources/Prototypes/DeltaV/Body/Prototypes/harpy.yml +++ b/Resources/Prototypes/DeltaV/Body/Prototypes/harpy.yml @@ -4,14 +4,14 @@ root: torso slots: head: - part: HeadHuman + part: HeadHarpy connections: - torso organs: brain: OrganHumanBrain eyes: OrganHumanEyes torso: - part: TorsoHuman + part: TorsoHarpy connections: - left arm - right arm @@ -20,31 +20,31 @@ organs: heart: OrganHumanHeart lungs: OrganHarpyLungs - stomach: OrganHumanStomach - liver: OrganHumanLiver - kidneys: OrganHumanKidneys + stomach: OrganAnimalStomach + liver: OrganAnimalLiver + kidneys: OrganAnimalKidneys right arm: - part: RightArmHuman + part: RightArmHarpy connections: - right hand left arm: - part: LeftArmHuman + part: LeftArmHarpy connections: - left hand right hand: - part: RightHandHuman + part: RightHandHarpy left hand: - part: LeftHandHuman + part: LeftHandHarpy right leg: - part: RightLegHuman + part: RightLegHarpy connections: - right foot left leg: - part: LeftLegHuman + part: LeftLegHarpy connections: - left foot right foot: - part: RightFootHuman + part: RightFootHarpy left foot: - part: LeftFootHuman + part: LeftFootHarpy diff --git a/Resources/Prototypes/DeltaV/Entities/Mobs/Customization/Markings/harpy.yml b/Resources/Prototypes/DeltaV/Entities/Mobs/Customization/Markings/harpy.yml index 9ea84c4d0a2..9118692a082 100644 --- a/Resources/Prototypes/DeltaV/Entities/Mobs/Customization/Markings/harpy.yml +++ b/Resources/Prototypes/DeltaV/Entities/Mobs/Customization/Markings/harpy.yml @@ -18,6 +18,40 @@ - sprite: DeltaV/Mobs/Customization/Harpy/harpy_wings.rsi state: harpy +- type: marking + id: HarpyWingClassic + bodyPart: RArm + markingCategory: Arms + speciesRestriction: [Harpy] + coloring: + default: + type: + !type:CategoryColoring + category: Hair + fallbackTypes: + - !type:SimpleColoring + color: "#964b00" + sprites: + - sprite: DeltaV/Mobs/Customization/Harpy/harpy_wings.rsi + state: classicharpy + +- type: marking + id: HarpyWingFolded + bodyPart: RArm + markingCategory: Arms + speciesRestriction: [Harpy] + coloring: + default: + type: + !type:CategoryColoring + category: Hair + fallbackTypes: + - !type:SimpleColoring + color: "#964b00" + sprites: + - sprite: DeltaV/Mobs/Customization/Harpy/harpy_wings.rsi + state: harpyfolded + - type: marking id: HarpyEarsDefault bodyPart: Head @@ -57,12 +91,36 @@ bodyPart: Tail markingCategory: Tail speciesRestriction: [Harpy] + coloring: + default: + type: + !type:CategoryColoring + category: Hair + fallbackTypes: + - !type:SimpleColoring sprites: - sprite: DeltaV/Mobs/Customization/Harpy/harpy_tails.rsi - state: rooster_tail + state: rooster_tail + + +- type: marking + id: HarpyTailFinch + bodyPart: Tail + markingCategory: Tail + speciesRestriction: [Harpy] + coloring: + default: + type: + !type:CategoryColoring + category: Hair + fallbackTypes: + - !type:SimpleColoring + sprites: + - sprite: DeltaV/Mobs/Customization/Harpy/harpy_tailsx72.rsi + state: finch_tail - type: marking - id: HarpyWing2Tone + id: HarpyWing2ToneClassic bodyPart: RArm markingCategory: Arms speciesRestriction: [Harpy] @@ -73,7 +131,7 @@ state: harpy2tone2 - type: marking - id: HarpyWing3Tone + id: HarpyWing3ToneClassic bodyPart: RArm markingCategory: Arms speciesRestriction: [Harpy] @@ -86,7 +144,7 @@ state: harpy3tone3 - type: marking - id: HarpyWingSpeckled + id: HarpyWingSpeckledClassic bodyPart: RArm markingCategory: Arms speciesRestriction: [Harpy] @@ -97,7 +155,7 @@ state: harpyspeckled2 - type: marking - id: HarpyWingUndertone + id: HarpyWingUndertoneClassic bodyPart: RArm markingCategory: Arms speciesRestriction: [Harpy] @@ -108,7 +166,7 @@ state: harpyundertone2 - type: marking - id: HarpyWingTips + id: HarpyWingTipsClassic bodyPart: RArm markingCategory: Arms speciesRestriction: [Harpy] @@ -117,3 +175,55 @@ state: harpywingtip1 - sprite: DeltaV/Mobs/Customization/Harpy/harpy_wings.rsi state: harpywingtip2 + +- type: marking + id: HarpyChestDefault + bodyPart: Chest + markingCategory: Chest + speciesRestriction: [Harpy] + coloring: + default: + type: + !type:CategoryColoring + category: Hair + fallbackTypes: + - !type:SimpleColoring + color: "#964b00" + sprites: + - sprite: DeltaV/Mobs/Customization/Harpy/harpy_chest.rsi + state: upper + - sprite: DeltaV/Mobs/Customization/Harpy/harpy_chest.rsi + state: lower + +- type: marking + id: HarpyLegsDefault + bodyPart: LLeg + markingCategory: Legs + speciesRestriction: [Harpy] + coloring: + default: + type: + !type:CategoryColoring + category: Hair + fallbackTypes: + - !type:SimpleColoring + color: "#964b00" + sprites: + - sprite: DeltaV/Mobs/Customization/Harpy/harpy_legs.rsi + state: thighs + +- type: marking + id: HarpyFeetDefault + bodyPart: RFoot + markingCategory: Legs + speciesRestriction: [Harpy] + coloring: + default: + fallbackTypes: + - !type:SimpleColoring + color: "#964b00" + sprites: + - sprite: DeltaV/Mobs/Customization/Harpy/harpy_legs.rsi + state: feet + - sprite: DeltaV/Mobs/Customization/Harpy/harpy_legs.rsi + state: talons diff --git a/Resources/Prototypes/DeltaV/Entities/Mobs/Species/harpy.yml b/Resources/Prototypes/DeltaV/Entities/Mobs/Species/harpy.yml index 7548add4969..a4498299c9a 100644 --- a/Resources/Prototypes/DeltaV/Entities/Mobs/Species/harpy.yml +++ b/Resources/Prototypes/DeltaV/Entities/Mobs/Species/harpy.yml @@ -106,7 +106,8 @@ types: Piercing: 5 - type: Speech - speechSounds: Alto + speechSounds: Harpy + speechVerb: Harpy - type: Vocal sounds: Male: SoundsHarpy @@ -121,6 +122,11 @@ - type: MovementSpeedModifier baseWalkSpeed: 2.5 baseSprintSpeed: 5.0 + - type: Inventory + speciesId: harpy + templateId: digitigrade + - type: HarpyVisuals + - type: UltraVision - type: entity save: false @@ -132,6 +138,8 @@ components: - type: HumanoidAppearance species: Harpy + - type: Inventory + speciesId: harpy - type: Sprite scale: 0.9, 0.9 layers: diff --git a/Resources/Prototypes/DeltaV/InventoryTemplates/digitigrade_inventory_template.yml b/Resources/Prototypes/DeltaV/InventoryTemplates/digitigrade_inventory_template.yml new file mode 100644 index 00000000000..158541571aa --- /dev/null +++ b/Resources/Prototypes/DeltaV/InventoryTemplates/digitigrade_inventory_template.yml @@ -0,0 +1,119 @@ +- type: inventoryTemplate + id: digitigrade + slots: + - name: shoes + slotTexture: shoes + slotFlags: FEET + stripTime: 3 + uiWindowPos: 1,0 + strippingWindowPos: 1,3 + displayName: Shoes + - name: jumpsuit + slotTexture: uniform + slotFlags: INNERCLOTHING + stripTime: 6 + uiWindowPos: 0,1 + strippingWindowPos: 0,2 + displayName: Jumpsuit + whitelist: + tags: + - Skirt + - name: outerClothing + slotTexture: suit + slotFlags: OUTERCLOTHING + stripTime: 6 + uiWindowPos: 1,1 + strippingWindowPos: 1,2 + displayName: Suit + - name: gloves + slotTexture: gloves + slotFlags: GLOVES + uiWindowPos: 2,1 + strippingWindowPos: 2,2 + displayName: Gloves + - name: neck + slotTexture: neck + slotFlags: NECK + uiWindowPos: 0,2 + strippingWindowPos: 0,1 + displayName: Neck + - name: mask + slotTexture: mask + slotFlags: MASK + uiWindowPos: 1,2 + strippingWindowPos: 1,1 + displayName: Mask + - name: eyes + slotTexture: glasses + slotFlags: EYES + stripTime: 3 + uiWindowPos: 0,3 + strippingWindowPos: 0,0 + displayName: Eyes + - name: ears + slotTexture: ears + slotFlags: EARS + stripTime: 3 + uiWindowPos: 2,2 + strippingWindowPos: 2,0 + displayName: Ears + - name: head + slotTexture: head + slotFlags: HEAD + uiWindowPos: 1,3 + strippingWindowPos: 1,0 + displayName: Head + - name: pocket1 + slotTexture: pocket + slotFlags: POCKET + slotGroup: MainHotbar + stripTime: 3 + uiWindowPos: 0,3 + strippingWindowPos: 0,4 + dependsOn: jumpsuit + displayName: Pocket 1 + stripHidden: true + - name: pocket2 + slotTexture: pocket + slotFlags: POCKET + slotGroup: MainHotbar + stripTime: 3 + uiWindowPos: 2,3 + strippingWindowPos: 1,4 + dependsOn: jumpsuit + displayName: Pocket 2 + stripHidden: true + - name: suitstorage + slotTexture: suit_storage + slotFlags: SUITSTORAGE + slotGroup: MainHotbar + stripTime: 3 + uiWindowPos: 2,0 + strippingWindowPos: 2,5 + dependsOn: outerClothing + displayName: Suit Storage + - name: id + slotTexture: id + slotFlags: IDCARD + slotGroup: SecondHotbar + stripTime: 6 + uiWindowPos: 2,1 + strippingWindowPos: 2,4 + dependsOn: jumpsuit + displayName: ID + - name: belt + slotTexture: belt + slotFlags: BELT + slotGroup: SecondHotbar + stripTime: 6 + uiWindowPos: 3,1 + strippingWindowPos: 1,5 + displayName: Belt + - name: back + slotTexture: back + slotFlags: BACK + slotGroup: SecondHotbar + stripTime: 6 + uiWindowPos: 3,0 + strippingWindowPos: 0,5 + displayName: Back diff --git a/Resources/Prototypes/DeltaV/Shaders/birdvision.yml b/Resources/Prototypes/DeltaV/Shaders/birdvision.yml new file mode 100644 index 00000000000..43dc7ae2485 --- /dev/null +++ b/Resources/Prototypes/DeltaV/Shaders/birdvision.yml @@ -0,0 +1,4 @@ +- type: shader + id: UltraVision + kind: source + path: "/Textures/DeltaV/Shaders/ultravision.swsl" diff --git a/Resources/Prototypes/DeltaV/Species/harpy.yml b/Resources/Prototypes/DeltaV/Species/harpy.yml index 0df69e9d729..bcc4dd22c44 100644 --- a/Resources/Prototypes/DeltaV/Species/harpy.yml +++ b/Resources/Prototypes/DeltaV/Species/harpy.yml @@ -3,11 +3,33 @@ name: species-name-harpy roundStart: true prototype: MobHarpy - sprites: MobHumanSprites + sprites: MobHarpySprites markingLimits: MobHarpyMarkingLimits dollPrototype: MobHarpyDummy skinColoration: HumanToned +- type: speciesBaseSprites + id: MobHarpySprites + sprites: + Head: MobHarpyHead + Hair: MobHumanoidAnyMarking + FacialHair: MobHumanoidAnyMarking + Snout: MobHumanoidAnyMarking + Chest: MobHarpyTorso + HeadTop: MobHumanoidAnyMarking + HeadSide: MobHumanoidAnyMarking + Tail: MobHumanoidAnyMarking + Eyes: MobHumanoidEyes + LArm: MobHarpyLArm + RArm: MobHarpyRArm + LHand: MobHarpyLHand + RHand: MobHarpyRHand + LLeg: MobHarpyLLeg + RLeg: MobHarpyRLeg + LFoot: MobHarpyLFoot + RFoot: MobHarpyRFoot + + - type: markingPoints id: MobHarpyMarkingLimits points: @@ -27,7 +49,8 @@ defaultMarkings: [ HarpyEarsDefault ] Chest: points: 1 - required: false + required: true + defaultMarkings: [ HarpyChestDefault ] Legs: points: 2 required: false @@ -35,3 +58,87 @@ points: 1 required: false defaultMarkings: [ HarpyWingDefault ] + +- type: humanoidBaseSprite + id: MobHarpyHead + baseSprite: + sprite: DeltaV/Mobs/Species/Harpy/parts.rsi + state: head_m + +- type: humanoidBaseSprite + id: MobHarpyHeadMale + baseSprite: + sprite: DeltaV/Mobs/Species/Harpy/parts.rsi + state: head_m + +- type: humanoidBaseSprite + id: MobHarpyHeadFemale + baseSprite: + sprite: DeltaV/Mobs/Species/Harpy/parts.rsi + state: head_f + +- type: humanoidBaseSprite + id: MobHarpyTorso + baseSprite: + sprite: DeltaV/Mobs/Species/Harpy/parts.rsi + state: torso_m + +- type: humanoidBaseSprite + id: MobHarpyTorsoMale + baseSprite: + sprite: DeltaV/Mobs/Species/Harpy/parts.rsi + state: torso_m + +- type: humanoidBaseSprite + id: MobHarpyTorsoFemale + baseSprite: + sprite: DeltaV/Mobs/Species/Harpy/parts.rsi + state: torso_f + +- type: humanoidBaseSprite + id: MobHarpyLLeg + baseSprite: + sprite: DeltaV/Mobs/Species/Harpy/parts.rsi + state: l_leg + +- type: humanoidBaseSprite + id: MobHarpyLHand + baseSprite: + sprite: DeltaV/Mobs/Species/Harpy/parts.rsi + state: l_hand + +- type: humanoidBaseSprite + id: MobHarpyLArm + baseSprite: + sprite: DeltaV/Mobs/Species/Harpy/parts.rsi + state: l_arm + +- type: humanoidBaseSprite + id: MobHarpyLFoot + baseSprite: + sprite: DeltaV/Mobs/Species/Harpy/parts.rsi + state: l_foot + +- type: humanoidBaseSprite + id: MobHarpyRLeg + baseSprite: + sprite: DeltaV/Mobs/Species/Harpy/parts.rsi + state: r_leg + +- type: humanoidBaseSprite + id: MobHarpyRHand + baseSprite: + sprite: DeltaV/Mobs/Species/Harpy/parts.rsi + state: r_hand + +- type: humanoidBaseSprite + id: MobHarpyRArm + baseSprite: + sprite: DeltaV/Mobs/Species/Harpy/parts.rsi + state: r_arm + +- type: humanoidBaseSprite + id: MobHarpyRFoot + baseSprite: + sprite: DeltaV/Mobs/Species/Harpy/parts.rsi + state: r_foot diff --git a/Resources/Prototypes/DeltaV/Traits/altvision.yml b/Resources/Prototypes/DeltaV/Traits/altvision.yml new file mode 100644 index 00000000000..cb6c1bfa42d --- /dev/null +++ b/Resources/Prototypes/DeltaV/Traits/altvision.yml @@ -0,0 +1,13 @@ +- type: trait + id: UltraVision + name: Ultraviolet Vision + description: trait-ultravision-desc + components: + - type: UltraVision + +- type: trait + id: DefaultVision + name: Normal Vision + description: trait-defaultvision-desc + components: + - type: DefaultVision diff --git a/Resources/Prototypes/DeltaV/Voice/speech_sounds.yml b/Resources/Prototypes/DeltaV/Voice/speech_sounds.yml index c1b56dd28b7..89db03d2fcc 100644 --- a/Resources/Prototypes/DeltaV/Voice/speech_sounds.yml +++ b/Resources/Prototypes/DeltaV/Voice/speech_sounds.yml @@ -6,3 +6,12 @@ path: /Audio/DeltaV/Voice/Talk/vulp_ask.ogg exclaimSound: path: /Audio/DeltaV/Voice/Talk/vulp_exclaim.ogg + +- type: speechSounds + id: Harpy + saySound: + path: /Audio/DeltaV/Voice/Harpy/chirp1.ogg + askSound: + path: /Audio/DeltaV/Voice/Harpy/chirp1.ogg + exclaimSound: + path: /Audio/DeltaV/Voice/Harpy/chirp1.ogg diff --git a/Resources/Prototypes/DeltaV/Voice/speech_verbs.yml b/Resources/Prototypes/DeltaV/Voice/speech_verbs.yml index 01288498fe6..9ffa21b8c8e 100644 --- a/Resources/Prototypes/DeltaV/Voice/speech_verbs.yml +++ b/Resources/Prototypes/DeltaV/Voice/speech_verbs.yml @@ -13,3 +13,11 @@ - chat-speech-verb-felinid-2 - chat-speech-verb-felinid-3 - chat-speech-verb-felinid-4 + +- type: speechVerb + id: Harpy + speechVerbStrings: + - chat-speech-verb-harpy-1 + - chat-speech-verb-harpy-2 + - chat-speech-verb-harpy-3 + - chat-speech-verb-harpy-4 diff --git a/Resources/Prototypes/DeltaV/tags.yml b/Resources/Prototypes/DeltaV/tags.yml index d636db0146d..72181758e38 100644 --- a/Resources/Prototypes/DeltaV/tags.yml +++ b/Resources/Prototypes/DeltaV/tags.yml @@ -18,6 +18,9 @@ - type: Tag id: HandLabeler +- type: Tag + id: HidesHarpyWings + - type: Tag id: MagazinePistolSpecial # For the .38 special ammo and pistol @@ -38,3 +41,6 @@ - type: Tag id: PaperSlip + +- type: Tag + id: Skirt diff --git a/Resources/Prototypes/Entities/Clothing/OuterClothing/base_clothingouter.yml b/Resources/Prototypes/Entities/Clothing/OuterClothing/base_clothingouter.yml index 82df2c21e8f..13524efa9e6 100644 --- a/Resources/Prototypes/Entities/Clothing/OuterClothing/base_clothingouter.yml +++ b/Resources/Prototypes/Entities/Clothing/OuterClothing/base_clothingouter.yml @@ -92,6 +92,7 @@ tags: - Hardsuit - WhitelistChameleon + - HidesHarpyWings #DeltaV: Used by harpies to help render their hardsuit sprites - type: entity abstract: true @@ -110,6 +111,9 @@ - type: HeldSpeedModifier - type: Item size: Huge + - type: Tag + tags: + - HidesHarpyWings #DeltaV: Used by harpies to help render their hardsuit sprites - type: entity parent: ClothingOuterBase diff --git a/Resources/Prototypes/Entities/Clothing/Uniforms/base_clothinguniforms.yml b/Resources/Prototypes/Entities/Clothing/Uniforms/base_clothinguniforms.yml index 0329f82b5b1..9a5e0211f36 100644 --- a/Resources/Prototypes/Entities/Clothing/Uniforms/base_clothinguniforms.yml +++ b/Resources/Prototypes/Entities/Clothing/Uniforms/base_clothinguniforms.yml @@ -59,3 +59,6 @@ - type: Clothing slots: [innerclothing] femaleMask: UniformTop + - type: Tag #DeltaV, needed for species with nonhuman legs/can only wear skirts + tags: + - Skirt diff --git a/Resources/Prototypes/Entities/Mobs/Customization/Markings/gauze.yml b/Resources/Prototypes/Entities/Mobs/Customization/Markings/gauze.yml index 623f7becfc1..c68075dc508 100644 --- a/Resources/Prototypes/Entities/Mobs/Customization/Markings/gauze.yml +++ b/Resources/Prototypes/Entities/Mobs/Customization/Markings/gauze.yml @@ -2,7 +2,7 @@ id: GauzeLefteyePatch bodyPart: Eyes markingCategory: Head - speciesRestriction: [Moth, Dwarf, Human, Arachnid, Felinid, Oni, Harpy, Vulpkanin] # Delta V - Felinid, Oni, Harpy, Vulpkanin + speciesRestriction: [Moth, Dwarf, Human, Arachnid, Felinid, Oni, Vulpkanin] # Delta V - Felinid, Oni, Vulpkanin coloring: default: type: @@ -16,7 +16,7 @@ id: GauzeLefteyeTape bodyPart: Eyes markingCategory: Head - speciesRestriction: [Moth, Dwarf, Human, Reptilian, Arachnid, Felinid, Oni, Harpy, Vulpkanin] # Delta V - Felinid, Oni, Harpy, Vulpkanin + speciesRestriction: [Moth, Dwarf, Human, Reptilian, Arachnid, Felinid, Oni, Vulpkanin] # Delta V - Felinid, Oni, Vulpkanin coloring: default: type: @@ -30,7 +30,7 @@ id: GauzeRighteyePatch bodyPart: Eyes markingCategory: Head - speciesRestriction: [Moth, Dwarf, Human, Arachnid, Felinid, Oni, Harpy, Vulpkanin] # Delta V - Felinid, Oni, Harpy, Vulpkanin + speciesRestriction: [Moth, Dwarf, Human, Arachnid, Felinid, Oni, Vulpkanin] # Delta V - Felinid, Oni, Vulpkanin coloring: default: type: @@ -44,7 +44,7 @@ id: GauzeRighteyeTape bodyPart: Eyes markingCategory: Head - speciesRestriction: [Moth, Dwarf, Human, Reptilian, Arachnid, Felinid, Oni, Harpy, Vulpkanin] # Delta V - Felinid, Oni, Harpy, Vulpkanin + speciesRestriction: [Moth, Dwarf, Human, Reptilian, Arachnid, Felinid, Oni, Vulpkanin] # Delta V - Felinid, Oni, Vulpkanin coloring: default: type: @@ -72,7 +72,7 @@ id: GauzeShoulder bodyPart: Chest markingCategory: Chest - speciesRestriction: [Moth, Dwarf, Human, Reptilian, Arachnid, Felinid, Oni, Harpy, Vulpkanin] # Delta V - Felinid, Oni, Harpy, Vulpkanin + speciesRestriction: [Moth, Dwarf, Human, Reptilian, Arachnid, Felinid, Oni, Vulpkanin] # Delta V - Felinid, Oni, Vulpkanin coloring: default: type: @@ -86,7 +86,7 @@ id: GauzeStomach bodyPart: Chest markingCategory: Chest - speciesRestriction: [Moth, Dwarf, Human, Reptilian, Arachnid, Felinid, Oni, Harpy, Vulpkanin] # Delta V - Felinid, Oni, Harpy, Vulpkanin + speciesRestriction: [Moth, Dwarf, Human, Reptilian, Arachnid, Felinid, Oni, Vulpkanin] # Delta V - Felinid, Oni, Vulpkanin coloring: default: type: @@ -291,4 +291,4 @@ color: "#FFFFFF" sprites: - sprite: Mobs/Customization/gauze.rsi - state: gauze_lizardblindfold \ No newline at end of file + state: gauze_lizardblindfold diff --git a/Resources/Prototypes/Entities/Mobs/Customization/Markings/scars.yml b/Resources/Prototypes/Entities/Mobs/Customization/Markings/scars.yml index 2468b2c5346..cca16443e2c 100644 --- a/Resources/Prototypes/Entities/Mobs/Customization/Markings/scars.yml +++ b/Resources/Prototypes/Entities/Mobs/Customization/Markings/scars.yml @@ -2,7 +2,7 @@ id: ScarEyeRight bodyPart: Head markingCategory: Head - speciesRestriction: [Human, Dwarf, Felinid, Oni] # Delta V - Felinid, Oni + speciesRestriction: [Human, Dwarf, Felinid, Harpy, Oni] # Delta V - Felinid, Oni, Harpy coloring: default: type: @@ -16,7 +16,7 @@ id: ScarEyeLeft bodyPart: Head markingCategory: Head - speciesRestriction: [Human, Dwarf, Felinid, Oni] # Delta V - Felinid, Oni + speciesRestriction: [Human, Dwarf, Felinid, Harpy, Oni] # Delta V - Felinid, Oni, Harpy coloring: default: type: diff --git a/Resources/Prototypes/Entities/Mobs/Customization/Markings/tattoos.yml b/Resources/Prototypes/Entities/Mobs/Customization/Markings/tattoos.yml index b17fb5d1f3c..b9ffd9ba0d6 100644 --- a/Resources/Prototypes/Entities/Mobs/Customization/Markings/tattoos.yml +++ b/Resources/Prototypes/Entities/Mobs/Customization/Markings/tattoos.yml @@ -2,7 +2,7 @@ id: TattooHiveChest bodyPart: Chest markingCategory: Chest - speciesRestriction: [Human, Dwarf, Felinid, Oni, Harpy] # Delta V - Felinid, Oni, Harpy + speciesRestriction: [Human, Dwarf, Felinid, Oni] # Delta V - Felinid, Oni coloring: default: type: @@ -16,7 +16,7 @@ id: TattooNightlingChest bodyPart: Chest markingCategory: Chest - speciesRestriction: [Human, Dwarf, Felinid, Oni, Harpy] # Delta V - Felinid, Oni, Harpy + speciesRestriction: [Human, Dwarf, Felinid, Oni] # Delta V - Felinid, Oni coloring: default: type: @@ -30,7 +30,7 @@ id: TattooSilverburghLeftLeg bodyPart: LLeg markingCategory: Legs - speciesRestriction: [Human, Dwarf, Felinid, Oni, Harpy] # Delta V - Felinid, Oni, Harpy + speciesRestriction: [Human, Dwarf, Felinid, Oni] # Delta V - Felinid, Oni coloring: default: type: @@ -44,7 +44,7 @@ id: TattooSilverburghRightLeg bodyPart: RLeg markingCategory: Legs - speciesRestriction: [Human, Dwarf, Felinid, Oni, Harpy] # Delta V - Felinid, Oni, Harpy + speciesRestriction: [Human, Dwarf, Felinid, Oni] # Delta V - Felinid, Oni coloring: default: type: @@ -86,7 +86,7 @@ id: TattooCampbellLeftLeg bodyPart: LLeg markingCategory: Legs - speciesRestriction: [Human, Dwarf, Felinid, Oni, Harpy] # Delta V - Felinid, Oni, Harpy + speciesRestriction: [Human, Dwarf, Felinid, Oni] # Delta V - Felinid, Oni coloring: default: type: @@ -100,7 +100,7 @@ id: TattooCampbellRightLeg bodyPart: RLeg markingCategory: Legs - speciesRestriction: [Human, Dwarf, Felinid, Oni, Harpy] # Delta V - Felinid, Oni, Harpy + speciesRestriction: [Human, Dwarf, Felinid, Oni] # Delta V - Felinid, Oni coloring: default: type: diff --git a/Resources/Textures/Clothing/Head/Hardsuits/atmospherics.rsi/equipped-head-harpy.png b/Resources/Textures/Clothing/Head/Hardsuits/atmospherics.rsi/equipped-head-harpy.png new file mode 100644 index 0000000000000000000000000000000000000000..8be453ab873feb1de8e22993ece1f304714e9fe3 GIT binary patch literal 559 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!7>k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`1!1o(uwW`{|JteoRHxqVTSn%jidgR^yAI_oS8GZpNuA8s|zoc1~M_UFvc zpCjBA<9)>Z=S|qurVTLGIrL@zTf?Y{T{ic@y&PN z%<25Gzsk75&kNLmPFFkaKAtB(z5c+_P5)Uc&dYRY z8dT5E4m$IKk%7N>oug4>_~S2zy{jq?1y6fB@xZDoCYKGHx%0Nga8FQ*Fl#=zoFHTZnfJbex1K6pATaP5JYD@<);T3K0RSd^_2d8m literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Head/Hardsuits/atmospherics.rsi/meta.json b/Resources/Textures/Clothing/Head/Hardsuits/atmospherics.rsi/meta.json index b0b6e0a2b03..93d9fece1d0 100644 --- a/Resources/Textures/Clothing/Head/Hardsuits/atmospherics.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Hardsuits/atmospherics.rsi/meta.json @@ -58,6 +58,10 @@ { "name": "equipped-head-vulpkanin", "directions": 4 + }, + { + "name": "equipped-head-harpy", + "directions": 4 } ] } diff --git a/Resources/Textures/Clothing/Head/Hardsuits/capspace.rsi/meta.json b/Resources/Textures/Clothing/Head/Hardsuits/capspace.rsi/meta.json index ac71856cd7a..cc8edd38197 100644 --- a/Resources/Textures/Clothing/Head/Hardsuits/capspace.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Hardsuits/capspace.rsi/meta.json @@ -36,6 +36,14 @@ { "name": "on-inhand-right", "directions": 4 + }, + { + "name": "off-equipped-HELMET-harpy", + "directions": 4 + }, + { + "name": "on-equipped-HELMET-harpy", + "directions": 4 } ] } diff --git a/Resources/Textures/Clothing/Head/Hardsuits/capspace.rsi/off-equipped-HELMET-harpy.png b/Resources/Textures/Clothing/Head/Hardsuits/capspace.rsi/off-equipped-HELMET-harpy.png new file mode 100644 index 0000000000000000000000000000000000000000..4c614ca87c7c004d76915f20bcd4aff8f7a66671 GIT binary patch literal 1181 zcmV;O1Y-M%P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D1TslPK~#8N?V3$& zOi>ia&-0OCs)K5YMp8yg2%%Ifi0K9s79wo0@R1-kELaF@B0_?NL`0DI*svrM-E>5J zQ$jRUi=?S&M=?616CYRq_r3ePVMgz3=aHE6OJ2@B_ubrc&;Q<;*XeoGAH<{0!fO5# zM5MUi@dsGeHR9$HLEjRl{Rgz4FA|A_kk;zz6NY8A5W#HjMqWy1c(P~ZI#PHE5!WM z^XPU{fSxooNedtS)({E>PV{S6e#JT8%(Xkk^16-G_1Wx#g^zyO(Sw`#S^^le&KVG) zq-wE9CKA-z*g!QEahg_HAuW9L<37ekgTV$Q~4(NdSFfRm#Ur-pJM9K^S3m@RV+xS`ntl9tC zc--{XbSjpk6I_bH$)fO-TC4bGGe z2%$jYKqarpl?d2^8muNoP94#n$1Tp}oj8SXCay%!`3dmij~g%1 z6@XzFhG7_nVHhSa$@^b}TK^OLpJ4$ko42q4md#u8UVyBRL0Nkr=rKWC$*Y^}UBA4pjh3A$O%vgG^=0|K z07~YnK9_4y8|*kST9)9q+*xMzn#rp*0SMtALge=u^6K|TK#8#MR7e&gvD*NPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!Ttcvfg^dr@kP1Fjp`j1eLiIsV#5`E~YKe*>`X;5& zfLLM8VXJqbCT&f%R+3F)U9>v;cXX70`|`!VaTl$iO!?U^(8+?jLE z+?{*VbEy)<*b726ZwX?kvEupHDOon+%O?fhOiOtSnEkjxq|<_>>iSoBN)|;9=e?Pj9PYg5RJ$s4b#?iE$XKtOX%LN}%-YSR z{-);V<~bJ6^JsK*l{)FK}92n-jCk1t)A*uexZk3 zQ*?j0l_hla<2>xxo~YeV0Ue^aP+K3O^om?$Naz6PVF!Ee zu)rz-z5RoI<5M$AlS#-uG_ZrcQmexD?g7u7|LR17<>E4nKnJjcy;4hJl>nfF>gmbE zmakpy;5EJd(;U=dI?ejy1CcDL`(YP}$UYlv6L3XIN{8;|U~%NO4FdaW5sSrCD-&$@ z+3er}>`dEIl)P1PAA!8l6~O-~{3nk>b4B$&kdI`1IEV+2LmRBDR1z2+)HAQ03>^9N z-4i^Hzw7Vyg{bB`K%v{&OoSP@UVYp50J}8#;N@a9VVeMl!{Kl^9MxsDy)!tfjk^OJ zj#a~&|7+0tzr_BpxCAJnn~Q<;y65uxSk&=_!OfyJR4bK2NdQPh_#+;xoT5azmN^t@aa^V>JDBn7-z|q%a??SA7+B840v;2f~&+WN9R4AfZWP(xwV3P*XsmaI=xAt zEdTl!Vb;M=Z;W=eZLy~lThG#;dve7`6W+PF}29J+oi75IMz=e7c3FF7E#0VbXHxK7^0Kpz$32c9o&0rk<=D_?W0dvC#leuq3Jlo)b zwP7(f-n%y_Ro69a!6t|@IWTu|@^^8or+`t8&$`~<1jiQUXSo9`|2S5$|5ZtVrtzWu z0xN*F`Aq?^4PH~|dUFnk!{Kl^91e%W;cz${4u`|xaFhknKbp>64^~p~M*si-07*qo IM6N<$g26$L!2kdN literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Head/Hardsuits/cybersun.rsi/equipped-HELMET-harpy.png b/Resources/Textures/Clothing/Head/Hardsuits/cybersun.rsi/equipped-HELMET-harpy.png new file mode 100644 index 0000000000000000000000000000000000000000..95b5e1fd7f3b957c34bda7bed12f0cdc25c916cf GIT binary patch literal 494 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!7>k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O_~e2l#}zT3J~oCnrZnM!LAToHMrg?;pBCLr+ajtw~KGzL`+-*%_-!%3}BUa>Q4$nH@OPU&3_EUYb?BGUUZ8 z)#;Tc>1Xm8RbMUKa_;fG8O8~*acdod?77Ztv41L-GyOi(X^};N4`!S#HZ|;TQd=LE zu+^TgR_5N>Uxw_ijiv$5r!q8sYdL(8XT!>ix2)E)bU4Py^-tk9=gwiRPvG9xaHC0A zVcP?H&K&~JHC2Ue{>C3>o&3qhb)}AWL&k#Jrv5q$x^Bd;+n&wca9{uWZ=tDL1-#e4 zR?I(W{B3eVX2;)SmHObMmyvj6cdR4uvwwSJf-sM Vofl^#F9E}m!PC{xWt~$(69ANJ%7_2} literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Head/Hardsuits/cybersun.rsi/meta.json b/Resources/Textures/Clothing/Head/Hardsuits/cybersun.rsi/meta.json index 855e3345c98..f6b86138919 100644 --- a/Resources/Textures/Clothing/Head/Hardsuits/cybersun.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Hardsuits/cybersun.rsi/meta.json @@ -6,21 +6,25 @@ "x": 32, "y": 32 }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-HELMET", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} \ No newline at end of file + "states": [ + { + "name": "icon" + }, + { + "name": "equipped-HELMET", + "directions": 4 + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + }, + { + "name": "equipped-HELMET-harpy", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/Clothing/Head/Hardsuits/engineering-white.rsi/meta.json b/Resources/Textures/Clothing/Head/Hardsuits/engineering-white.rsi/meta.json index 4dae2c687da..1ac1729cd2d 100644 --- a/Resources/Textures/Clothing/Head/Hardsuits/engineering-white.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Hardsuits/engineering-white.rsi/meta.json @@ -42,7 +42,15 @@ "directions": 4 }, { - "name": "off-equipped-HELMET-vulpkanin", + "name": "off-equipped-HELMET-vulpkanin", + "directions": 4 + }, + { + "name": "on-equipped-HELMET-harpy", + "directions": 4 + }, + { + "name": "off-equipped-HELMET-harpy", "directions": 4 } ] diff --git a/Resources/Textures/Clothing/Head/Hardsuits/engineering-white.rsi/off-equipped-HELMET-harpy.png b/Resources/Textures/Clothing/Head/Hardsuits/engineering-white.rsi/off-equipped-HELMET-harpy.png new file mode 100644 index 0000000000000000000000000000000000000000..fea5970d5d27770b67296281fef04b92dacc5233 GIT binary patch literal 1219 zcmV;!1U&nRP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!T$a=tabZOe%sPNR6ICWDhI~yHF98q#ue1jEcI^2c^D*+7|;A1cUk#DHOeK zQl#|6P%Fs?1V)tD>!S9ghmf~z{&Qz8OWAdI-D}{?50*1CJMNkJ-?KaGp7D@DN;67W zWr-dE9(D|H{>Ft0V`_3T%}rfSPh0O(cUKp!+meUg!vg%n&X|`%o$YPB&8dG&5m0g5 zACW;$9+L*JsLMeCbALA&$iJDP__riL-q8}z;oVy!7fqNjk=xGBu==tN&=37Z)fN8b z|NG}p+z!RRB>|SD%`qAuwQyTlSV~^+Y;h(G>S#Cj6Q^83URR1Rkbi*lcKurtpuVNU zvvg4!)wgy~_U0_guTG@E{2VGvO63-Hv;*Fc_2(6rkp5>SC(*6idlU>l=k4+~L>=uo zZ`Z%&RRGF@7hSKZy>cP#?{B4|{%_o(j&>mXxecycb+Lw*cW>Lp?|T4?I>33m{%x%S z2(5yG0~F}ZAMgKsE%Ut!E9FTv9uzUC}W7cE2`4;u($ak@-VpkQXe;`sZi+=%2;epWQeg&c~Zm(5FkvY4w_nNPZ4rv&7i3 z!l`;Wda1~z6$kR(NNbeDghXbDf;%EpaB1psCd z0Dk$o8&8JdTO!8*-%8VNrbq}3d^y8(#jHUqlLX0OAkRr02IaKk$=Zt065&vY<?W^l@xv#R@DfB?>SHL&`#)dIstX9VnT>xBy9S9{EP7RM*B6|TkU%g?c4Qdnn z1&Tx8czY}dTiqA^C(+nJO${R5?E9SotZ{mPLsN6vluiL%?UWpFfG2KluyS>LL3 zPlopisyyPHEWeHf7)dDqzkn7%SY^=y2&*hw0AZCy3m~krXaR&(7A=6V%Ay4jR#~(F h!YYdvKv+c~`VD^_3znt96SM#T002ovPDHLkV1mdKFg*YO literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Head/Hardsuits/engineering-white.rsi/on-equipped-HELMET-harpy.png b/Resources/Textures/Clothing/Head/Hardsuits/engineering-white.rsi/on-equipped-HELMET-harpy.png new file mode 100644 index 0000000000000000000000000000000000000000..614b148f17ac980596e87543dc6034d92ccc1620 GIT binary patch literal 1623 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 F{{y+NSPB3D literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/OuterClothing/Hardsuits/cybersun.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Hardsuits/cybersun.rsi/meta.json index 7786f981121..1cfa2a9cfe4 100644 --- a/Resources/Textures/Clothing/OuterClothing/Hardsuits/cybersun.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Hardsuits/cybersun.rsi/meta.json @@ -1,26 +1,30 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Sprite made by Gtheglorious based on the sprite made by emisse for ss14", + "copyright": "Sprite made by Gtheglorious based on the sprite made by emisse for ss14, harpy variant by VMSolidus", "size": { "x": 32, "y": 32 }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-OUTERCLOTHING", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} \ No newline at end of file + "states": [ + { + "name": "icon" + }, + { + "name": "equipped-OUTERCLOTHING", + "directions": 4 + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + }, + { + "name": "equipped-OUTERCLOTHING-harpy", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/Clothing/OuterClothing/Hardsuits/engineering-white.rsi/equipped-OUTERCLOTHING-harpy.png b/Resources/Textures/Clothing/OuterClothing/Hardsuits/engineering-white.rsi/equipped-OUTERCLOTHING-harpy.png new file mode 100644 index 0000000000000000000000000000000000000000..865364771e158b9351af19fe71f688b6f7ea059c GIT binary patch literal 2258 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 g07*qoM6N<$f?dT_0ssI2 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/OuterClothing/Hardsuits/engineering-white.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Hardsuits/engineering-white.rsi/meta.json index e482264df5f..ef5e62cca40 100644 --- a/Resources/Textures/Clothing/OuterClothing/Hardsuits/engineering-white.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Hardsuits/engineering-white.rsi/meta.json @@ -6,21 +6,25 @@ "x": 32, "y": 32 }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-OUTERCLOTHING", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] + "states": [ + { + "name": "icon" + }, + { + "name": "equipped-OUTERCLOTHING", + "directions": 4 + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + }, + { + "name": "equipped-OUTERCLOTHING-harpy", + "directions": 4 + } + ] } diff --git a/Resources/Textures/Clothing/OuterClothing/Hardsuits/engineering.rsi/equipped-OUTERCLOTHING-harpy.png b/Resources/Textures/Clothing/OuterClothing/Hardsuits/engineering.rsi/equipped-OUTERCLOTHING-harpy.png new file mode 100644 index 0000000000000000000000000000000000000000..2510e35db9f1d6d3582d926ab1c151425c2eaf2e GIT binary patch literal 2226 zcmV;j2u=5iP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D2uDdoK~#8N?V4+B zT*Vc~=Qgb4jcn6AY!h5NghyP=BMAtLrWHt0n+O6@N<}JFDh1IBz8J(aQd>ZL=(j%9 z)5h<3g$j zGT=OV=ob@T#t-JppVt9D-ur$3(6KX8?>f9+N&u-I3O$cL*NHGs%*Fri3;X8HA1eZw zcW=J?sdP;JMBktst5#G+b=o;EdO^LIu=xReVBj4oBDoO$ITt~DF4>(j-)dLZn5tz- zGkz{((nF)N2q|HPhBrup$r;(+m~ zgy=P2xx$G*Zv<@p_H|Mo{VZ5yf{q{jUe+cCO$1N^+BuINU@>~_m&eTI9Ul}l6`tGl z(hS$rPXHNwWo4yVzI?fy2O0r@cFqTSBCFl`kk9YgIe-4V85tP~C1b9*Bdi3Vo%0IY?zxcH0Xpw*T$6py=8FLI00y*A z-)o+q*eS9rxQ^=wPNxvPAhc)f2w>{rAWEPSz!W$V*sJSBKFsL=2CjGY_S-hZiU8Hq z1!+F87v7*>FHQu&KOM+oLvZ9n-UtA6dUew`q6qlKk80)4>jH?Z5rAIggy1N25$riU zu|)d_`K2H3bfT(GcpHAUQA%Wu4CRlDIUT@)rh|WB_p4&eul|ybqCmqRnRd>jr$*?4 zSO|7M_`!_L|MTCzEbZKBjRNJj+t732&-*Q~arY*_uCC5xG8qZ6o375j2iT829*aDd zj&u*pJWM8&qCYk^W z+F_aZ3|bFl+HK5t@IbHE0c(Bf(xp;YAkz-eqaK&v*#W#~x30-Z1dN=^euW_y`~BYr zchvLZ`4T+*b7bx|C9*ohmES2f#<#yd_gR7aQsbtvt}1#L zpw0eKQf$D_v;#FYHD+{lG%CUJWyYD`c?vK{j_&^Kic6_&3jqenp@XK>wn7lw0Y5qL zsK2YN#c*V1DtY91Jw>)B zKl|!P^wy<7rk(TX7265)_dx3@;rRRURblIF(9U`ET=?^@0d$s5U;MJFt*td(U0tT5 zqeHH}{D~_}OG}HtZrwVQtM|&Cf0*}rVDr-_P<{~tC_k`u4u?1)B)z%eg8ULASz2mnLbh)(`x6u!NQPq5&8yR5qn$I% z2j>W|^X@Av`h~c$KDpo#04Lno@Y=OIWiP_(&m9vTm$bZ71OVnePJn!9vO(?ucjJE% z0dQjjV9+w~U_>Q}fP-%gdVBwsl=-G<@BfzwU@yTRQ@6{p_fQhG*yD<=2&Si}qq)y< z-TG~_B7k)H5ANO?Y8M~(-@PSD$!i3t4Z0{}V{o%#KZ%?iFgZCH*0LZCty2MD7;UA( zRZWe;0pNrizL{VcdQ)<3%!k--g8cn$Zf^ETN$=S5Eg@zv06Vt8LtCoN{tr{;-~FEH zJaJN7!0T-Nb18l*jii!%6UEt(^&dyHpEKacTMJAiA z9XN5stX@?q^tdychjt29GrhRxVOSJ<*}fD>+PP`J*2 z5ZeLGYp)7kTx+57hU9;^Q3Oh#mT@TCGAaKQ;THXvgYwqc`71jKfLdNtvn zkDkSfTzMgIDI2g2sI76}ya;BdFEbBqtv5@O*-cTD$k(rL6?q{5*QIR0Hdi=101Tf! zW5&nFB`r;f{M~B?&GzlvOZO5G0uHz?WkVrwS_DB;QD$}eoqxD~8Q@muvNyoyWAL^;y}i8-i?A{O1tLVA2$BjzcK`qY07*qoM6N<$f)Yeb AMF0Q* literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/OuterClothing/Hardsuits/engineering.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Hardsuits/engineering.rsi/meta.json index e482264df5f..cbf3391af71 100644 --- a/Resources/Textures/Clothing/OuterClothing/Hardsuits/engineering.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Hardsuits/engineering.rsi/meta.json @@ -1,26 +1,30 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/4f6190e2895e09116663ef282d3ce1d8b35c032e", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/4f6190e2895e09116663ef282d3ce1d8b35c032e, harpy version by VMSolidus", "size": { "x": 32, "y": 32 }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-OUTERCLOTHING", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] + "states": [ + { + "name": "icon" + }, + { + "name": "equipped-OUTERCLOTHING", + "directions": 4 + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + }, + { + "name": "equipped-OUTERCLOTHING-harpy", + "directions": 4 + } + ] } diff --git a/Resources/Textures/Clothing/OuterClothing/Hardsuits/luxury.rsi/equipped-OUTERCLOTHING-harpy.png b/Resources/Textures/Clothing/OuterClothing/Hardsuits/luxury.rsi/equipped-OUTERCLOTHING-harpy.png new file mode 100644 index 0000000000000000000000000000000000000000..38403243634e396c1de9c019fbf6df117c2545ed GIT binary patch literal 4020 zcmZu!2{@GN`~GAZS;|pJS*9tWn$_%#-LZ5mWox0#@-f3~W~L$8RaA;oN?NFBQ!48r zs*z|@qOxVJL?Q|uW$FKomVdwNI&)n!^S$rf&;2~l{oe0$U9;EA!&y^psTu$PnyxO6 z8=!An`CC;5`poBqcL9LHZjOV4m#c#V+)E?~=5Rp(Fl#vSH_fHSYw>PR?{lklV3sc7 z_q}SX6ECLZIu@$xx@|e*3p<=SYj=3h%G%oXLL_;zc;j|qc=L;DUoE9L+kn86iv#oS zP93t}?^Ugy`EPiaW%9ot6n8~sar|18PQNS5N_Azds$8wIwNc%8V#ys`acX2J_Q1i3 z?Vcf*KAg2u|8_Z+5Q3GNYBykOO7@acLWsPiG3)RY9q`EH$;gg8b!{6_;K#`W;%YD< zWKX?BludSAtJ}Vj!}P-wUU6Qf6v#k6mg7D^tzRgvpadgauYkB1!wA3X>wVdZ6 z7W=HX*C(DW8O+=0(sb*2wXt+&zR3K|>V&_U3OelcK$}V9>Fk0dImgEjC2BvNc||r} zVH>2!es0h|)f&FkH2#}@dDE6zH^XByD{nS8A)IA0qA0He_f9eW{3c{K085s!6N*|at12(V@Z++>`(f{3!K$LOY~|@g z(7DVPx@-~yfchf&TLCzJatQz^4RU-oN;bOxMP&+jC^}2P08x=VA%q41E1O6mof!s7 z;0!Q?!>1ueDsLm;92O1XPjJV$3mrf<$0bSxdPjNqFr&hl6c)n9T2sv`k_s{KKnWcl z$>Z|H)JPg)j+hEP%eT=8_#8wMMni0L_kueJL?9fG!lN)qr$~+zhk!`na4Qijn7YC7 z&mSbviiTiIBtj}09T5?Mim*TlL?LJ_g+f7NaA+J32_cZ;9efEr63G{@_)hYJ#t{@V zMI51oBjCg3v~-4GyM%^->iAwDPw4Lci=8k2p#!7{I+89#V^J71k0-Bs4lR~ANul5$ zwfrYq?6X4%qBnqI!FCZ7bdrL6$%>!hEatCR;dT*st_v0u4RS#q1QSEqu)k6{ySjV* zLd&}j;qZiW5s<>aP!dk?|7-I<^~isjEB|M5DC`&C{~&+%DF;GgP#p!#?ecnD9cc)8 zQYuTpF24B!LVN2_?oM8Nnb4$s&Se43R`4P_RS4K(2;R?^bim&O za%HJ@Uam9*4h1EfTY7Qnl3)l5`J2OM2_nQl_I)@!&|5;6ONS*=EC?j51s;dT5wTdx z4}>2m5<}jSlVLF^93BCeD^G=rha{xSZ3l(UwM2Cgfpm#Lf z`HwRpV;Fc4N1-E`7!W#BJOz(r;4mcUOe_d^EQ3KO5$HeT#e!f-1YHE$g+SdwO+faT zYXWZeLpSrE$Otwl7X^c}Kw>CJ4Auujrs6163=RQD|JH{UT7D^i@68JRUow2h{dSqZ z4~n^HXi`8cDDLO*k*|IYFpv)kAcDqIn#3;$093nO9qoJ~w+?R!;~Kosv95G%-D`MT zd*{uA!>!@Xg*B_n;_-P2OPAWJ!CexX&VJJN{o}~X)iL?&l`h&_?fRM<*Yp|YR5F_6 z53hRBl1qNhckF2_7F{;?-PI69g*zK6>2c;PrjU(Hv^=^Ll@9xZtd0u%mdwR_L zM(DcxemPQL)@J&xD8K$g?nt-jz$KHY-iZ~@jXpJXUGQjq8*u^*C{Y%dRK$G<>hB#| zIP&t`0|ou4=eehLxVkN$1|~Oq#Mz&zCZd)r?j2p@q<%_Dt31`P6IS=`^;oW?=4K^F z$WB#jdD~aAH{W*#oG1OX^S1fyIT)+BU{yy&4?vI5RYh>%tWzWEu z;!6c99KZDPw@j}i$|i}PZLZ-9p44b*x#@2~Pd+M6UbMh|?Kk%6q=v9)>(JP7)lNT8 z$>_@U!wxM269oa8{g7`%f<{%Y97` zeXlY4Wn{X+>serfaK3F?RAtICAZw^O@&Gp3l13)q@AuVF4zNF}kuDVl7Ny6E_BVTf z81(h={XlO!t^kZ*bhflT688Xr-^4!9OuKr1*)@w*x*eSNN-5e!ETH`iZBQ74OX)K{ zaV#|$fJYd|8%;>RWNH9)L~5njGq%K{;u&yKFU4s1sZmSsSC-bJ5m5#E^;d?PL}P3W zw#qIe{fzU?z*!STOzX2hyDzqoj~mCd*5A0-jjz+MyKN9Z(70eYywmpI9nB{D&U7`L zoi?uOzDw)r_*Z2P9^M$Q@OlmAHlHX+>KO^?BP7$EWN{mo5>CP zCoH$6pKxEnTt3*cV=(ODrHL`X-J@Yc=Xo4W(f&D!tQPpnCTZT1f+2<9ghcA-2%B%r}5{Ib|wwSA9@f!e4nNsDo0+VaAmCN=z zvSUN#C#8O6_;78NQ9?nK%G%~W|96AL7z(M@p#zZV8}R=*@u;_Vetwsi?XuNH8U^y(`K&C+nPEru&#dV<^bEynH7!NqZz!C znR(~&Fjc>L&%)Pa%+!mv#y zqN6Qk??+yaXl5OMK57ZgweJINvi)^gr@ynYYoT$^MDC{Oyss78bg0+VI~Xu7?y_#{ z(uHMPlNGc&KM5Cpd5=0f+C5WcWHzN#zlsAZhbF{W&mPU|%EV1cr`5J7X!Wmi>)bUF zH3XC00;={gkf=^Oc2&Qh9$BXB(RNr?Hb6AdRyqg7mlPIe`^P%(A#9DicNx84NL^O6 zJ^$#PqkDRnmCN)iO%=+j|7^{VvdFNoHHZ$q{fBD$YuS#XHMaTXc`-RVg0C#CZC7{+ zSdtvff!2fs6SFG{4;AbU0M?bdyk!^GIMIDEB`^o%f&YM40c$kwquD{W;?YSdi%Oi3-#y*&FdPOdI=`L1T?ONrmR@pY} zvj%EvT$`oRZ1J~|vr)H=t2Y$cQ4|kO55b)fb>$31jP^Y2hr7MjNe1!D-zAP~qJ)Xd zh%(*Yj zSo`VAx~$1U(*@54OTmC-blJC=@*I^t{&~Y;YmH*|H#@Rlo~v!Vc6*USU`bpzY8GVk z2H#HHIp53&WBW9;>bD-t9lNlT{jFx?`gG4t>nKS#Q965J;ShYuG1O^+Fkby+k4lg_ zH<2f$uK~2%+SJugY3xo_Zp`jlzuB-@n&Sq6fIH?|Cx$v=WKxwNBQ5;wq}%b6C(jjr zH1{r!229K8NwUxrt1}d}rrM|8ZyP#$oi8i=Hr{kuKzLR_deOAg*^-UOxE1sx8|0>1 zHOp%QWlhS4X$z$rKIdzQLiDF5FevQD`S9DH>pqtJmDpXeqf+;g$){-Y=@6Ml-{PYe zLbQ)w{Mx*;te~jY702wUh z)-CH$Hv6fUeb-B^vYV9Uf5a;W>~Bj~<$CJAc=4kB?c)<)rt7mT-b_T9+jO_qz%~so wFr;QQ?R7~E>ytgvA`40{oI6*mf^O7XveSE~-Z5mI{BNAAlZWF~`=G@C1H2c|2mk;8 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/OuterClothing/Hardsuits/luxury.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Hardsuits/luxury.rsi/meta.json index d977572f2ab..0261a0564f1 100644 --- a/Resources/Textures/Clothing/OuterClothing/Hardsuits/luxury.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Hardsuits/luxury.rsi/meta.json @@ -6,21 +6,25 @@ "x": 32, "y": 32 }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-OUTERCLOTHING", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] + "states": [ + { + "name": "icon" + }, + { + "name": "equipped-OUTERCLOTHING", + "directions": 4 + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + }, + { + "name": "equipped-OUTERCLOTHING-harpy", + "directions": 4 + } + ] } diff --git a/Resources/Textures/Clothing/OuterClothing/Hardsuits/medical.rsi/equipped-OUTERCLOTHING-harpy.png b/Resources/Textures/Clothing/OuterClothing/Hardsuits/medical.rsi/equipped-OUTERCLOTHING-harpy.png new file mode 100644 index 0000000000000000000000000000000000000000..2d682adeae078ea1290624e14d3ef56604d56c37 GIT binary patch literal 2074 zcmV+#2<7*QP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D2d_y)K~#8N?V4R| z6-5-sPx&lRsx<-$lv+W)CDxz`fd?^IjWJ4_@Ip*Pz$ReZAi)4NklK{UM>I$%YJymN z@kNnRBcc?+2Lz)eMFc68kJN%G7z>4#LM_+(o9@|cuch5-@0LXOpKNB%%-s2(bLPzK z?ma6ZLWBqrB1DJ~A^xXGaLO)GQc@Cess?#^dG2pJ>x(C1c{)NM+z^ARsw%gnO)qad z@S~_LVtMXVx8?5Rl$~PKs8MqI^l2GCe!P^GmC4DICrz7P$h6bXINIU~jLOW+bmxbU z>(S9EZe8_boQ)H@bU@a$QIQK5E|@w-#$xj1$@1wRNv70(#`8NP^bk6a8c7L?@)t1Q0{;|b=|xxG4U9g^(S+MKTaHvF9) z7~W9QNuOF!U_u<@6&OF`c2&DEitZjt#Z&H2NLljcZAUb7|9U;i)bsQ6<-_%>O$202 zoFT8QS}R+&Y%zV4lCE3vcNqb>xw)qNxqhHKv3grCjK?YTGY;tQx{Ea@{xr_lc`!aP zF;P-dQrt5}BLJCp`qfE(`TIHL9pT;gcpapV7$WH-2b(%Lf3Zo<*EO~Y1MV{g`!OEy z&ePo7Y_5;j<{3G+u|YDTC33xExT2%;sw4Q?0)!t1KlIE}*ZbZrpa&0;@!Qv%jYBkA zdU9Wm2c#@4v{l(GN@EmQvZUVT0VbaYLR=i!O!*f2W$XZ11Q!B zvBq-}vrid+?b@{-JAe}YOP4Mg2M__&hYlUuj)yTs01i-n{qS2mfO{}|&OP;`z$%{)({}-4MOy zsqsC%?{@|kAR)n@FB!*pzp!?|l`B^yJ3Ctn-uv9hl*qIPiRjCo8{VuoVD$kq?esIw z23H_VnboF5R%h7qTPc~5dT(UT zqNS$Jek?65mF3HqOH)&mY1_ShvsBhziHqSK0e-d}NKQ_chK2^WG;O#3vgWsTfK!zl zLq-@+6MBOh>zq~z+yPG2oIeT-R|LkNm6a7ac<^9k@7}$U=>5OlMnk5Ze#SY?aRu|% z)YO=Nd^+N%oqk(>Uxy%*E?&G?PMkO)#l^)=YkSa6KjY%<1m>GRf4-ELmpd&TgMP-@ z@OK$5Om_M5Wk+gz+>Ac`{p)wEf69UBk+5FtW@ z2oWMgh!Fo(SU)Q6+O@00=j`n4>|TBByeoR}H#x-Kd^|FsypvM#gz_k7tS)}D!V2Gi ziFqg1JUu0#9(`#s_1*wnnlg*k1=u*jw*xYN`oWaneYC>l-IN%R8=wuvf{X&Q!cmSF z->-0!F={;g=mu0*Kk)4U5|Myxi#h=%lr;J}>N+GyU_9WX47k<#)X@#7u72SAz}On8 zjf^b&(UICRvYNN^CQU(52a!e>#*>mK5eqPU{^}A_2N$y*m)wL@UpiPvfbMmS$M7c> zZgkURdIbfYzi@V%;e;C$N5}c*_k9Q|&bJOTE06JfGe8I`yov<{F9+P{fG+5yUy0bj zIs!;b_wC!)q@zej6A^%PIhkV0pt3V$hLnR6U^GclQe>^IttM4&69LxX9N;2vk3$X| zIN*Mx3-rULAmHVI6K-@s7uCxd>KoQu01qoBO`2rN#>PgI6(U9MJ(1%L=7s|S62rb{t7tYf)j3ZKo@jEH*|D{#uqzx?lcp#-*)WS5z$mNrC06^ z#B!>v-xH~>eqeoCLgqc~V`XPppopgq_J?5dNO^T#sSJ5wiYssU;r$fo}si;DQrwbU+t$@}}qg!a8Ij zB=-(@`|^_V?STF@6@6Qb>vmA*cE-uK0f!D9vfvf@2QsLe86n09)c^nh07*qoM6N<$ Ef;rgbD*ylh literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/OuterClothing/Hardsuits/medical.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Hardsuits/medical.rsi/meta.json index e482264df5f..ef5e62cca40 100644 --- a/Resources/Textures/Clothing/OuterClothing/Hardsuits/medical.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Hardsuits/medical.rsi/meta.json @@ -6,21 +6,25 @@ "x": 32, "y": 32 }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-OUTERCLOTHING", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] + "states": [ + { + "name": "icon" + }, + { + "name": "equipped-OUTERCLOTHING", + "directions": 4 + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + }, + { + "name": "equipped-OUTERCLOTHING-harpy", + "directions": 4 + } + ] } diff --git a/Resources/Textures/Clothing/OuterClothing/Hardsuits/paramed.rsi/equipped-OUTERCLOTHING-harpy.png b/Resources/Textures/Clothing/OuterClothing/Hardsuits/paramed.rsi/equipped-OUTERCLOTHING-harpy.png new file mode 100644 index 0000000000000000000000000000000000000000..8ccba9f1fca4cdb516c318fd5fd8c6cf15cafe3f GIT binary patch literal 2577 zcmc&#c~nzZ9)2uQOxP5{8X<-R0x@|3!j>k;o&*U544aA=lK@Z1(&PaVw4zwly1<|! z1X-$1nTqj2xASmR!-eW$0y06zi5cw+=yKqHs6kt92Ul_?ec=^I7#_lkd{~1&8zE5Sy@C_ zf5;IRn!K_wIkV8$*VoXyI+jEt=GWth5ng#(j=|zwT*RV9i{8y#U!RoZ11=}{#Sxcs z$@ByUiNrNnXqbWS?(RV(5=B;@n~<;=X~b|Gahahv3rb9kqS0g>BR=rq7!rw1BrjzM zO)>gtNa;oON4E-o%^Zf?%b&OSaqfq{WePEJ8V zL1Z%7!9B!_!eKBNVPRn&9v-2gp;#=ILZSHi`Qh<+PEt;IY-UJEh<^yj*&}G-!iBtA zy|uOV#I@9^n`vWLQ~4nwO9YCz#Py3D91OQs#n*Om#w>NwYzjlbd2Q*dY$SjFHHXc1 zbab?`U+PVZCy_{=o}THVjo#kgyyUzPc9LJ|v89_@19qQXvc8@Ym^9Chg7{D9pX@}s z4RA{0iueDg2K-(4m9a1uD7l$x0I)q|e9Y$WU-1k8EMQ2O0cY?Nm|}&DCXy)DNog9H z5ph_-KVniVvpIX>of9 zk{o7AOx$cbGGY_*U|7in!Q$d#T5%vvp~?mQk#h#=0boD?6+uwd8|1J^LzSz&K9J1P z#7Na*6{LhAg&c3B6|GYg!fXPfz$8r~{z$DXR27(rC1OxoAeBkwup0EI`5V=murQSK zrx3Y%)-1#}&^UuY=^vpyB`jtjCd6uxwPvLwBE%+sH7o(=0Kfn`J(Nlhpaz72e@I8f zOT161e~tK*>Cbgj@`Wg(kaaE&I#) z4-6j+oKsvM3fJT`Qn|>81%A8+#?i;CB$XrgM}=Gzz^u9x`F-}|#Y74-IAb-xi66wc z^!z-;*3;z9%UNefN?Omje5upgNRLo=W&x*l|4go%P)uL(N0Wb@+H^llyS$(LlcK8y ze7v!#x8>mS`vaJpn@8FQU9q=czwJYT$I`xDutSuvvKzmz$Z4`V(ie3)qYpK5yY3+6 zNm|YEbSGDni z$8dY6n+n}J@Ay{`+adJC(*ixJ_Y^In6}q_hR^UJpzprp$!@|CcuRrK+`*iU1X{)GH6;oRvttZpw`n5BS3vL{st{d7gsIg5rRVe+1RsA!y zyFYl9uBLs=b=ByD67LJ~+#V=vTy^D+e$-_Cwrbg{d?Auo50Jx;hne@7@_ziJgO+ctKrxP`)g`rUBq`6*jhy}r4lzw)rv z^ZD~JaaD%$j9bZ@iBjC{iOLH66Hmk2w#p`9#fUj8^~l2a+bZLx&JXz>b$&g3B>f+w z=EL%tH*ZeL8h)qW5oe4IJRC^Kau8hhYI{+AXH8EFJ?Cs2^ql&=+HC5}!6&LEla#FT zolsWC!*9&Fb-xOm1x*`koBQ+~L+yj_y{Cm|lk~aAVj23E$2OszFju(MVDGrZX6vSt z`4zMsX-j*#2dy^i(<`L9nCw<+jKf9;-O+jdzo((p)8`t-v%N!|hqG&>f;7LA!67!i zFAbL_Qp;X>?bw1gyARI9##?81eOKx@q(xVCSw&nlOjsJK%RKM40{1MP#SgIiz9VIO4W>4_&F*R&+MZt()493-f;>Qm5&{_SRXrrZ(XEbI z%KfxOZnkf#dGyfGJ@A;)7#noGz*X|AYS1|+iM6y7i>;GTzNp9pRpN@#BdCs>zGbAM zgdHvX$YdqMYVY>oAF|)|RG*w#YgbuXzVFmRqK^+*1Dq4|2U@v%G~-#x{SIhz(E9rD z66;>e47bX1foB=5jA+{vJ#Sig)4H=_8n@lQsNrxWF!bhyy$73CXMSi~PvzQa`tF}W z^6uux-V5~UzR=&!luEt0HzqQA(tR;ZM@xg9R?smLmB`x#`Rv&W5L*U!rC4CY1vHF$ pwPS*2QgUw+ulweJBNoq_^wHNd(WPV8FvkC8UTk8_iKw+({|!|)D^maf literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/OuterClothing/Hardsuits/paramed.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Hardsuits/paramed.rsi/meta.json index 31ae448b3ed..64b98f1e798 100644 --- a/Resources/Textures/Clothing/OuterClothing/Hardsuits/paramed.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Hardsuits/paramed.rsi/meta.json @@ -6,21 +6,25 @@ "x": 32, "y": 32 }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-OUTERCLOTHING", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] + "states": [ + { + "name": "icon" + }, + { + "name": "equipped-OUTERCLOTHING", + "directions": 4 + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + }, + { + "name": "equipped-OUTERCLOTHING-harpy", + "directions": 4 + } + ] } diff --git a/Resources/Textures/Clothing/OuterClothing/Hardsuits/salvage.rsi/equipped-OUTERCLOTHING-harpy.png b/Resources/Textures/Clothing/OuterClothing/Hardsuits/salvage.rsi/equipped-OUTERCLOTHING-harpy.png new file mode 100644 index 0000000000000000000000000000000000000000..229b19e724d307cdaebb1acb4602fb26c6ada67c GIT binary patch literal 2338 zcmV+-3ElRIP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D2)9W@K~#8N?V5dT zSJfHEpK5=!bWmD(X=?`yFF~kF1&nrDM&-XdcdCqfR&dF%od|J{OR|IL=V%z{hnzk4>K#-;_#tjgpX^U|K1ZmpB=}qwQ zZGZOuG5Hm_>FQ=#fAd=zfmk*isPO*w@ie)i<6H8?y_G}qs1fF0bJwy!Dzg2xeR8U^ zNM<&!apt!+z^l6&ypmOq%IgOjguyPFTM*QU9652uD0Ropv!rgY4O%E8zGUuz1cVP!)x!BUsgOJRf|M+9uZl%ewoyt{I{vgomSw)KjLGM z!Ku5QZ}JHUJ}ASWnF$>{a-i+FkNcBBn4iJtWM|2={5-??%&{#}_WLa+W$h!UUX5hS z@BAJ>#GO9fU;nIqKpA!J|f|GtK(f3#goSwC6qzh+{>VfA8CejEtG)I`GdU z<_SQmGC(^Q{t+L8Q)&uj!JN-|MT2X-yQjyv*yO1*Ox@yng(d~>9QXU^IDgix!<>l| zP5ZWvPC5AC!7)Du%bqJUk3smG1`QpH#mr2TpE7yUFdo`qgucE$legt}ehM(~?(S}> zJ$ll(7%AnjK|r#D2YSB_So7IgSthTbj2zI8ye+@80eHTam(G#i-d^Kkq?Gk}oeD6c z85wrAq#f;T;cNgNFT7wZzp=!WNhwG5*!yqrJa5Rod*lA|9ybS+kyB4Q7mOMM0C9kn zHMq2_)X4t2|FC#{amk2f$?Z#*7#RT&CBTO#|267&hAlJ}09^{WcwX*gX>IQqCR5lh zKPv-(d9w<<;(~mM$Nd2|w{{K&#Y=-h?@F1L=PQtv6_ds@Epoi!j3JN80E+83U*~0J zW}CbYUQ^KD-z$e|-nCmR0i2cqgJa-a7uq`IVqd>WRYrZP!63PG(4;CG3#<)LFms-~ zSW{{)@)z2=GEO}9VFqbpT`KUMw|?N!e`Q&oOqev)EHS+(Bd4Br!7Wy>GC+BGxwmn3 zj`8DeyrIbvPgY75f08E znKArN8X!tIzX<)mVcY;gnzk4>K#-;_#tjgpX^XTsfc1;eeQ&PuUS6@?yn=EbfXzq1 zeti^sfUa1%qYBOe&LjXfQ1#40Sl7|u>;VjZ&goa=&Y9nr8*krc_5<0&3-9Bl8gMO| zTQC4OI-mX`&|L8q}8 z!O8%TKKaN)X6LuQ?Xc|5SztbW^{_K(@H{)Vd(&?;0iQfo{NMGOP^1@e{V7*aOrHLM}j=@9|XQgV|4;6fQV{ z>JiorUD4SFRt6xVatsCNzB@z&A@&40mSVFP9~Iz&6K-@s7i79O5$I|)HtQvDY{MsK z7|Z|hSdsY)W3v;REH*9PYSuMeaKf!#7zVlyPFl1vVA-=(a_DHiYU-x+i~S)*!@sPT;8*wtwQMWfY)K`UY^p2{$^ZK6*e(b+v)D0Tj3x>r4+U{Nkr; z<;6`uHZDjMMv+v3zTtoiPPhTOpi|a_38w4SzmR4`7WcHa=1<&F5PrI~EHhmk)5ljSh;iZnm&CK;ll%GwW-lyQf!< zy!XER>5Vt#p4E5BYrFSIXIFR7B6`p_9B{!2H#(q87%sa~*8c+tLUc@^VXbB5<{SAf zrL*Pjqo+(Buuh-<&92BdT;PA;+p9c%0)a4hyuHPE0OthRs+McSH~Rh664*;np%bp&Mlv53n`>9h0&TkK1+i`s?lW*2m>STl-M? zasVzk;np%b=@|jl)dtQ%@QUmyQW)PWR~5}M<>J{3WK#2AWNyjzrhGX77o2bdbU`O{ zbA_`306!p_nwq4dqQWDk{BT8=R904|>^ndK2V9?~!&u-H1i}3I^SzQ1|AbgwU7Zva z6-j=+9}p>P-LETNh%^@Hp@%R>OG}F}LRg>r`g+4_H!hL?0B~rZpjWtFqyPW_07*qo IM6N<$f~cZ)c>n+a literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/OuterClothing/Hardsuits/salvage.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Hardsuits/salvage.rsi/meta.json index e482264df5f..ef5e62cca40 100644 --- a/Resources/Textures/Clothing/OuterClothing/Hardsuits/salvage.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Hardsuits/salvage.rsi/meta.json @@ -6,21 +6,25 @@ "x": 32, "y": 32 }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-OUTERCLOTHING", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] + "states": [ + { + "name": "icon" + }, + { + "name": "equipped-OUTERCLOTHING", + "directions": 4 + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + }, + { + "name": "equipped-OUTERCLOTHING-harpy", + "directions": 4 + } + ] } diff --git a/Resources/Textures/Clothing/OuterClothing/Hardsuits/spatio.rsi/equipped-OUTERCLOTHING-harpy.png b/Resources/Textures/Clothing/OuterClothing/Hardsuits/spatio.rsi/equipped-OUTERCLOTHING-harpy.png new file mode 100644 index 0000000000000000000000000000000000000000..43af6d982d916551a39e02afd57c99a0722a3439 GIT binary patch literal 2376 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/OuterClothing/Hardsuits/syndicate.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Hardsuits/syndicate.rsi/meta.json index 40d49ce92f7..80c2af9eba2 100644 --- a/Resources/Textures/Clothing/OuterClothing/Hardsuits/syndicate.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Hardsuits/syndicate.rsi/meta.json @@ -6,21 +6,25 @@ "x": 32, "y": 32 }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-OUTERCLOTHING", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] + "states": [ + { + "name": "icon" + }, + { + "name": "equipped-OUTERCLOTHING", + "directions": 4 + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + }, + { + "name": "equipped-OUTERCLOTHING-harpy", + "directions": 4 + } + ] } diff --git a/Resources/Textures/Clothing/OuterClothing/Hardsuits/syndiecommander.rsi/equipped-OUTERCLOTHING-harpy.png b/Resources/Textures/Clothing/OuterClothing/Hardsuits/syndiecommander.rsi/equipped-OUTERCLOTHING-harpy.png new file mode 100644 index 0000000000000000000000000000000000000000..9a6a1dabfb68e80fcd4020dda7975f81381b9c77 GIT binary patch literal 1198 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!7>k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`1Q2l#}zCNVSDt7~Vvx|=AeT(?m7ceD((wAm`hm*?rr(BQ!EpJBbZ)luJI z4+BGWb#)~rC4GH;3k!>MoX)JY%d8 z$jo`nQ1hUHPPU**kC;M_n4E@`OpUOTq=0xNGnc87YO=Gt6BD0|kTB3KRkQ2f0V&;* zAiv=MBmjn`@45d1HF6esL>4nJ@ErkR#;MwT(hLmD<(@8%ArbCxr#&oMtRT|rsIkPC zCHM8aZOc5jvdr#%|G%bsovZ8Ow`bm+e>=1DVD-b#1*t68{w?0e_+PPMqLX#To~Hp# z|68Qw7j{~t`%IAN{>6LVDZc2a3iF+ivmkt+^M+xWufPx%s*Qb4mXJZ#8!5#&0Em z+~xQ#`Es!r+O1+de&->>)&;W#-n%Y5=s4#+oI>yVh{eZ9%< zvg?ys5_>`2WdVmny0VOaL01IxgM!9j9!-}8oy=B| zAI{4rgfBiE)ZrlbfbZ*37W?uBz87WUN*C@h_G!+yK47-@9Ye!iZxmTT1)Kn4}_zh34yXLgj#Im;=Uaddn&a+*P9`Z|Mz2~2RrQdFa=CgypYLcuypOK?aq7S+1|W9936YJ zvr*y!!wSEBEB8dRS;U+E3t@cV#L*>d5j<~Cb-d(#!FzMaTW7e07-%L?y4E#h40F}*u`!W%usE8B8^v+q5k@k-*;q@%!m$>8bg=d#Wzp$Pzz8w-B` literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/OuterClothing/Hardsuits/syndiecommander.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Hardsuits/syndiecommander.rsi/meta.json index 7863947d1cc..4aa4d60ccb8 100644 --- a/Resources/Textures/Clothing/OuterClothing/Hardsuits/syndiecommander.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Hardsuits/syndiecommander.rsi/meta.json @@ -6,21 +6,25 @@ "x": 32, "y": 32 }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-OUTERCLOTHING", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} \ No newline at end of file + "states": [ + { + "name": "icon" + }, + { + "name": "equipped-OUTERCLOTHING", + "directions": 4 + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + }, + { + "name": "equipped-OUTERCLOTHING-harpy", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/Clothing/OuterClothing/Hardsuits/syndiemedic.rsi/equipped-OUTERCLOTHING-harpy.png b/Resources/Textures/Clothing/OuterClothing/Hardsuits/syndiemedic.rsi/equipped-OUTERCLOTHING-harpy.png new file mode 100644 index 0000000000000000000000000000000000000000..01080df27ddfc2c5e68ea64ee33ef9c8983eccb4 GIT binary patch literal 1208 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!7>k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`1Q1o(uwCNVQ-y1IKhTKGF!nkcEXwzkfkIrEjO)K)pZdUfqBTeh4#ckcG> z+o6^=>&>l>`UYROP?wUD@-Q$|Qc}{_*H>3pXJ~M+u&`kG&!DNPX<%R=EiEl3CMGB- zXl-p>UzD08r>v{1yI4~4jIl-_Gv`4A9Std&9x;V%L6v}j02v`+phJq?cbx%JIwe7V z!T*T|49Bl=_5k&97I;J!GcfQS24TkI`72Tw7?@iCo;_Pj;F#e#0YgRc z2{UfZ%e|9#_ua3*`|nqJb~a7VJzxCq_2uuLd(QCKv$;rK{O|vl^-m?k#D^39nx{$a zJ-I1IcwK$4phL$Tv)Q~GryQK*<)yYh=E&Z@>q*fXu1zUBZ|e&_sSEeIv?Mg}$lbQ$ z`|^FuojNBcFj(A3GGypc)GD=-YvPq+(CKSERkF}n;D^kb#pimyxuxG)@kryCh<;;cJ7?HGS#NmvDo;Z8>#WzdTbQU+pY)&O!~4k#^;4dd@Y=YDy_L?M>@LIn;m=w78OLvkalhBH zI{sVg-TSVltKTvTjE=AUl{v#>?zVlJx&9mLSysG#_`vp6L4?YJ+7Ie2j31tu?(8y+ zI&JiF{xSUvV9>eDpCoXm`=M~>S+8mVv;7Pl9QUuTe^|C`{f{R`B6;t-7*)32 zSornLWV;TJ3TR?u5xKNe=7`)32QT>N!PrDvyJ> zPQV<;=TTdhKgsoF5$9OjeQUX7#JgX7|3fR&kC*8-?|c2=czq~0qviwAe~*+I=GbWj zF$LJiS%2N*_o6HP>fV1IazV2WUKXy)&%gV-dV@<<{rh|O-Z2KU*Z$YfZ!>ptUAl=E Qm`fQvUHx3vIVCg!093;!xBvhE literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/OuterClothing/Hardsuits/syndiemedic.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Hardsuits/syndiemedic.rsi/meta.json index 373d282410c..90e3c14bb5e 100644 --- a/Resources/Textures/Clothing/OuterClothing/Hardsuits/syndiemedic.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Hardsuits/syndiemedic.rsi/meta.json @@ -6,21 +6,25 @@ "x": 32, "y": 32 }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-OUTERCLOTHING", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] + "states": [ + { + "name": "icon" + }, + { + "name": "equipped-OUTERCLOTHING", + "directions": 4 + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + }, + { + "name": "equipped-OUTERCLOTHING-harpy", + "directions": 4 + } + ] } diff --git a/Resources/Textures/DeltaV/Clothing/Head/Hardsuits/Combat/hos.rsi/meta.json b/Resources/Textures/DeltaV/Clothing/Head/Hardsuits/Combat/hos.rsi/meta.json index 58442928cec..41acd5c4fd5 100644 --- a/Resources/Textures/DeltaV/Clothing/Head/Hardsuits/Combat/hos.rsi/meta.json +++ b/Resources/Textures/DeltaV/Clothing/Head/Hardsuits/Combat/hos.rsi/meta.json @@ -6,28 +6,36 @@ "x": 32, "y": 32 }, - "states": [ - { - "name": "icon" - }, - { - "name": "icon-flash" - }, - { - "name": "off-equipped-HELMET", - "directions": 4 - }, - { - "name": "on-equipped-HELMET", - "directions": 4 - }, - { - "name": "off-equipped-HELMET-vulpkanin", - "directions": 4 - }, - { - "name": "on-equipped-HELMET-vulpkanin", - "directions": 4 - } - ] + "states": [ + { + "name": "icon" + }, + { + "name": "icon-flash" + }, + { + "name": "off-equipped-HELMET", + "directions": 4 + }, + { + "name": "on-equipped-HELMET", + "directions": 4 + }, + { + "name": "off-equipped-HELMET-vulpkanin", + "directions": 4 + }, + { + "name": "on-equipped-HELMET-vulpkanin", + "directions": 4 + }, + { + "name": "off-equipped-HELMET-harpy", + "directions": 4 + }, + { + "name": "on-equipped-HELMET-harpy", + "directions": 4 + } + ] } diff --git a/Resources/Textures/DeltaV/Clothing/Head/Hardsuits/Combat/hos.rsi/off-equipped-HELMET-harpy.png b/Resources/Textures/DeltaV/Clothing/Head/Hardsuits/Combat/hos.rsi/off-equipped-HELMET-harpy.png new file mode 100644 index 0000000000000000000000000000000000000000..a2b4c824221b8bf50d91e48923a5b4fde9ee6dda GIT binary patch literal 915 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+yeRz*wH?>>S|f?5q$_l%JNFlghxL zaenH=z21i%B#zCm^H>^YwL(E@#=e{vX!J~iz zf!IG%fA~v8V?N6wEdmNN^*bH;xB5m|8Zarr@;`E!@i`jT1_}A}Sgyl6b9TR94KIa`XMZl*`*2xGE)Tb*~&a8R#@~PhrsN zE1^qQO1b>EjL$1a}zR{>Syy zh8eXUsl-;~GCH6rLw?xf`6g~5$47&T5F|J?kkk9yHH{&7gxUjXgbM7$z zJ^nr<>a%aWfLT&0>#8#+*#)!g{ZOYB&o#B8wRqxCKF&u|6e!A}~F8dAc};M7Y15b~mrtfT#6s zOTvx#-4icdcaQ zuiA!|iuPyD^M!u@In}>0KIO&7>@M~y8J82!#hH~J39>0G8|Cs|5mD-zbb2?RM}onE zVJukEp9bhd$1jYa}O`P>|j2^Zj!z`w5{<6^sU%%wG)x z_`Q-Qy>@V4EjFjDfw_URYxUKK>)&&1yVJFVdQ&MBb@02RNT4FCWD literal 0 HcmV?d00001 diff --git a/Resources/Textures/DeltaV/Clothing/Head/Hardsuits/Combat/hos.rsi/on-equipped-HELMET-harpy.png b/Resources/Textures/DeltaV/Clothing/Head/Hardsuits/Combat/hos.rsi/on-equipped-HELMET-harpy.png new file mode 100644 index 0000000000000000000000000000000000000000..8ddb6b20116c7192ea22128115f8c877bc9021e4 GIT binary patch literal 1431 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 FV1o9hUXB0& literal 0 HcmV?d00001 diff --git a/Resources/Textures/DeltaV/Clothing/OuterClothing/Hardsuits/Combat/advanced.rsi/meta.json b/Resources/Textures/DeltaV/Clothing/OuterClothing/Hardsuits/Combat/advanced.rsi/meta.json index 1253f8b4e63..4844e816bd1 100644 --- a/Resources/Textures/DeltaV/Clothing/OuterClothing/Hardsuits/Combat/advanced.rsi/meta.json +++ b/Resources/Textures/DeltaV/Clothing/OuterClothing/Hardsuits/Combat/advanced.rsi/meta.json @@ -6,21 +6,25 @@ "x": 32, "y": 32 }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-OUTERCLOTHING", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] + "states": [ + { + "name": "icon" + }, + { + "name": "equipped-OUTERCLOTHING", + "directions": 4 + }, + { + "name": "equipped-OUTERCLOTHING-harpy", + "directions": 4 + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + } + ] } diff --git a/Resources/Textures/DeltaV/Clothing/OuterClothing/Hardsuits/Combat/corpsman.rsi/equipped-OUTERCLOTHING-harpy.png b/Resources/Textures/DeltaV/Clothing/OuterClothing/Hardsuits/Combat/corpsman.rsi/equipped-OUTERCLOTHING-harpy.png new file mode 100644 index 0000000000000000000000000000000000000000..dd5a7508a9adaaa0cf4ee425851af507f7b06b4d GIT binary patch literal 1409 zcmV-{1%CR8P)4Tx04UFuk-ba9Kp4iKen_QOI;bEbn4yY83q?U3rGj0mLtDYBOL9$GAxXm} zMT)E7;!to9UHlsS4|Ek=6$C*MMBLo{TBOAHnnH`{;2oFu$8&jJ?w$ku8J!t+FbNo@ z!?Wp>v{YD@LN5qo1R(@5AT!&V&&}oW=lHyXPt@Cl=!O4{o}y|qz}HPY#Vqa+&k$$U z9ZT>waX%}|MdCx^IHv;=UkP3D_*rnt<9ES4pPi+6B8?OzD5zo$IvgaZnv~h^zGTz4fC_mSeJ#|$$x%X?ym3;i)K#Ub zk*?CzQ4_iU%+uB;C%o>F6wvkLx^JUEXa{K2UH9wAbsNV(;1Rem+x`mWH2pz(y{*L# zfaoT0cG=dHUEq8R7<{l~E;pqBEx)D#uctt70qDB{!Yf`@t$m!_1NjYlqHADp9~h(m zqpRP^u4nP+sZ%rn003Z6OjJcIE-)D#CJ+-DUuJS4Cp1k_S5O=su)WGJbhvLlL;#=2 zDKJ4~F*H~uC;+kGIz2-nCo=$$wjClZC@(%QI7$HM{{Wr;A}KZ~Fh3U?BN7%J4iOe6 zEjwRkW*#Cc0001>A4UqT+a?v zb`rOB;`e{cu87VCA7s+$-|Wm8p@p^hGCJD+6W;>g0)kB7Fzc%D8f&d7`K(t*)}pi) z)`zQr@VzmnFZtc1&XFNB@P=GPA@RPa9<6fzX3@hVn6B$C7nF|=XNA~ zT|qcE3}mi!?k_w#j{b=Pgff1&Fuq;|V98{ZNc?~ZT*==Ah>SH9ATTED9D?vM4*n;( z7;}CX=!g+x2%|SW->(Baahg*E^As~)4SIeiHkOFIw}uhthkpk=F~$)Q1eDVJMriTk z2+NFRxOgmdRe+}1kC?-G0{?Onz!Aao;?DXA#m_F0S+NrLhv5X7y_&R2Jno*U+IdcRMfudgpZpTD+nC|ILfM<>~ z3o}QwtqWj>qQ8T{xxXk(kzXP3%5ma@F9a~vvVwJidD#V)j4uVqFg9630KxM#rDsh5 zF-DxYUpQ$oi|_zr5EC!*$oWG6HqOa!?1kKygBbl6=7KK-FoZuCLQ{Ys!6!beU>}p+ zund*&k)X~WHrCG}dif?)6&n0*A~L~V-a-9Z?5Mr#pYSd4Eg&ca@MTx)6X3h4RzhBp zV}cYyYgHh>XdWgxEddv2u*Dm4cq?~Ds2?VnssH&68Ax)6q|gw+_vDJ(O%81pGz=Z} zNFy4j@yVipN;294lBQgZeNqo_A3?xK)N=xj0|wcS0KrT0f%{h-cfjSG@|e~n;?hsa zNn60D22Ftlx3=7EEd}xyxqitl>Ja2@*OVmSUO30G7C1<{Yxq@Pk0n>j1?SAB1NAq=3V^#-fv!04{IzHSPYQVDQ5YuXP}A z{Vpl+7X;{CtAf0BN}-LzpQ08LnPu8QErO;3CgAf34ydPqQUdjC+qV4$(R_-DDZ*>Q P00000NkvXXu0mjfKJtEZ literal 0 HcmV?d00001 diff --git a/Resources/Textures/DeltaV/Clothing/OuterClothing/Hardsuits/Combat/corpsman.rsi/meta.json b/Resources/Textures/DeltaV/Clothing/OuterClothing/Hardsuits/Combat/corpsman.rsi/meta.json index 1253f8b4e63..4844e816bd1 100644 --- a/Resources/Textures/DeltaV/Clothing/OuterClothing/Hardsuits/Combat/corpsman.rsi/meta.json +++ b/Resources/Textures/DeltaV/Clothing/OuterClothing/Hardsuits/Combat/corpsman.rsi/meta.json @@ -6,21 +6,25 @@ "x": 32, "y": 32 }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-OUTERCLOTHING", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] + "states": [ + { + "name": "icon" + }, + { + "name": "equipped-OUTERCLOTHING", + "directions": 4 + }, + { + "name": "equipped-OUTERCLOTHING-harpy", + "directions": 4 + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + } + ] } diff --git a/Resources/Textures/DeltaV/Clothing/OuterClothing/Hardsuits/Combat/hos.rsi/equipped-OUTERCLOTHING-harpy.png b/Resources/Textures/DeltaV/Clothing/OuterClothing/Hardsuits/Combat/hos.rsi/equipped-OUTERCLOTHING-harpy.png new file mode 100644 index 0000000000000000000000000000000000000000..c87fddc15feb19e2cb35b37f757a40bf5b981f6e GIT binary patch literal 1414 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 JPDHLkV1j~3b8r9v literal 0 HcmV?d00001 diff --git a/Resources/Textures/DeltaV/Clothing/OuterClothing/Hardsuits/Combat/officer.rsi/meta.json b/Resources/Textures/DeltaV/Clothing/OuterClothing/Hardsuits/Combat/officer.rsi/meta.json index 1253f8b4e63..4844e816bd1 100644 --- a/Resources/Textures/DeltaV/Clothing/OuterClothing/Hardsuits/Combat/officer.rsi/meta.json +++ b/Resources/Textures/DeltaV/Clothing/OuterClothing/Hardsuits/Combat/officer.rsi/meta.json @@ -6,21 +6,25 @@ "x": 32, "y": 32 }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-OUTERCLOTHING", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] + "states": [ + { + "name": "icon" + }, + { + "name": "equipped-OUTERCLOTHING", + "directions": 4 + }, + { + "name": "equipped-OUTERCLOTHING-harpy", + "directions": 4 + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + } + ] } diff --git a/Resources/Textures/DeltaV/Clothing/OuterClothing/Hardsuits/Combat/riot.rsi/equipped-OUTERCLOTHING-harpy.png b/Resources/Textures/DeltaV/Clothing/OuterClothing/Hardsuits/Combat/riot.rsi/equipped-OUTERCLOTHING-harpy.png new file mode 100644 index 0000000000000000000000000000000000000000..16687721a7fa4c1a40f99c6d3f1938255bfa4b37 GIT binary patch literal 1375 zcmV-l1)%zgP)4Tx04UFuk-ba9Kp4iKen_QOI;bEbn4yY83q?U3rGj0mLtDYBOL9$GAxXm} zMT)E7;!to9UHlsS4|Ek=6$C*MMBLo{TBOAHnnH`{;2oFu$8&jJ?w$ku8J!t+FbNo@ z!?Wp>v{YD@LN5qo1R(@5AT!&V&&}oW=lHyXPt@Cl=!O4{o}y|qz}HPY#Vqa+&k$$U z9ZT>waX%}|MdCx^IHv;=UkP3D_*rnt<9ES4pPi+6B8?OzD5zo$IvgaZnv~h^zGTz4fC_mSeJ#|$$x%X?ym3;i)K#Ub zk*?CzQ4_iU%+uB;C%o>F6wvkLx^JUEXa{K2UH9wAbsNV(;1Rem+x`mWH2pz(y{*L# zfaoT0cG=dHUEq8R7<{l~E;pqBEx)D#uctt70qDB{!Yf`@t$m!_1NjYlqHADp9~h(m zqpRP^u4nP+sZ%rn002l(OjJcIE-(-i8DC~{O;J}F9VR+GLm?+L&&ygVFhT$Pp6}{c zA}28(A}T2_J25y$Bq=j0FgzF=A`=!H4-pmb>R2Z&IA3OF0001FzVMg;000HHryG2p41yo_e4c>U*uQBmO8)eK=tDr7 z3(2~B;JX+dA-EVz-a4wAF!OwdrrSCwAE!BoFi)}IcL8#g2ruw_NAH?N-1J?Wlq0%=ZhPRh)Y zvCjgeMmGZj*ZHb2#q@!|M~YKA`AR@!NCOc(3e3wPuoV0?1a^~#@FalqX`1r&NdO-s zOYohAh=qqI5}pYRrV3n)qfcG&%sb_3NxHOX3_ zn?3kkBQ()<`pSMj3wlg=6=(%vh8uE$5m0CeFn`QNf>|!ewZo_i4FNE`iUhMv4Ypr`~EzRbi|)E^}%QpgjZ@YobsmlS_Fg79XkfcM`0ifLI}0^7R&jljB^ zA)^wAYhttE>9ar%p-+_qrGOwn26dY>a==#Ok3co+gv8b5V)4-dbwO)Lx5jFcwLm1X zMSXLAR`6{3)Hscs*19TSw-0y;NLj#C-sr=9@7o?gsvFfLYZdB&*AQAc&=7Qf(}NRc hsbG}CEZeqizX2xH9gqBlrJeu)002ovPDHLkV1fmhd8_~c literal 0 HcmV?d00001 diff --git a/Resources/Textures/DeltaV/Clothing/OuterClothing/Hardsuits/Combat/riot.rsi/meta.json b/Resources/Textures/DeltaV/Clothing/OuterClothing/Hardsuits/Combat/riot.rsi/meta.json index 1253f8b4e63..4844e816bd1 100644 --- a/Resources/Textures/DeltaV/Clothing/OuterClothing/Hardsuits/Combat/riot.rsi/meta.json +++ b/Resources/Textures/DeltaV/Clothing/OuterClothing/Hardsuits/Combat/riot.rsi/meta.json @@ -6,21 +6,25 @@ "x": 32, "y": 32 }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-OUTERCLOTHING", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] + "states": [ + { + "name": "icon" + }, + { + "name": "equipped-OUTERCLOTHING", + "directions": 4 + }, + { + "name": "equipped-OUTERCLOTHING-harpy", + "directions": 4 + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + } + ] } diff --git a/Resources/Textures/DeltaV/Clothing/OuterClothing/Hardsuits/Combat/standard.rsi/equipped-OUTERCLOTHING-harpy.png b/Resources/Textures/DeltaV/Clothing/OuterClothing/Hardsuits/Combat/standard.rsi/equipped-OUTERCLOTHING-harpy.png new file mode 100644 index 0000000000000000000000000000000000000000..1af2f8defa69d95f6e75ce122c6a42bb0114dd3f GIT binary patch literal 1339 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 KKbLh*2~7a+$(4Qp literal 0 HcmV?d00001 diff --git a/Resources/Textures/DeltaV/Mobs/Customization/Harpy/harpy_ears.rsi/harpy_ears_default.png b/Resources/Textures/DeltaV/Mobs/Customization/Harpy/harpy_ears.rsi/harpy_ears_default.png index fa27e2b74a63f4fe460360508f78c5a595514d0d..00ddb37abd93a1869f7bf05c598a5b675368ff82 100644 GIT binary patch delta 626 zcmV-&0*(EW27m>S8Gi!+005o0f$RVP0e5LbLr_UWLm*IcZ)Rz1WdHyu&y|tAOT$1I z#-FxIrB*tqAmWgribD&oE~nzTZahD(YRSHZ=h;2^sAHTWOsD!3{L zf+C2xx%;(9iSIRq7SX{w?%p3y^1R$V2lz8OGwiMeV3-cirhik?QejyNz92+%5R*vC z%(mupb9wwZKJVZY^)@bg;eVsIsM-wh^$<@ni#xefp>43yn zLRUO~7F_c9T`#2XU$cX!s{MR z0o_lo`!)&$cYsFSb-#{Ww{Z*v9)Sz9?XOTy(;uYQ+gkJhh-?C9mu*ei1@@pFKdJ6Ovfc_gGwBlve`i_%(AiqIRbPeq71Ak-me`NI=WnpMJ`QjhK0000C zP)t-s-QBvcuYbV6jsO4v4bGBa00004bW%=J|Ns90Kq{&900009a7bBm001r`001r` z0jlENk^lezhe1Fbo5m^#6aRk=hba92FSo;F~N=PO!PukL)Dysz?j^ zFh=*NKWnq-$VH_m59pmtw1@B>_5N$d^Y|Y0UhoPEC@?6Xz@UHvV=KV}7r0tBfTK15 zmJ|i;gJzf;BB3bU2UX^VNKnc4!KI72y|VPz85B@pP(Xn}!T*9<53^@4gH`4zv;Y7A M07*qoM6N<$f`@h-Y-ulHdG ziDUD(bp>h5h6og%2spa1H7QVLX;bVf=jem0yo-FJ6g>~Cx^}I8@F<`_Aoh>cAN~^2 z7*Q5SL6y$cqZ!s{VK1cW?{ExOx@vV<0@nLg)4iW`yG`fv$P{u zC2u*FsN5_vX~Kd9O};M*1QurnrOmDV*p@Gu`pMu|)QYCbi#voW7cU80vDzzCId)l?tJ z`JwECPs^5SvLCprXYecMWK5n1V^p0lvz=bUK^ub-ewOQd*Ub7~_>bkuwwImn8V)Nb zO#0St{*NIwF~ic=txpjc1)K#Qk;M!QddeWoSh3W;3>YDLo-U3d6>)EGo#t&e5O58g z%%{;HDjK*_JIR%Cii5aYa&b(&F{EOPtRrh_ozPJ7V*B76*r>&{weRj^kf7a7;ay8uyOdJXg*a(N@M)Qp` p*LAZ_UY8FHPQKI#&op0O1}z|)1BgN3Qt)ID<>~6@vd$@?2>`acOk44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`0(2Ka=yPMjEEWt9;bS>)qWR9>DaD5wIIDb#n^4W!shg8YL2g8_q-H?td1 zh_k>WvY3HEPacFBE8aE60|hsDx;TbJxWAotk?WWOhg)#;`~N3`#hslKKivOY!=Bap z?!mRz-ml664haqnjf{*e$M$owy>!_-+4kJ|G~vzd6-^~VX#`ugtArf*m81luh5|2KQPJVb(F##g?&QUS`D z%BgHB6gqog%^lPW_WImNVbJ&S!GndJJEulQrZlY#?zw$^EZkOlZn`U!o0;p7GI zJZKN^bVH%=)AU-gYHk0OP-xYAMq$F6$c|{(s)dnm6-l^JvjH6nCAKwegeQr|6iL}I zlkCl}FR+ZEC)rn{Ss`l=kcu%p>yZ5HXaUboVpV6iz0kKh(a?aQMm)qcYE{$K8c8-F z*5H}Cd6o$v-ei)U$mW;<%OQ*$mcs%!*f6F=7DyN-;pio8JiVhu0#=f(c%H5Cyzl#A zUkY1JnUAQd$_pYdiX0#~cgFNkgEQTYO_CN(nz-08Y|pSvhSH*+1YF-(sWxrgl_T;Wb=`*z}IRWwCfE{ z|Fh1LXtyw96MmeyR^7p5aGIFj#`a=%weEJWRd)$>1-VxB5)WwxE4J}NnQX3ur(G)> zH9J64WE-X94#uuK)!@C3c~T`cSlk81NCyjX9q^LrQ&Q-NmbP%6hG)`AmaeMl7B+M( zc$B1=u3{N+iXiBmti}~iRTY(!N;rme5)-jrZ1ZGH*Fz>Iln0o@29PK+BJns8AwEJl zIVu-9RYVdOrM!YD6-y-EjvsRj&@QTW=R)paSyyLJ%xt=qVS$6qLL?oKp9R?=LnOU4$o=kPQT5YHrOfb|M!t^IdvM!n? zI@@yM3Np(Cc1#$cCd^nu&k;pcN^-o!#fvcvI*gULqAJEYH7Y5BT2e$Yg4^+~Rq}k~ zkW?9l3uFPK7080w+*0C}Hqx&UDlY?m6K3ZCwW-L)m?J^~}W zxD5%q*Jv3k(tO>vs|Inp`VmMCXu8M~{QpFBv9*N0e6qy>O|AjUo`Gqvcw@e~%+&4@ z(&QU4FfmO_31zm2Rlho>*wZsIuIB=4Fcbb14PT{#sI#rk$ z`s4k%^=~o{r4N60XMy)W7NYCsr{?k1)VrG=xwZd?H%|6!vR};Ice-cc(Mvb3&+oxM zetY@y+{?R%PW^W5gE+o&ee?wTX$(ETgMBvl>pMR^{K-n~1iJX-HXDSp`dvw!QQYuDZR(QE5Yzm@;Rx_0j9U-cus2ezbc^0yxw-SFk(-%IpA OMP_g`eWri+{=WgCF3rgR literal 0 HcmV?d00001 diff --git a/Resources/Textures/DeltaV/Mobs/Customization/Harpy/harpy_tails.rsi/meta.json b/Resources/Textures/DeltaV/Mobs/Customization/Harpy/harpy_tails.rsi/meta.json index b795894cae1..bf58e418285 100644 --- a/Resources/Textures/DeltaV/Mobs/Customization/Harpy/harpy_tails.rsi/meta.json +++ b/Resources/Textures/DeltaV/Mobs/Customization/Harpy/harpy_tails.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Phoenix and Rooster by @leonardo_dabepis", + "copyright": "Phoenix and Rooster by @leonardo_dabepis, Finch by @stillxicarus", "size": { "x": 32, "y": 32 @@ -15,6 +15,5 @@ "name": "rooster_tail", "directions": 4 } - ] } diff --git a/Resources/Textures/DeltaV/Mobs/Customization/Harpy/harpy_tails.rsi/phoenix_tail.png b/Resources/Textures/DeltaV/Mobs/Customization/Harpy/harpy_tails.rsi/phoenix_tail.png index e3aace5e8c7665792834d708291eed6429296dd7..0254b0fe3e20ba9cfed369d5bf1ae009d04282d1 100644 GIT binary patch delta 760 zcmVoE~nzTZahD(YRSHZ=h;2^sAHTWOsD!3{L zf+C2xx%;(9iSIRq7SX{w?%p3y^1R$V2lz8OGwiMeV3-cirhik?QejyNz92+%5R*vC z%(mupb9wwZKJVZY^)@bg;eVsIsM-wh^$<@ni#xefp>43yn zLRUO~7F_c9T`#2XU$cX!s{MR z0o_lo`!)&$cYsFSb-#{Ww{Z*v9)Sz9?XOTy(;uYQ+gkJhh-?C9mu*ei1@@pFKdJ6Ovfc_gGwBlve`i_%(AiqIRbPeq71Ak-me`NI=WnpMJ`QjhK0000C zP)t-s-Q9`6z@e|N%m4rYEIQ(Z00004bW%=J|Ns90Kq{&900009a7bBm001r`001r` z0jlENk^le!3`s;mR9HvtmfH@)FbG2l`Tu{OA?`KO6sLXJ6i-v>6i#jSK&?L10{kMN zJO6ut!hh>75n$!sAOS1^*A~rzm2$VB0UQpTHKhPbbvW?rAQgZYEBWPpN{WDPgt%tV z01gNK000a4u%@&bc<9j#x_&i6h&81Fg1~B%2w*cM38&kFgz$b0wj(G_% zm7#691av!lNNvSr>y!nqSpW=x2@3{5cIVQa0dXJ!jH45O!bFBh5Fz5xv9e_gXgLkB zm}((9wjtsw6WD)5z`a6<%(T$5AL_AX+sCX}K80000a$U8+M{!KzDgOAb-sf%pf5%+gi#l=FoNg zJi;gHLrnDQzOUmLD5y3AeEr0;%;FC5JaKx|iC53`b7AU+|EaylUKtDMR@#`AxIsKc95M6?Yo15kB&3=vS*l~S#$h9a6q1mjpn^^4a1f(v zQf8ff@rG|1WqUx$f_&>(YKm-^GbX_-Wjr(Wo1nkcX0P_m=eZM(; zItRGC_kW@-|AX@?7<2%f%G}1cYD1&}U@QN4JZh}E*&kCw{nIuSJ?@900Wt3Xx8% z7msTkxW>3$mn=l~dm*kPqBZ_iT#h#{;Mzek#C zP7x3R5fA|p5CIVo0TB=Z5fA}N0{HYy8Tf*rQ`%qPoHwU$0swn}%+b;ywm&q6m8Dr-z^X2`Vc>i|pJ{6caFBJAn5K9ico7#uzyz>P zY16?st-EEev7y3Gkt?B3DPV6%VGSM+f`1(2FTy+V;oD#~1&qAC7ce=&#K-S6DHqHd zB&^0}X30>Ka>R! zmYi)82H}Vig0WyYKm?9L;18(rgCUQsXp{f|03!}% kSV?A0O#mtY000O800000007cclK=n!07*qoM6N<$f)LT#*Z=?k diff --git a/Resources/Textures/DeltaV/Mobs/Customization/Harpy/harpy_tails.rsi/rooster_tail.png b/Resources/Textures/DeltaV/Mobs/Customization/Harpy/harpy_tails.rsi/rooster_tail.png index 1cbca989d199294dc78f92597f300b889c7a9256..e6a4e00271d766311760f8c3db426a8386a53afb 100644 GIT binary patch delta 741 zcmVoE~nzTZahD(YRSHZ=h;2^sAHTWOsD!3{L zf+C2xx%;(9iSIRq7SX{w?%p3y^1R$V2lz8OGwiMeV3-cirhik?QejyNz92+%5R*vC z%(mupb9wwZKJVZY^)@bg;eVsIsM-wh^$<@ni#xefp>43yn zLRUO~7F_c9T`#2XU$cX!s{MR z0o_lo`!)&$cYsFSb-#{Ww{Z*v9)Sz9?XOTy(;uYQ+gkJhh-?C9mu*ei1@@pFKdJ6Ovfc_gGwBlve`i_%(AiqIRbPeq71Ak-me`NI=WnpMJ`QjhK0000C zP)t-sz`%;Hug=}wc>n+aC}Umv00004bW%=J|Ns90Kq{&900009a7bBm001r`001r` z0jlENk^lez`AI}UR9HvtmEjJ;AP|EOc>i~{y@L(ZEL8k?jVvy+-xXX^Yllie0;m~a zrGI&rEq_C&o6Rs*7s96NmRYT5fVvWX02DC#4Wt4X0EGLvbpQzS|0M!Ez!{(zJktxK z0(gMs08k7G&H%HS5&`RUN(Fo<0STZIkO1mG09zY-Pu;`|+GZ)-Ee#VE%VO!v9l>CQ zCVbG8Y%GZo29z8C=sEVCb_|Hj`QCG=%E-{4ZC)wnyO{|0s|kDu(X_aFAVFaWGncxD zYd+2FyT}j^cXZ7M3#(^P0AqdtdIn_+WBvemZ7YDga$U8+M{!KzDgOAb-sf%pf5%+gi#l=FoNg zJi;gHLrnDQzOUmLD5y3AeEr0;%;FC5JaKx|iC53`b7AU+|EaylUKtDMR@#`AxIsKc95M6?Yo15kB&3=vS*l~S#$h9a6q1mjpn^^4a1f(v zQf8ff@rG|1WqUx$f_&>(Zc2+PUcx+|^ z@EF~@Erc%_8oI^3Cks9T0EA<1A_PwWss?~aGx~ksKOo@QIF4C!LDc{lX$t{!l_wLb z1z@AkA>c`UwyhQb1#s+Rd1mB2-zrrDfMAS$3xC6#1=RvTlyO}y7q8~0_SFI~Do%vK zuhfHnt*#1G@?|b{xl7*m9>}5yh=2%)fCz|y2#A0Ph=2%)fCz|y2#7#^1b&s0ZC&lC z1yL{Ncbc96u-L#3u|6>%nbO3fYz_h`!ufao~=sVe|rX$cR}FdhbbI9sBR zRQlTrGWtx`2JM7sDVA`ugiSjErY63ZeSg}qAI}LKGbJ3}+9u~QJLWm|<2vHo>TtX? zZtZAEd#=dGj-)c7rj-D`(%)B+r{-h^@MDORBmb9-*w(gV-&da*sHp~T&JAqMRrW+c z1VlgtL_h>YKm$+pD%Q20q9Y zZn-4O)48aNzr!M+rK0nSuF)Goj(gwl>P~X7xuqKPKf^8f%EXedOguW)(#dC)^`A@! z+M=0d?3%l5#o7OYH;eW=etj`pBk-@{zcz=JA=2|*PRuK?p2VAT=#oKuhptFalvj1L z>QV>!b-pTMevdaMyUyXXU2YYlQ>4Vnc(Lq>pjfwtdgq;a9^NxbOYeMpcxRWF&d=)G zZl62WyquMNd=uA2@5pIqXPw(wCKmQKRPgVd{c5Lvvi86DGWqfz7f|3ac)I$ztaD0e F0swFy&(;6{ literal 0 HcmV?d00001 diff --git a/Resources/Textures/DeltaV/Mobs/Customization/Harpy/harpy_tailsx72.rsi/meta.json b/Resources/Textures/DeltaV/Mobs/Customization/Harpy/harpy_tailsx72.rsi/meta.json new file mode 100644 index 00000000000..8284a502d40 --- /dev/null +++ b/Resources/Textures/DeltaV/Mobs/Customization/Harpy/harpy_tailsx72.rsi/meta.json @@ -0,0 +1,15 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Finch by @stillxicarus", + "size": { + "x": 36, + "y": 32 + }, + "states": [ + { + "name": "finch_tail", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/DeltaV/Mobs/Customization/Harpy/harpy_wingcover.png b/Resources/Textures/DeltaV/Mobs/Customization/Harpy/harpy_wingcover.png new file mode 100644 index 0000000000000000000000000000000000000000..dd870ea01de19f0be125401c82b89be583d67358 GIT binary patch literal 438 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!7>k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O_~u2Ka=ys;jFjDJkje>swe@XliO27#K)PON)t#2?`48>gobjMIO+U1ybB4 zL4Lvi;ef%*pYan=n6tnmvY3H^?+^$xifVW@04-(rba4!caDO{3kngYphlArQv%UWt z*}b%^*1nxqYw}T5SocTUzbyjwDV)(kESl-qd zS{&$Qm2NsbDW7%HOYRfzneso0v)r+Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!TTaK~#8N?V8O? zR8bhl?-aC%l$2D01k;^@D}z}oRNyLH3GMSAa3S;u1TOpsY|$=oCAkr*h0B3j3Axh( zgHQuO1Bn*Xea_tH_TKlNbLQT0oEho-VCH_F_kEuCe9UJQ2m}IwKp+qZ1OmOt&d#fP zvRjIx?JCLE$^QPj2{bXW)bw7`N*fJg93K8mj-qIG_GRH%(){S?J+BVu1)2a9a(X%z zEi62Dw%Oc#TOSzsX7-Volr6-{%KQ5K{O9DT0dfQ6kMmUGZLWurA6sf5+uJkI>grRg zh8xK?0|X?y8S{WiG(6AyWbes%&9Ip#EWXV=aCHvixisVofE$;V8Wn^I7@{dwRu@56 zo^4nJ#4Az+nwO(T<}ZqFgLtkYWC}n5V0ZV92?A4m6hYpP_J{*~y+ANbF1Q2O}d4bGbb_B>yka4As zbjK$EAh6FoK@n`Dz$E~1^dU#BmYuIGU^DYX7D4)0UmuIA)yCQe7|T5Q1QZ>*#5I*% z0wnANLi3tA$PZ(3jB8+LCx+y^4M=q0_ z_+qC8=#~JWW6O02TqZZs8VXH;P6{Abk(>B5q&wXb0A%iV=G8!lRRaXzL7`U#;xkur zDzjjAk~DAE1q1?tKp+qZ1OkCTAkcBz`sKsM#=G<*?&9LJYZ1F}Abfs5JG&qC_x~`* z@>^nv8yWeM95pyPnrfTSBJuhC0yP%>7Tfy&02>Hgtv*PO{`H7W9Kbo*YpqfwzRUxS z&{`B{0a#INx3=EY5qNL!letE4-X^Y7AU8B5hX!bbR-Bg}%tZ^%0$>QSAp#B!JvQg@ zLkET*l21+j$^GylX~z`s#XxRofEH+?7HH*Yg$Lhs$Q9uD_=D+jSv8vH(3+V!N|VW7 zk0idrl*JW`xp5tu05wuGfERdzx8zicwKDof20J)-ZMHUaA*f4`N#sWg#jt$!-Sg$)e^v z-Rmwm8d@nrW(~j}8Tro2W*qdIc|a|`R|NoX`p=rF2~?5q_s`G2CTH_Od&#&B-}{BW zzK7;zQGQs$+ugg9laJu?CQg90wYvFNrwrEX#x+_ydVYC1W1${@ZWye@tN!o!;Few; n8Q{7Z*SLJx-WCV`KceU_?kAg<0Dn=!00000NkvXXu0mjf!#O*b literal 0 HcmV?d00001 diff --git a/Resources/Textures/DeltaV/Mobs/Customization/Harpy/harpy_wings.rsi/harpy.png b/Resources/Textures/DeltaV/Mobs/Customization/Harpy/harpy_wings.rsi/harpy.png index ce932f0df5f3627c5a80937ab9f05092f9ed96e3..4ed888072fa1d599556eab8afd421c5d48041574 100644 GIT binary patch delta 994 zcmV<810DR;3W*4i83+Ra005o0f$WhXAb&YfOjJd{z=WftyRx#L>FKt2cf3taeBIrc zkB`W|zlHz*|9X1AV`HMPucelj#$jQf%F2L;hsWybxc~qF7g?}U0000JbW%=J|NsC0 z|NsC0|NsC0|NsC0|Nj88ecT8D000SaNLh0L01m(a01m(bYSxJf0009zNklr2Ldf_g-U4p{;=dD^6BR$= zPWw{QsKAMQD-B4WPTq!Q1{gu!~G||?NflL-_H0R+>Wq6L-H9Yr&^N zvvTnr!syWhRd0HDO^JScO4Sc-t}73F*)Qc{l#V`@`O9E|9X$#(Z&eNhbAJiA9a3TC zbPDv`j1D*wkT3x*Sj+t?!1YzKd+~@7U(cfSAtuPyPisg(+G2b|jJ4U>H;m!u-qo-% zUa*gWtvLFookxQLxpI%(mw>~EQfpoUaKRWr9E1S&kwL_6Fz$N$)&8iRND@qAI1PaK%@_)lNZ;{uCD8J%A zv;K^GYX2qP0&fB0E$}}R_?(}Ym&h7iQ;7!wUcsJz z%k-e51NW;)%29>a?0+v1WjQAi-1KC@3x?29HB`@zm!9SF+Jk~R?AlKxqU?+!a?q8D zv4%GVYA!9$z(S2_^jI~r5FSvD9yR^&S2<)B{eyfcKq5To9ehJlP(syu;_K`=w5D!~ zx{9P56ne+o0>B#uI{+0;>k0e}IdK+CGZ)3vC~}~SZe_emAy1)cFxrrasSv;uZSq-z zf5VRnOxRRFM{di1QNo|%E-@tdd@`)DKLiP(5Og$`{U2cR@bdX4z9}%q-^W(${!Ais Q=l}o!07*qoM6N<$f@ksEmjD0& delta 1329 zcmV-11sdXlS9MprW9Ih6;#; z1O-av+`rlXGB-E7w`ZSiqUw=W{!)TcC?~O3<>+7pK-`(9U$DW;?xoh+D^X`0WYb!Z!3bDD#uo}Mj_bB)G_k-o- zWq%e2{m|c^j*K>MQJ62yvR`T?G-ior9v>f*SAfat_xnk!V1aotC&Ap;*VnzHqoZKV z!^6YD#>Pfj1pr!NI)W7d0n$9N%zp#f&i*n+8(>7vNnj4h6_@b31aT10pVlxFAO}zg zSD!1bVLSUt12F*_^xfIn@n=<-YJXLy(YICT zHsg52LtJbBs3brNfPuBOHGgF|FdlJY0yL-=tQcMxD}hn$?%dS47vLQ2IuRJpScq#; z6BNoOOvn|H_nW*WIH^T!HkLi3X+LuMOumE!f`AYLVw1x#+iZSARtAAc3L2lzyvf2AkqNm1#<4T6(AQu#+5qC zJpck|9v!855;G6vb&g{!#N{0Bf&jwNAARt!BS|$6a2@>s#}ULue9R-O-34R=2BD+e zFk}Ln1c1=3baHay9#kmMilvhS!K5kq61gXFA&IWS%83@x);tL%0e@JxffNiVnh9uQ zo-n44MHtilGfe@y9~otC5{q3XU|Irzj?D_}Vs4@}B;5j&6hOu?H;HK|52hsm$ho_m zR|6fU1_;25LdON-b1vUh*)S(bIq%d3WHOmdCX>lzGMUU2X#J<>>FH_tN6g;d-q`+h zZNn&?Vzx|T$`7hQdj7h*1Uvzp&cIR$6u}x{S^54_;BycXbKQI zj)x<}Y?D}OriTz_0`T#I*Y@_dJLl>*C8F!Hw`iJ!8mSo`=*KlEYQg0FFE&eQQ1FXEJUPdtR8Gopm3J z@{c9_!t#6ZsQa@x{)z^0e0=PF)hUC0cHruaNt`UgW^&7$4s&7|0+(t>D`e5 n{x##8kRA`~u{iVp(d+#Nk>Dg~@AHrF00000NkvXXu0mjfj7@FV diff --git a/Resources/Textures/DeltaV/Mobs/Customization/Harpy/harpy_wings.rsi/harpy2tone1.png b/Resources/Textures/DeltaV/Mobs/Customization/Harpy/harpy_wings.rsi/harpy2tone1.png index 2030ff8cf2dc36c1f600ec256d459b11b938e46a..3edaf057e7bb004a80b8f2e3facfff439395e87b 100644 GIT binary patch delta 673 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 WFIwX-$2=4O0000VGd z00B-(L_t(oN9~otlEfegL}O->|NrC>MQ9L>wX=uaD*GZr^MY0?IqomD0UJR2Rlrd< zymXShF+dy}M36;;hA9akC5}M$u>j*0`a^=7O1BC?>Jb2t0J|1oe?%~4+;WhPvj(iw z5nMkc+IqSPEU)X=f0R`4koLeNxZx_9uoaTIc)KGxq;5Iz9UZ}qpjV_5prd;cY#9wQ z!N^e5A4xK`Z(<kI6o@a zN(RggPbzotjW%EdNE`6i054u2g+>Itd3_Wb0q|a*00;nBa_%=)1-vf$1`fW^BC4nR zQi1}m42b?=PQ{bGO>l&ZYE&L8|8tA99{~lvGy$3rP^uga1gh5XaXk(m9aADUi}6 zT?#|#1}W(8W+VWunrfLGt;<(298e|Vi0(}J_D(^)jj%Xg^E ztB^j*6d*yM@(jF7oc&t`UIj&nm}J}i$<1Tyxg?E2AAj=8A_iyT#*t?PD0&4T#dZt> zP?i8tWUy-o2d8Kf$0<|5yvAlC)<-|6rDunzm;0e{-vhbpHB!WICNE zW@Y8UEq`BP9YYXomT0x^n?`^w)`D@saQM}h{^B~H3ic7eW9)f9I?n>@1!?D3;%jo? z=H@4*YinIfs~!lck2SLoNyILRgM;T}WNYgwE&sE#9@WEW)wcp>UFyX)I6i()<(-|k z5$%x*x&Pt3q%P+Gf?%_RJPW+f0T^MbyzG;JW_gLN_QUoe>gYT(brA3xi#+*({i?P| zU*Mbj!eqD~aB1Mn!f5oZ&=)1j06}Or?-{=2@#StIaQtp?@cr7@ctp;F{ryjr{!6e= y@DaWSKL3XAjUe+qs9&7=mQ-`x+ph9|V$2`lxLHp!OWOwk00008y{y08oQYr&Cb{ zFGB5~2{1w3;c%#P=>U7y8c;Fml{bMs8v&@ZUavFhA9f=(Z~^oAJQWeJV=chNrp_yb z+4T)^RHPx;YPAwg12|4|dAVFV)9EzQ7G3?M(~tAarmui1gEU0g+QSIZNfmgIX8(Lq z?f3hhT`yq@NPqhZgb6S~-R*X((xcHRu?CvT-EP-@1iVuKL01ZWN7aoB`2@Rw+x8N9 z2>>+u&gZkU*=(%Vinw5H>-Bn0yU%sKoA5$5ClOG1VIpl!cwOH?{cpp4Je8@E*6W@MHHI352`ROX!vsD0$`)xcVGT^ zJl^qmtX8Y(lIKrziwt-Ea=AEoG}ml4AAAXP3_;LIMWfMhDlR%(3hpka(@E#PF`bVD z^9bNJ_J6x?ohO0xf~fT?^fftfyWP~W-EOO6(F4Ktk!JECjKCo=o6VGw!C;_<|9-z$ zi~kFlM22TSg!*xLKJz}hXKtTU2KPL zqbQ^EMC>5oH5R_|1AVHra9`k?`NE_(AFyel%~Qhldd>7ji9A3Ms@1A`2MU`!Z*%85 z{^>4!|FHPc$BfcX06uXa-OqpcUU3tD-SdB9?~+Omf}oSaFUE1c0FyU)m*v^8rT_o{ M07*qoM6N<$f}AK>5dZ)H diff --git a/Resources/Textures/DeltaV/Mobs/Customization/Harpy/harpy_wings.rsi/harpyfolded.png b/Resources/Textures/DeltaV/Mobs/Customization/Harpy/harpy_wings.rsi/harpyfolded.png new file mode 100644 index 0000000000000000000000000000000000000000..32dde55ffdb3c313cad74e00f5b5fcb60d1dc6e2 GIT binary patch literal 1017 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 delta 668 zcmV;N0%QH$1?>fpNq@os01m0jFf%ctoEa3N7){5kUXz_h$u7$NPocrNVFl87fP<5 zY4%YgwR0KA_3sr2T}eEUjf8#eEr6ZWsr7vVPBoL$fM1Ka)GGV6+JIw(@nFDfp>+ZU zFCHT&rs>w)oPu^^WIQvDCr~R6f7Zt02BC=B<^#*m8^8h#u(lS?z@Ou4SQ8t8jAu5J zy9OuIA;5~m@%VF9vXw}GZfbArsg&eKCDqGXB2Hww7gu(ik!RQ;>#-cWo1VG0st$f zmsfWaAnFC;t2v{1z~A=Xf2~8#L-RpU?zET4ETB1j>IM043IVY~=o8^4U@ffrhbRL` z-Z^=OZvtc0;G#J}U<)@u%dxr<^7j%>pIo#Ba+ZaM{{^IhR`e%a`3NmXS&Q0)`xnIb zWBbAuinj1_zt{YO&DXL~*mCh8Xu{^}OZwRDegW{V7DE-{LVExJ3IG5}MNUMnLSTYP C=0gPl diff --git a/Resources/Textures/DeltaV/Mobs/Customization/Harpy/harpy_wings.rsi/harpyundertone1.png b/Resources/Textures/DeltaV/Mobs/Customization/Harpy/harpy_wings.rsi/harpyundertone1.png index 7a792111c50484da1fc227cfc6f2635405275079..4410790851d2aee72b419f0b7f9fad068353283c 100644 GIT binary patch delta 1149 zcmV-@1cLjL3bzT6Nq@fp01m$aI0aKA000C`Nkl`dk!k z_MAcr*x&zR&d0|;lgY`K-aacU&r6-1*Ufcb-)(aS0|Sq|eL{h4oNJAbb5)DR|fV9^LwS?snPEsAWnSO>@1y{mF=d2p%EG_UI2g0Cw|cf-l?j{^HwjeElU=0l*Bc zt$i~y4*^3%ckP|}K!4bQJ=o2g0eS`@bbWoHr1un*QLh6Lk^!j(zG&*@;93Fzg5?G% zsdqD^eb^owoAug25L`<%i%JHdGY+|V5nZQ^>$1-V$A7R@xj|rk6NGwS;Il|Y35K|C zxdi0wXGK=d6rGW_S}_AEjTl)tEZ06~6NW>K!dW;9)nCp5zUJSprObIJvob zW^QOGsusR>unYTK3br~EiU%R$fov!H`=~Oi*B56WggOAEK)o*Onf=gomW1{-H+7_# zs$9Q~IDepRky4ZL#isqumjYJ}mNF)-8L?V$$M13RFD9g*wDj#vD zre0kN+rftL`TgYNH0kJQH)Z)PF`Vn|?Xso69Df}AD9q6i`}}@^K8Aja?fid$3m6_5 zd2CDnX2j(jK%JbmdI_;F$AORVH56|E7*U*8S6`H1cxUImxkpg%a;{lmZ1`Y{2KWeH zQ7<)^n+`J5gdGP5A0*w~can{bMe{?)*49TeIDhnzKcGnR{Fsu3PkH%2^!`@}=I7LRl+ z8g0`xE}_5h9U7>|-mW6^DR6f7+ngEE5Pyn%{7GOlPhjaYHTZA_0FMUwqri242 z{=CvY3(Tl|2XSqRG7xQL>}3_s%24smo^>D0hI)cfwFlsjjC`|l2?wnv9?+Mpr*;B> zHvMPKiU>rJ@B62xUu|vLXe$YKk@ddN-hRtG7UhQ}{KN7_`BnFO`T8mY_ P00000NkvXXu0mjfHdrDo delta 1241 zcmV;~1Sb2p36ctsNq@lr01m+cxRGn^000E1Nkl! zj)IDU4k#(9cmrO5f@h%M1$YB0BpO=iD5xmtprHazLV^NawU^)LKR21!j=jk)dpdto zlw|CT=O2%~S(YM`$z(E_OeT|Q=koG$h{N922(?W!1AA_T;(uOWU(NmQ?r!z$+1Z(C zo12?6_gh^^h1Ap+Zz<Kt zvOk`O9{|6pmEfy3y{vr8%=f&c zmH^Dq#l?l0c?eirTeB^rf#=}|{@^#Y0`v?*C_au?R)1EEy%cE9xQAUQBBlZw9eml; z%fYn-00jF!G8uR(^bg;mcMK%KwM0Wy6@Z6v$jysrn|7}6eLgsbH6;^z$ACTdT}4tQ z0GY)BCs?;!yQD3%w96_1^aZ~h!!{*@B>Jidc30xtsGKpg2v)9rI)$*9vO>9{RDqlk z={IF5#DA7QNnHk}0$BP8()Tt+QEmA8!7u!CDOht5xwphtj_fC&_fd1I*Ox4*l+u*~ z^|~Bo_G4yJ6Z@=b)R|(bV#Yw10JJaC=Cg}<660f_10`L=lTm&5A)d7Psu|@*2>J{l zb_48FJc;rN@i@?#5A+3natv#3(D%3+uYW1tnt#SZOcEwemp8L6eAc*`OeT}bWHOmd zCIgbcbDy4`R$pTF_V#-F&fbMCF(q}@-{78}o<2PZ5Wl#%Xz%`z^7qTyPh)MYuCCfE zHwcD@HT6cU@3t5<(V4>RzrDQ`v$M0-@;B26O3y-{)zRi(RwiSNt%B$ZfMfX&2nYbU zf`0?Bwar!xG5#3~K#Yhr7H;Y|f|x$-=@yBPQn_fQ~rugC@j7xKBKUYw>bZ>I?1DH7;Sih#eZJ z$2QjpehPeie3&yc8Uq3y$IB6XrX-dzQ-cp@0`T#IV|#ns+;jHZ647_ryJ#DOF@G{< zXrLZrP&Ay$^)ELPpqGIx!AXdh$UQ;t2YRC9UZ9tPH|SxBy=({vQvA5eJ_Ke|zJs_n zMVW{}iM_1hG{%ab^sM_}HH?yk+8%&^WaOKbOE{P|@qn>}J{178>3`O&L?DZN-+zC9 zx7Mc9X%g-t^u91NGh;p$<(DP=hf?MD@>Ta|dHodzaD04h{;N|un|9$E9Xn?J;NZYo z48!tO`NyE#^?#K&-}LTC2mhLIjZcT`wK((tQ53%c+nbTPV1g={00000NkvXXu0mjf D4Af#N diff --git a/Resources/Textures/DeltaV/Mobs/Customization/Harpy/harpy_wings.rsi/harpyundertone2.png b/Resources/Textures/DeltaV/Mobs/Customization/Harpy/harpy_wings.rsi/harpyundertone2.png index 8a753996b721c068ba7c405e784e1de89b24afc3..ace8b76f08701a55757527cc7e284fe4802d49aa 100644 GIT binary patch delta 256 zcmV+b0ssEw0@wnOND++P-MDvmbg!>{00001iKADMSsZ`C000ib0l1NC?EnA(!AV3x zR9HvtkHHeeAP7T2{QqxWB06rZMRs~za!`!q4N!fl1SA0ZC&0CFzJdTI`tH;hkFwvs ziY68Sm0sHAtL0ZfCqw{+bc0?G=?+GSPSC5VUnZ!`e49W$E86Kw*Hyr^(JXke2}G6= z2$ogtbj4&Ww;iy7x~R->L?mS_Jf%(%>=2j$&1-&|XMm`-0DJ@hNN@5sLIj}N=7${s zJmmYw8St35uOq;3pvVfo5|98W0SSN-kN_wF34mS#YW)Dl>pm=JcePXi0000(SsZ`E000id0mpBsWB>pF%}GQ- zR9Hvtk3kZ|AP59O{r{Vn3Ah@QAX};06McvjIvt?)k`$x>{8K>v?Y97N!4#VfVZr&g zlg!QyOpAcHmv;ITNh|^?R_ft%L1X621k%&u_`1lt zA~-+P7J6{832I$NAhfhPzAnu5vI91dE-Gy}5Y^Hb9!RHD>=2j$kJtQY?gdr272qNu zK>8-HBSZwkZN9eyf``0a>;;c`z1j-=2NYSsCj}`0DM$fGK?*<$QUG2GTKfR8{XPUv SkHr=M0000or!5r^Vhk}cRwjlRUw}8DBB9dQQ1}9_H8fN}A`u^80tg zz4z>$nQ!LIIT!Xej^j9v<2a7vIL@4MeEez9o)%Ga|AY3JgntgNu6{S$+aIDfhllS5 zi;EA#`PSB(BHuY=Y>1lhY6_0Fr_eB*jk&@_yLIIwl9&Ht<6a911td1vsMChAU5N&BQ0Ol-0y!6*U$kCxwvKr zz(^aWk_Q~uU1Iqv!J0J`BjyX^vI9tJ_Ca(B&`>(9d4CMiE+@c3+OVLQ(cE&v_v}D9 z5%9OW``XkoQUKg&iI!_Bg>_#_fCXon?F>ry5_uo(;csv6vuPi73ej@*O9cS=>@8V` z66_^h>r5cmc^2H0q%X_QNC&`>9e_5%rzUxT`)Lc{uk`PME|LedqaXU!j5ufVlL`QO z7D_vTc7Kz^CS&=6QR$53sP)xlY*OX(E(LTQSCjRB=K>tZaU92S9LI4S$C(8a|Kub& zICy*e|NhR-$9v(s+7W;8l|Ph1+{()1_Ua$!=f64=TH@c*RYLT|NDj`3B@SRr&f2(? z_@5+BRRQGh{ov^6y(w;1AT~6#mjSIYM{xlLH-F%W7aeFn1mDZ13LF1P)S|Q`^f*2hcg|T<}Y}awBK32{v7}S002ovPDHLkV1h49 B*|`7! delta 1074 zcmV-21kL-72fC7mNgnY(dG?|P&&*logloJcw#A4M}K7wxE>+-h*JQy+8&5|E1(hpo9K_ zr=i*b5CF#vo_~gAuz+Kp=bC60EM(&8KZ;!AX(%QDLBR-u;wOT<9_w|oqSQ9Nr>Ca{ zn|e&JesBjMfaBxiJQ@bpM-!((PlzLXqN&5m6B^769K zit>JxRfg03{rx=p7MH(OF?!d9L#W zSjaW9rM(Re=h=a>5U_W7d1>lcN&qgjMANW`bzMz>1*^<<243()UdQ#YcXf4Tt}hye zXj%QJ0DmB#y^;G+g1vHsWc2cV7cX$c<{Maqa)OfKI2=>2x}s zPN&o9Y=-6^9ByuI=Ks-MTwJXDgT)xEqN(X({ePbA_4W0~lYrp&_V)7Vo0gyOia(26 zc!nW{pFA}hQQNJ*Up7}yb^)D1l&-><-Qn4{G(~CZ00{&DOB}$QSFH#U`_wXorUd9c z;O_3u6t^kh8yfO3p*4Dh6EK~DBVKeM<8Xd-bhPvmR5HdbP_qHw&;TvaL@m@Bp_%|> z6Mr8X{QUe(^Cu@Kb7$5INl;5nDjq}h1s1cf}KTQ;HEA;mEHr?6TN#CEJpVQGo zC!%#T^3Z|Q5`1uQkdE)~?~~o#-Kq}v7Jvaz3Lb&$;8)p{N@$ywUjnVr>;(@7KLtua z=sNy5g3Wa#)=dEJCB83YYn2$g?JYbX)PD%gAPp*1jcEh=Hjpj2iQpx2Ptf~;E);Hu z{B?0Nq@lr01m+cxRGn^0008bNkl0m=6W8VD%^QT!ev1O%HSl@=+kRl&~6?iz_HL=-OjALcD{yED79yR$d9 zoA-meeY-dF=Ktos+1=Ya!7vQNFbu;m3^R>fULK8HhNY6+EE+@aL=n4UxUP(s6}+xd=cTm$EGi{K2nD!`KX?0cLAy>0Rl}n}C4( z`+su;EFg)E<`8POa1r~+4i`lS2Fd=i`g*a#&c z2`23N`nR-qcfVKGad!4qj=Q$DX-q)sz@!BbR4EucuWeB%Cin%q@7M?>08n*2Jp2)Z z!L!@Rssu>J;^Km|sS4$rF2G0DZI}e;P!fRe1Sm7*cYkargaAOx1k{}XWya&kw~zwp zm~DCZgc5<}7*9Yb0U$Zq^m!c`oP47ZHS|rM?>fgOGRFuhU=m{!#<4;Q&~K0?Njz?F z0Sv=148t%C!!QiPOfC5Set!OK>c7K7W07YKx&II$9v}aT_4SWxZ+d}7Xsry*B4vI! zylTu79DiulD{*rdqkFlu_&~Y&MDdy+j*77TH z2#`ox!pTG$1JujCX_-$_DHg0FFsVo8K7nSCcjd~w3Oqf%$nEm-j@&j0(o8YfFqXvW z=@&U`+uNU7u>>wIPNcoJ_ahZc>Oh;;KamxaHFQ9%A7zS8gfbh2OAN+?Z3vzy6bt^# zM`wO@s5Kxa#FqTOVtf_A&BDgUoV;0Rde%)KCd7sq^;=^ZXmpZzjW)Be+j8Qwp`8#% tQLHna=)iNd^QP^AC(*AA%>RoJ{{YyZK?Ef=()9oU002ovPDHLkV1n{oZk7N5 delta 730 zcmV<00ww*p2A2kqNq@rt01m?e$8V@)00084NklxB!&Y6m(Q{G)OdPrIpw`%M*DW+r;_7keyEonK<_NjmHilBw`qb zVHk#C7>2QNJRa}Z?w6w|8vvFcUs)8gg%ig6Z{o4}a?tdD`f}$LVwu_GmQn z_Co{E>2#brKIA@ynn~Y4sJ`mMhxvS7D0o2a;0OLhp#kFns15RFQElfEpo6-T$wb(B zgD0px{AJdFig`0|M30BNTD{y7LC0MIf4RVP52Nk8HvqyQ?jEsrvxM1Np8CIb*k0MG}U&R3x!lW$a_ zie>Z2ca?n;&OSm4ct+oZv9FK<)ElH{lJpx~0K+g0!!QiPFbu=IHs|yC<$uEZYP7x| zpo8DvIhRg$Sy~VP&U=R+6gRotH#->i7A=Xi|*{tMW;t(K_w1o9U8Us|P`@3acr%)_d zN8nkH%*zCt0b-CvMx5UQx7$tZyWOtXzZ0aHVz6PH63gXMjM{iSuEi4AY&OE4&1R`s zQU!Hd|AZ?hYk*ik(u^80(tInj#9%C}L-2%GEK_)wkFNZ(s5T%b#HPQmn2d<)W}zf<(SKR~GQNJ0O|4S780*pa*-7)>;+yDRo M07*qoM6N<$f{ANj+5i9m diff --git a/Resources/Textures/DeltaV/Mobs/Customization/Harpy/harpy_wings.rsi/meta.json b/Resources/Textures/DeltaV/Mobs/Customization/Harpy/harpy_wings.rsi/meta.json index 0785ff1aaa6..4f2afaec699 100644 --- a/Resources/Textures/DeltaV/Mobs/Customization/Harpy/harpy_wings.rsi/meta.json +++ b/Resources/Textures/DeltaV/Mobs/Customization/Harpy/harpy_wings.rsi/meta.json @@ -5,12 +5,16 @@ "y": 32 }, "license": "CC-BY-SA-3.0", - "copyright": "Taken from S.P.L.U.R.T at commit https://github.com/SPLURT-Station/S.P.L.U.R.T-Station-13/commit/285f6f86ac41a6246f250993486effeab8581c2c, edited by @raistlin_jag", + "copyright": "Taken from S.P.L.U.R.T at commit https://github.com/SPLURT-Station/S.P.L.U.R.T-Station-13/commit/285f6f86ac41a6246f250993486effeab8581c2c, edited by @raistlin_jag | harpyfolded by @stillxicarus", "states": [ { "name": "harpy", "directions": 4 }, + { + "name": "harpyfolded", + "directions": 4 + }, { "name": "harpy2tone1", "directions": 4 @@ -54,6 +58,10 @@ { "name": "harpywingtip2", "directions": 4 + }, + { + "name": "classicharpy", + "directions": 4 } ] } diff --git a/Resources/Textures/DeltaV/Mobs/Species/Harpy/organs.rsi/lung-l.png b/Resources/Textures/DeltaV/Mobs/Species/Harpy/organs.rsi/lung-l.png new file mode 100644 index 0000000000000000000000000000000000000000..32aca484b9fc08665323556abb5a3aab1e6e7cf7 GIT binary patch literal 279 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJd!8G4U-!7ULw@2AMbS?e{IeA*r(@YTh(izN9AEkB>i_cgZ@G za2(M2|Nk2=^A$m!{C#^C&u4aENU`kMW;QM9$DgOhwK5GNUwF>P?@dS$5lghF`X+gF zn($i&wiW9gr+IgI8rbZvW7R49tvC15f!o*5ORl@Sk8hjIGmZ%nf0t_aloT@X9MECE zc!kNu+F?SxK%S-PCwm@&SiT0G+J8?pnc4NlZx{k4k0&mk$LDp_x%Y=W#3zmHJUl!M Yt2&}y|Bvjb1p1W0)78&qol`;+06lANPXGV_ literal 0 HcmV?d00001 diff --git a/Resources/Textures/DeltaV/Mobs/Species/Harpy/organs.rsi/lung-r.png b/Resources/Textures/DeltaV/Mobs/Species/Harpy/organs.rsi/lung-r.png new file mode 100644 index 0000000000000000000000000000000000000000..7e29649ccd8886c45fc090f4fb039498612cc5d2 GIT binary patch literal 275 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJTb?eCArY;~60D08M0%POd6!x2 z{^1*B%{+K3f-A?8<3PqPO9qy{d9}w5Xy_dJ@aHPG!Tc)$3r;X@ zfA4hZz~lS?Wl6FzQ?> zU|3_rV436~qi{l>qwL6Mb$>~Vik%*pPJ8gOo4k6tU`bWLtp#m6!F~vIs6KGu00YB* Xk4V|}u5V9)zGU!p^>bP0l+XkK4fJs$ literal 0 HcmV?d00001 diff --git a/Resources/Textures/DeltaV/Mobs/Species/Harpy/organs.rsi/meta.json b/Resources/Textures/DeltaV/Mobs/Species/Harpy/organs.rsi/meta.json new file mode 100644 index 00000000000..e639085d8d0 --- /dev/null +++ b/Resources/Textures/DeltaV/Mobs/Species/Harpy/organs.rsi/meta.json @@ -0,0 +1,17 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from tgstation and cev-eris at https://github.com/tgstation/tgstation/commit/c4b7f3c41b6742aca260fe60cc358a778ba9b8c8 and https://github.com/discordia-space/CEV-Eris/commit/476e374cea95ff5e8b1603c48342bf700e2cd7af", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "lung-l" + }, + { + "name": "lung-r" + } + ] +} diff --git a/Resources/Textures/DeltaV/Mobs/Species/Harpy/parts.rsi/full.png b/Resources/Textures/DeltaV/Mobs/Species/Harpy/parts.rsi/full.png new file mode 100644 index 0000000000000000000000000000000000000000..e358746ec8b05d4b8fe06de36c6fdf5d517d86b7 GIT binary patch literal 585 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyjKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCikF1AIbU@7}$8Ys;qp|NpOFzy83115b~gPE1Vn_4WPv?$ft>&&$ip7cXA? z^5x4{H}7oPv}ynT{XRZEk&%%TCr-4ovJw;&1R4Vbdk#J{0#f27L4LtNqp$#mXAaNe zfJ!(EJR*x382Ao>Fr%o3R|C+IS)MMAAr}5?C*~G6D+sjs@6fRPc*^_G|Nkpv1tykQ zUDmfXI=Sh0is;f$$N#8bxUxyddH!cj@noKklXJGDuCnAvx@~)gCEDy+W9qXSrfX-d zE>F9A?OkHp0-bk1D|RjY!{iZ}df3;heNWD&Lzc^#s|9Z!-Tl~NPP>rB^OysAyT7_* zD0~vzJ^#S2cPBWPAKAYCw($;z)OD5YCyZZ9nmky2BCh!1HHGP&sm>D?6w=&!IDUl0egv6S?+` ztvp4m-Y$(}k2*WE&xXzgdIzyrtaN zZ5Bd|f3j7tGPl0}_;UO0cUs3QPyIRc-9k6^%>489b7RT{Tc7!>$Mdy`-?!=#*mpeW z)NbAhL0V7iPgfmyzI(~_S)OgVf`Sthqo=eO*1F0^I@_v0tlq;>Jg% z2A6+v#N20H75?AdRi^y+=j9!)A9ma}HWr^G5A+HQJkWglsg7adKgrsKKm9)+T$J|Z zx^mIn%_n!OuP=6+K9Bp^#g^$dU0#P~Y@4jmAHaXpkICzh#qo}S?#>B4 zu|c;eYVPcGWB)_nZ)BDNxmwXvKmY5U5o{u>eKaJ?;cVtTl{LG0rM_10-zBm0ZC>V; z_knkFW8U;HOI~H^yL84(=?B|(FRkXBY_M!qrk3bL*Q+M^dH*l7Ui|03pqkO=xu1SZ gg(DNp#S9M|@2}~*sLTGs!W$&!>FVdQ&MBb@08Z1!#{d8T literal 0 HcmV?d00001 diff --git a/Resources/Textures/DeltaV/Mobs/Species/Harpy/parts.rsi/head_m.png b/Resources/Textures/DeltaV/Mobs/Species/Harpy/parts.rsi/head_m.png new file mode 100644 index 0000000000000000000000000000000000000000..e555d030beac914816bddf07bb4242dd747b2584 GIT binary patch literal 435 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEV65_VaSW-L^Y+&HRZR{eY#$!S zZsF#tVb!ggdZt}ee!*1TELqFHjbckfA|zP1S(X=Su8E0xeol7fKKT|^i~AK3?jYr{f@V zJm_b9D*ui*{Vpyk+oH>Fzy7yfy{3P&%G1wEk3tQe07)Ist#(ZP<&AHy{=clUNo8;C zstA_NDyeDfROEqfhk*yGnw9nq9`*hEF4a7&-ou$b_3I1y=qIxamg(<*@uc+Ii%+$V zqOKZu<@Aeg%4eE$hVp#X-tD<*m<}N=Fwb}3W!58u3%C`%9zb2HFe{!)GUy@k5G+x5pMTGB9v3FZlWY;^rSsyh1=8 k2>iHKwhqE#U^vj8!uU~x>Hmh)R-Pa+Pgg&ebxsLQ0OtTG+W-In literal 0 HcmV?d00001 diff --git a/Resources/Textures/DeltaV/Mobs/Species/Harpy/parts.rsi/l_foot.png b/Resources/Textures/DeltaV/Mobs/Species/Harpy/parts.rsi/l_foot.png new file mode 100644 index 0000000000000000000000000000000000000000..a03b643ad62fd7e3f72bdeb8643eedd61e873d43 GIT binary patch literal 272 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!7>k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`031o(uwT3K27`1nkmI59FZ5-27pC|F)z4rCmTQ>_G293?@1!T%wE;a>Az zkQ&YckH}&M20bMZW?c2??j)dKuBVG*NQC>_YmR&k3Op_sr!npQ-@A1qcZ*`yopbS~ zjB+}H|0Nlj1fhtfW7?c&E(c3F40J@Q*>{Ak)_uM(ZIxvo#A r#(y7HWFFqN`|gTe~DWM4fT0>T} literal 0 HcmV?d00001 diff --git a/Resources/Textures/DeltaV/Mobs/Species/Harpy/parts.rsi/l_hand.png b/Resources/Textures/DeltaV/Mobs/Species/Harpy/parts.rsi/l_hand.png new file mode 100644 index 0000000000000000000000000000000000000000..2e0ec001ce2acc03b55ba45dd8bfc5c1550308ba GIT binary patch literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucK|N0w$B>G+x5pMTGB9v3FZlWY;^rSsyh1=8 k2t0_qy^{&TWH`{B!ub9#)BlK>Pklf_p00i_>zopr0P?gcvj6}9 literal 0 HcmV?d00001 diff --git a/Resources/Textures/DeltaV/Mobs/Species/Harpy/parts.rsi/l_leg.png b/Resources/Textures/DeltaV/Mobs/Species/Harpy/parts.rsi/l_leg.png new file mode 100644 index 0000000000000000000000000000000000000000..a70f92524b61c9295b6660ff966f106df153b26b GIT binary patch literal 2285 zcma)8U2NM_6m}uq+QESRzylP?ctUIsjvd=^Vk_B5oBm`ZZPjF>)dt#)eUq3bwy~Wi zEfaqd5)&ZSv1$_n386_tJWNb`0EtOu+Ju0IJpd9fAO;UeNc?CB9x6>L=Q>UZrDKic z*ys2=-#zE#JNM?;F#Qg1T<;vYK~!hhGo)(78R|!mt-IhKS6k-4L89N z@Dtl-cRiiUfFVIa0N@0kkF&hM3JR&ARb0)^H$3;x zI_sj{!n}>SDePKxN5jK&*z|U_7qhE%w|lL+i;2t6wW^mmNYh`jjUUbACOdf2wX#vO zeKbL~QM%T_*mbAszt=SmS8)v%cY!g|!9rXIyl(o06gr}&Ev-(%GwCElR#kONGj!E| z6vddXXcA&&p4VAPiOZ~_$O4KHOwjaVnaHp12YhrIJu&WjQLbl2FoFq(qA>j>@u# zMOhZ2QHCZ>R8y0gBqN0Rz?`fiuVgtj7zM-Bt%e);3q}p+Jw%!mi7GKc6optUCW~@J z3J?deD1 zgHvS~E|3L`mM;r>cc8>QZDgZ@iOhI`XJOZh2!)8KMkQ5@FW42ipy?t{aQ_q0#TE#C<78_CT3kbxJrC1f@g^GP22;C9 zNQ*CPXxMbEjTN~D-0EuAx#Jht^1`787Ie9NP7O3~M^wG5|2M-*0|MU*wYV-5nFYn%y>VI|n$xn7)Iu*L|g$Vp`)+%F`r>cf?z#3?YM^KE`kOr`&MfwwD9`bGULNIs3cYgj zozO`C{v#)^S-mUfcbA?KcZ_{|Y5a{3nqP&qo_&p@-#;;7bI0YKl?!*id-mZ6LdUO% zK9yhkW@P8#=d4YKA3444t ANB{r; literal 0 HcmV?d00001 diff --git a/Resources/Textures/DeltaV/Mobs/Species/Harpy/parts.rsi/meta.json b/Resources/Textures/DeltaV/Mobs/Species/Harpy/parts.rsi/meta.json new file mode 100644 index 00000000000..4073a762e89 --- /dev/null +++ b/Resources/Textures/DeltaV/Mobs/Species/Harpy/parts.rsi/meta.json @@ -0,0 +1,62 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "https://github.com/tgstation/tgstation/blob/8024397cc81c5f47f74cf4279e35728487d0a1a7/icons/mob/human_parts_greyscale.dmi and modified by DrSmugleaf, Legs and lower torso parts made by @ps3moira, Full reference with parts made by @Still-Icarus", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "full" + }, + { + "name": "head_f", + "directions": 4 + }, + { + "name": "head_m", + "directions": 4 + }, + { + "name": "l_arm", + "directions": 4 + }, + { + "name": "l_foot", + "directions": 4 + }, + { + "name": "l_hand", + "directions": 4 + }, + { + "name": "l_leg", + "directions": 4 + }, + { + "name": "r_arm", + "directions": 4 + }, + { + "name": "r_foot", + "directions": 4 + }, + { + "name": "r_hand", + "directions": 4 + }, + { + "name": "r_leg", + "directions": 4 + }, + { + "name": "torso_f", + "directions": 4 + }, + { + "name": "torso_m", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/DeltaV/Mobs/Species/Harpy/parts.rsi/r_arm.png b/Resources/Textures/DeltaV/Mobs/Species/Harpy/parts.rsi/r_arm.png new file mode 100644 index 0000000000000000000000000000000000000000..6a47ac86071eaafad7c79e62c192bba707eac520 GIT binary patch literal 154 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucL48jb$B>G+x5qZ}G8k|$Z}{?m@!?Ct0+Vem jfs$Zw`_{gADD#1nkw7uie_xsX0U!}iS3j3^P6k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`031o(uwPMkQ=$H&LY$|^E4QczG3C|q7%4kX!DRRKu`j*=k1;QtW7aIbl9 zBv6dAz$3Dlfk96Rgc(;ox;qIdSnBEG7!u+B_S$Z~1_O@PhfHht{FlBx*+4}9>Wayh z|COBo`t0)fI9*VofkVK7g+qZ!Qe%+_xWzIr49a;m4RpUXO@ GgeCyQl3&sQ literal 0 HcmV?d00001 diff --git a/Resources/Textures/DeltaV/Mobs/Species/Harpy/parts.rsi/r_hand.png b/Resources/Textures/DeltaV/Mobs/Species/Harpy/parts.rsi/r_hand.png new file mode 100644 index 0000000000000000000000000000000000000000..2c16b27041ce35dffc7426a51b2fb81978f59491 GIT binary patch literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucK|N0w$B>G+x5pMTGB9v3FZlWY;^rSsyh1=8 i7~I=BR~yPa(44~fa6Qw1NvHb7AR$jzKbLh*2~7ad4=6SO literal 0 HcmV?d00001 diff --git a/Resources/Textures/DeltaV/Mobs/Species/Harpy/parts.rsi/r_leg.png b/Resources/Textures/DeltaV/Mobs/Species/Harpy/parts.rsi/r_leg.png new file mode 100644 index 0000000000000000000000000000000000000000..9cdd3b855667042c8522f4a9564720ea38bea55e GIT binary patch literal 2283 zcma)8U2NM_6!x@s8y!VkwTChdWV}6W2**Eh65C3)W=-2fOWLT3x|RtE$G%BT;~#9N zNh>tA3BiB?D$@3Xc$n0O@j$m}{7f68>k|@4u$PH<_B6zg5Ii7JDCas(2&H3<C`yf2k^CHD}2BI>FFQfw#6MEIZ7;jz3)C4U6o`m zNf1}x*}1B8gWZ?U7KiHf`qb3a!oor}o0Vl5+^>Z8m*KX}8y_vK;SX_bd2ty$kJ#xc zmmoq<;cLtG6RT?kvHiSWob)DhSy{D=kfK>76lxeYpa~*=q+u)S4D!els_15d`uXNE zMe16DIv&ZfIeQRI>*;w173N2a>imoItD4$q{XY6Ju z(ua6632HKzCkHJDkwQoavGhgcwoTPBHVm6BES5)|a&CkSuUp$0eter)^f zuBR~>Fa#(F01VHvBF*wNFX0-R#Tj-k*N!yZpoh>+rlHsj7h)O1XroFsYVW>;%&=UO!vVV9q4RVy=)roUnfKa$Di+j!iyif-6G8Y5dM zO>JZBnp5@PYbt}P$biLNVC33Zh--s4Odpd%N92^H)^KWRX5uN!Aw1j_1{5l&ZOhjEoWxT87sYjRByAa z4+?AZj>8t^dd^&C)8%gv5pQZY4NR6Zw?4N5da=V5w4th#{!q(`ihqIxShP5(CnJaOiXN{*t0ZDXOD@Oz#Ohr;#@vc?&>WYJs6&Nm% z1&o$23-Vx~#6vA)eHvkzu{=w|uEp_1E-Xg`nH8uGH9!>%-Vr-%i{pI+MtFT2;&`u- zGgzdBnr&BggFa>dq7B&FRQD_ zbgj)5xenayYR9?b7uWQ{p#~Ooxphurt9{lY6XfE+NqTAT!H?k-zMM%Vi<2WiUO3is zihZ>E*STA3=Z!0G4!=cD>^g9*r|*kzZ=^3h^X{2F{fE-07tYkXg+uCh6OZ3Ig@#uS zEDW6e=q~s4*}h`r&iDNTyLOQAlgpo6{muCE18(>2uBES@d#^BZee1riv2?QM+@8hT z=@q8ii=9~deD=g<5NG9kdC literal 0 HcmV?d00001 diff --git a/Resources/Textures/DeltaV/Mobs/Species/Harpy/parts.rsi/torso_f.png b/Resources/Textures/DeltaV/Mobs/Species/Harpy/parts.rsi/torso_f.png new file mode 100644 index 0000000000000000000000000000000000000000..23dde35cd8e6bbbeac71797415290fd86daf724f GIT binary patch literal 646 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!7>k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O_~;1^9%xmY0{meEIU{yHBrf-tqPIO-xKYaNxklTetuJ|G$3y`nz}U{{H=Y z@#4jQ{`|SMWz)}}KmYyv=i}oO85uco;>0V<76FYB(>PcOqDq4Nf`Pg)0R!Wu15bb| zI14-?iy0XB4uUY_j)~cCfeu{l>Eaj?;r@2o-MqsJJZ?WZkEqJ}dVK!3e%JYl%N@HG zXWl+)@-$>A>zn4;aS5CMPVg?^oDnZ7@p{kqb6S@ak4%*5HRRcJDCD5|Y$2wgP3DoA z8=RMTw3N%NS<~p>=ve2(a4e6vY=Okd&kHz&d{3zNtW;m%P`=3gkc7uI2hpq=wK)zq zzkgEP!S2pq^y3Q4B2I?qE3s!t%mLI#%!9wJW~U+UVv=*3JoeYo}+j zpa0#N<*a+)r=g1Xs)Lh#8yBaX+tOsQ;H-u4g6|RnYQ@hK6ig!9fA3bZE=gR%J@3vu z1(#*A3!dve(+qy5QJ~KHMs0IT$yH5R`)WfsQ2U(vv`QkE-9B4=@v)dE409P!{; ztFkt14{k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`1!1o(uwmY0{meEIU{yHBrf-tqPIO-xKYaNxlI|NqyoUw`-R-Ea4vFJ8R( z_wV1gwru+M@1Kv4Ph@1|#EBEHEL#LLVA1}qe}I%oNswPKPzyR>@b`Z%2$bh6@Q5sC zVBk9l!i+m6X1@hGtliVaF(ktM?X=r@hZT6*co}1^Emb`Gd;jaY^l5FkEv>hRUp_Lu zImJL;#oR2H--yLo!6wu}(eJWIv%2rjf+v$EAG41Aq ze4RS;<2zwHj!y4N%~o5+uvH6Qb+j7K|0(L9CM#IQI90M~=Y=)OV&|Us)GOr63jUHe z^A~KgsNGk0yC`i=L-DnW<6Il&-4s3ZA$~*i%>OGL-np}UYX709%ZyuFt-&n7Ie^v8^)B18~^23!(Z~6EAVu}7=eNc(% z({JXRjeM-UmwTh^(+-G4aTqSo|B58 Date: Mon, 12 Feb 2024 22:25:15 +0000 Subject: [PATCH 21/29] Automatic Changelog Update (#677) --- Resources/Changelog/DeltaVChangelog.yml | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/Resources/Changelog/DeltaVChangelog.yml b/Resources/Changelog/DeltaVChangelog.yml index f7baad085a5..97edd4e23f9 100644 --- a/Resources/Changelog/DeltaVChangelog.yml +++ b/Resources/Changelog/DeltaVChangelog.yml @@ -1604,3 +1604,21 @@ Entries: message: Felinids now scream in agony from water. id: 241 time: '2024-02-12T21:11:44.0000000+00:00' +- author: VMSolidus + changes: + - type: Add + message: >- + Harpies have received a full visual rework. Featuring clothing sprites, + new markings, a complete overhaul of their layering, as well as visual + systems. + - type: Add + message: Harpies now have bird related speech verbs + - type: Add + message: >- + Two new traits have been added related to birds. Harpies now start by + default with the new Ultraviolet Vision trait, letting them see a whole + new spectrum of colors. This trait can be taken by other curious people. + Harpies that wish to see in RGB colors can instead take the new Normal + Vision trait. + id: 242 + time: '2024-02-12T22:25:02.0000000+00:00' From 7c62f5e0ec96dd8e4aa1dd3fb756f719b0f1ca26 Mon Sep 17 00:00:00 2001 From: Debug <49997488+DebugOk@users.noreply.github.com> Date: Tue, 13 Feb 2024 01:59:01 +0100 Subject: [PATCH 22/29] Prevent probers from being unachored by gorilla gauntlets (#824) * Fix being able to punt probers to unachor them * Fix my wacky comment --- .../Psionics/Glimmer/GlimmerReactiveSystem.cs | 23 +++++++++++++++++++ .../Components/MeleeThrowOnHitComponent.cs | 3 ++- .../Weapons/Melee/MeleeThrowOnHitSystem.cs | 9 ++++++-- 3 files changed, 32 insertions(+), 3 deletions(-) diff --git a/Content.Server/Nyanotrasen/Psionics/Glimmer/GlimmerReactiveSystem.cs b/Content.Server/Nyanotrasen/Psionics/Glimmer/GlimmerReactiveSystem.cs index ddd5ac11585..da3b07d6dab 100644 --- a/Content.Server/Nyanotrasen/Psionics/Glimmer/GlimmerReactiveSystem.cs +++ b/Content.Server/Nyanotrasen/Psionics/Glimmer/GlimmerReactiveSystem.cs @@ -16,6 +16,9 @@ using Content.Shared.Damage; using Content.Shared.Destructible; using Content.Shared.Construction.Components; +using Content.Shared.Mind; +using Content.Shared.Mind.Components; +using Content.Shared.Weapons.Melee.Components; using Robust.Shared.Audio; using Robust.Shared.Audio.Systems; using Robust.Shared.Map; @@ -62,6 +65,7 @@ public override void Initialize() SubscribeLocalEvent(OnDamageChanged); SubscribeLocalEvent(OnDestroyed); SubscribeLocalEvent(OnUnanchorAttempt); + SubscribeLocalEvent(OnMeleeThrowOnHitAttempt); } /// @@ -314,6 +318,25 @@ private void AnchorOrExplode(EntityUid uid) _destructibleSystem.DestroyEntity(uid); } + private void OnMeleeThrowOnHitAttempt(Entity ent, ref AttemptMeleeThrowOnHitEvent args) + { + var (uid, _) = ent; + + if (_glimmerSystem.GetGlimmerTier() < GlimmerTier.Dangerous) + return; + + args.Cancelled = true; + args.Handled = true; + + _lightning.ShootRandomLightnings(uid, 10, 2, "SuperchargedLightning", 2, false); + + // Check if the parent of the user is alive, which will be the case if the user is an item and is being held. + var zapTarget = _transformSystem.GetParentUid(args.User); + if (TryComp(zapTarget, out _)) + _electrocutionSystem.TryDoElectrocution(zapTarget, uid, 5, TimeSpan.FromSeconds(3), true, + ignoreInsulation: true); + } + private void Reset(RoundRestartCleanupEvent args) { Accumulator = 0; diff --git a/Content.Shared/Weapons/Melee/Components/MeleeThrowOnHitComponent.cs b/Content.Shared/Weapons/Melee/Components/MeleeThrowOnHitComponent.cs index 82ffc5e51fc..559d58298ba 100644 --- a/Content.Shared/Weapons/Melee/Components/MeleeThrowOnHitComponent.cs +++ b/Content.Shared/Weapons/Melee/Components/MeleeThrowOnHitComponent.cs @@ -101,9 +101,10 @@ public sealed partial class MeleeThrownComponent : Component /// /// Event raised before an entity is thrown by to see if a throw is allowed. /// If not handled, the enabled field on the component will be used instead. +/// Delta-V modification: Added User field, since it is now also raised on the entity being hit /// [ByRefEvent] -public record struct AttemptMeleeThrowOnHitEvent(EntityUid Hit, bool Cancelled = false, bool Handled = false); +public record struct AttemptMeleeThrowOnHitEvent(EntityUid Hit, Entity User, bool Cancelled = false, bool Handled = false); [ByRefEvent] public record struct MeleeThrowOnHitStartEvent(EntityUid User, EntityUid Used); diff --git a/Content.Shared/Weapons/Melee/MeleeThrowOnHitSystem.cs b/Content.Shared/Weapons/Melee/MeleeThrowOnHitSystem.cs index fc364286549..e840bd1ddd5 100644 --- a/Content.Shared/Weapons/Melee/MeleeThrowOnHitSystem.cs +++ b/Content.Shared/Weapons/Melee/MeleeThrowOnHitSystem.cs @@ -104,9 +104,14 @@ public bool CanThrowOnHit(Entity ent, EntityUid target { var (uid, comp) = ent; - var ev = new AttemptMeleeThrowOnHitEvent(target); - RaiseLocalEvent(uid, ref ev); + var ev = new AttemptMeleeThrowOnHitEvent(target, ent); + // Delta-V modification: Also raise on the entity being hit, in case it wants to object + RaiseLocalEvent(target, ref ev); + if (ev.Handled) + return !ev.Cancelled; + + RaiseLocalEvent(uid, ref ev); if (ev.Handled) return !ev.Cancelled; From 0fa44ba7a88c99e19c1eef55739e62948b87f996 Mon Sep 17 00:00:00 2001 From: DeltaV-Bot Date: Tue, 13 Feb 2024 00:59:17 +0000 Subject: [PATCH 23/29] Automatic Changelog Update (#824) --- Resources/Changelog/DeltaVChangelog.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Resources/Changelog/DeltaVChangelog.yml b/Resources/Changelog/DeltaVChangelog.yml index 97edd4e23f9..731c238cbc7 100644 --- a/Resources/Changelog/DeltaVChangelog.yml +++ b/Resources/Changelog/DeltaVChangelog.yml @@ -1622,3 +1622,11 @@ Entries: Vision trait. id: 242 time: '2024-02-12T22:25:02.0000000+00:00' +- author: DebugOk + changes: + - type: Tweak + message: >- + Glimmer probers now react violently to being hit by gorilla gauntlets if + glimmer is above 500 + id: 243 + time: '2024-02-13T00:59:01.0000000+00:00' From 84bad278e26c9be5108fac809ecd2200cad9110d Mon Sep 17 00:00:00 2001 From: VMSolidus Date: Tue, 13 Feb 2024 08:29:36 -0500 Subject: [PATCH 24/29] Nerf ear destroyers (#827) --- Resources/Audio/DeltaV/Voice/Harpy/chirp1.ogg | Bin 6456 -> 6331 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Resources/Audio/DeltaV/Voice/Harpy/chirp1.ogg b/Resources/Audio/DeltaV/Voice/Harpy/chirp1.ogg index 07303b6626c89630aa752e4c1a514837c5ff6fa3..5eeea546775ec0ee1490ac56e237b1c81ec82565 100644 GIT binary patch delta 2447 zcmV;A32^qfGP^MvPiJRS00IC200000003fG00000003!0leUo>E(~H=00031008l< zgHN$k9uI$FSO5S50002plH?5%H8U$JGc`3k=g-sM*SojNyj}eGu2-3&mF_P=3e>*C zzT$Ln#fMEN=atjg8D?|nr*}>|z@$EBTM*i$SY>v^Rk&G-xqJZp@ZMyIR@o~76KV3l z?-A82-c8LlrtfPm+AaGOiNB0PaOy~e$95QRn*o3ONSm4`i39+=@Sc@yn)I(dfrfYe z0vEj5{$O_5@RqGt8Y0jy5yMAeweMGHnmKqRXyG9inx2f&tXNUlNG`^aOWEy*vyIaTTo4)VRKaLRKp=)%Uk|qDr6YOIt(; zv*Zcyc78IQ<8eO+NZ~_NqY~=^07M;k2;Pv5>wf(b@EIk~?}v;5R@)BHeuJr+`IgAdVQ06 z|LNKE&eTMCVw^q={7SbRvrR5W*3CRaCc++{J(P@N04M;b|5hJ@_3r1`n(%+Ilca`^ zg()!?2ZJxPF2b_~fm~plC;YeHdacNIvjBkGRREx0@&I7imxdAY>*$c3&jFDJ7XB^P zxa{*bdCj}_VxS641$M`Awq~@{zTsG}rUFPOO_+`1(BR5&+;P7dn5gbz~aSP(Bcq z$Pg}ZmgvZ_L82RRfoZ&&Bcj~E17_a93k4B*{O@AukIHo;0Jfm20}NoOMqb^7QPJMh z%qvJP6MAhno;BRK?fBnS@R#6yc_meOuZX)8?(l>JY;YAa0F`SF03aA7Atu=Zu!yvc zcjo2yYVPO#&DReY*@J%>*Cm@-Yr`ic4b|+J_uAhK!;M-BFEKXTwFK%40N%6vKW4Id z#(DD2LxWf9LjwRH&&Jl0`c>V``Tj3Cb!2b?03eTF9S#@zpgzS?!Xo|Qe649Xw|YWt zIOUJ}DR(CN$eIVp20%*;bq!1%0FGY1_S?H+|3`EH0PrQ$0oH#Sr}x1_QI8JuRbK7U zMw0+kt1}NmR-5aNyo@z=7XZ z00TftH}HV4pg!(-6aa+N-Z1*!pTyz3`1Rj8ev;!dqn^Jgi+I$~h3w?$TXM|by%eCR z_Sx!vYD8teFm!*x4g(H9^$p|e{X<6rU0vY41!2uXD?88_MB@Tr<>?~#8E8!YOf8mk zwFUqHpy}Y)%Q5&;ICL7Tc5xZ6jR~#h0AwpGWefuHs}e0fi!N61{64?FW_73t<1eC! z!#V)e0Q9>KFa{|~Mkdm8-21M=7@H+P!IPu`*wx^c0{(x-+_;}n-$xt&uGRZL#FWsc z>H*;Z4*+llV9J!xfWS3QbhN~zsnZ80GtWg!D; z$pvUF9@KL=6M!c8YNaSkocOVLVE%jBhcWnvqE^b7T(aid_H@&QSH(o*BVkCIGf_Ne zp2b1xN+f@Py=U-%u0jB=j+=TB{zq_`gAC>*b#H8qCKF}h15%WUOw?PBTohnrbUE#Y=yPo*S;N1R1>d$~IR3VDY6{lv_Ilg=fMb|MF0%}BmhbP03iE&tO>qF+{DME|09jR zGoye1oRGqoLp_)Xzy`QU8zM9Su!USch-PJ`0QdR3+j+e7^YKvf{g=8j@=nQ&Wq5Ip zr(O(VpBFEd#*t#`a6+UY0001>x5Lqe zzTUUZJSvhww4i@Sbv?A&|Lg-+*F!V4@j^dnZ|AG4bfmxiWd0M4Zu;!U0Tg4;k0i<) N0MP%hYSjSHF91LHseS+e delta 2573 zcmV+o3i9>4F}N}sPiJRS00IC200000005ym00000006CbEG>~5E)1bL00031006wK z$S|=~9uI$^IRF3x0002&2iq1AH8w0QI5{}!+uY&f$->devh?sic#KwhZyZV<`zo9c zuJ*O{g)v+^jh$gOhkknJq!)QrpR+9pZL+V*?1-yyvlR0$0|4~!KBOC}%t;_<>c4M? zDz%pqbB*Z-H5cuceTo!+8E?Vcq*?_hwmi##(4v2-6N4q(`bJd%0Nn82mCS~Jvy7JpFiXcjd;skDuIJ)egGh0@;=^by)g3Yhieo?1rdC?Z zlJ|d|liX-o14#S6$diJpBChDND^iDO-Om)VmR11t7_U)!*=(X{U@J5}U0*>3U{;7ODxeelXDSvoW|UdLul_ssSWBO#Kp$Q2^!Z6qAHh6CZJeJqg`*r>dz zC)q>ak~WtOrsQShzR9z+Fq}OEA$WS;&lGwDUoPcJYChiMXJ5U)zE0}aCKupv`2>FeuxL*% z0l@rziDBIIHW&t<@tHw@r1i)@5$~F3QK(Z+D__ND;%^!@EVGowk-$IR0| zrC~p+13ZD=+%Y}>Z>DW#%GkM$2Sn3N-=M>L<`aI(Ma{(a#4=Zngj}!jt-QJa^Kqkr z01#+(@yW%=M-T`h9sQVQbQw{G8SdH`_o6hwB1dZhmvMqXFvX=$?Z1Dov+JBg>74~# zP)KlTX&LVyk3|;B@=Tuqx}cZgPGcSA|IJ>m|ov-J`*VqmD5pZuu(A`~AC<=wpj5MeAdK?FP(a}UIhRE002O~#BEo-rIP?VbQZQgjY_X_vI~j?*!zFqiA{p?Hj0ABap#9x!%H@x`w<2?LhEn+HiPM8in6L4UN3kx7kq#L*j5Eirm;GV|- zpu~*f!O8jEytLaaS2v}}x2yNeG`DeLW*CujnEz${+P`PjC;(K=k3XhjGR)p&o3ioi z<&nh2%?fZS%*=m#%$Po#p0^s8CyShgi*oOttSglxX7 zr^A!fLjeE)CZBF`@o!+Sw#e-RuVAIfYfcT27yvSeZ4q%`UisBBvQnPz?gIg!24LRb z0nlIu$78u{cs#<_f(aZnfOX_i5P<6$SPuan0GD z19nRSFl8zUda zcS_BWoA_`_Ujn-8o$alcLqKIjL-lk7o)_Kt??vA`XGOnL^q&*YRPDgDyi?!+AAl(V zB{Tr=RIKv{puhqw%ai~BFp=Crp5FN{=6!w)e+Pg0aQ&UK*W&qiAiMY65FpT5YKJe0pSG;+NV zJIgjEWu?^UV!UcF`C#x9pul&=DGmUF>|Jbt2B5yUgMW*&ax=C&)4lnE(K&`V~|F{#D$J`z#PX5%@VP`xh}OUD_YrL;yBGPAen{+(pg>(FF)BQ$SyI z<6sJ}jCcQ@ZM#3&KW5-z%6L|7HJ5s|G%DW;y?yZy6pe9dlw7M!H0S+s3RTl@E4#ePT>Fm zcx~3{R?pL00*}oXq5z&n+{A7Fohf)q@8Z+PHQ?%ZXv2~Q7`xO;0xqp9=`1M#i1UA6 zrXG8C^ovjN#bG|a-Oe{RnMi$_=EZcNivh0mpx&ad53}opgUOvYvES~yn+en@mY;od zfX|1ud#jCfgR7_2Ki8vI8w2ck2PtUPb%e7yjb-hNt>pSg%32;7g^SSyJj(z8`^aQC zsRW1q?y6wQdMo`OWH?AB9}xAjR8fDkiX6n*mM`7L*#PL1IbTgLI(z|)9ej7SCivBn zi<9mph7-c80N!O(KCXV@Ie2zi0^iigi&W!IkMa=%#`BD1|8 z(xLvW+$FQ}+g9(05B}siIN(Fh3~7J%*a4#+gD3Jwq5xPTsJ~A=Z@ZWQl$Cx70EF#_ jbZE4!!u>Pald(p;M*;xAyz^;=mPe8U0D$tCcya&$CEoKJ From 2db9e9e60431e7639cf507178e1bce152815096b Mon Sep 17 00:00:00 2001 From: DeltaV-Bot Date: Tue, 13 Feb 2024 13:29:52 +0000 Subject: [PATCH 25/29] Automatic Changelog Update (#827) --- Resources/Changelog/DeltaVChangelog.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Resources/Changelog/DeltaVChangelog.yml b/Resources/Changelog/DeltaVChangelog.yml index 731c238cbc7..d6365fb37d0 100644 --- a/Resources/Changelog/DeltaVChangelog.yml +++ b/Resources/Changelog/DeltaVChangelog.yml @@ -1630,3 +1630,9 @@ Entries: glimmer is above 500 id: 243 time: '2024-02-13T00:59:01.0000000+00:00' +- author: VMSolidus + changes: + - type: Fix + message: Removed the ability of Harpies to destroy people's ears. + id: 244 + time: '2024-02-13T13:29:37.0000000+00:00' From 02b13528c14d99be3b4b997b81cea535d9249fd5 Mon Sep 17 00:00:00 2001 From: rosieposie <52761126+rosieposieeee@users.noreply.github.com> Date: Tue, 13 Feb 2024 10:45:27 -0500 Subject: [PATCH 26/29] Signage For Meee (#799) signey --- .../Structures/Wallmounts/Signs/signs.yml | 40 ++++++++++++++++++ .../Wallmounts/signs.rsi/barbershop.png | Bin 0 -> 444 bytes .../Wallmounts/signs.rsi/direction_exam.png | Bin 0 -> 505 bytes .../Wallmounts/signs.rsi/direction_icu.png | Bin 0 -> 488 bytes .../Wallmounts/signs.rsi/laundromat.png | Bin 0 -> 397 bytes .../Structures/Wallmounts/signs.rsi/meta.json | 26 +++++++++++- 6 files changed, 65 insertions(+), 1 deletion(-) create mode 100644 Resources/Textures/DeltaV/Structures/Wallmounts/signs.rsi/barbershop.png create mode 100644 Resources/Textures/DeltaV/Structures/Wallmounts/signs.rsi/direction_exam.png create mode 100644 Resources/Textures/DeltaV/Structures/Wallmounts/signs.rsi/direction_icu.png create mode 100644 Resources/Textures/DeltaV/Structures/Wallmounts/signs.rsi/laundromat.png diff --git a/Resources/Prototypes/DeltaV/Entities/Structures/Wallmounts/Signs/signs.yml b/Resources/Prototypes/DeltaV/Entities/Structures/Wallmounts/Signs/signs.yml index 6129ff6c413..2b0048f1a48 100644 --- a/Resources/Prototypes/DeltaV/Entities/Structures/Wallmounts/Signs/signs.yml +++ b/Resources/Prototypes/DeltaV/Entities/Structures/Wallmounts/Signs/signs.yml @@ -17,3 +17,43 @@ - type: Sprite sprite: DeltaV/Structures/Wallmounts/signs.rsi state: direction_mail + +- type: entity + parent: BaseSignDirectional + id: SignDirectionalExam + name: examination room sign + description: A direction sign, pointing out which way the examination rooms are. + components: + - type: Sprite + sprite: DeltaV/Structures/Wallmounts/signs.rsi + state: direction_exam + +- type: entity + parent: BaseSignDirectional + id: SignDirectionalICU + name: intensive care unit sign + description: A direction sign, pointing out which way the Intensive Care Unit is. + components: + - type: Sprite + sprite: DeltaV/Structures/Wallmounts/signs.rsi + state: direction_icu + +- type: entity + parent: BaseSign + id: SignLaundromat + name: laundromat sign + description: A sign indicating the laundromat. + components: + - type: Sprite + sprite: DeltaV/Structures/Wallmounts/signs.rsi + state: laundromat + +- type: entity + parent: BaseSign + id: SignBarbershop + name: barbershop sign + description: A sign indicating the barbershop. + components: + - type: Sprite + sprite: DeltaV/Structures/Wallmounts/signs.rsi + state: barbershop \ No newline at end of file diff --git a/Resources/Textures/DeltaV/Structures/Wallmounts/signs.rsi/barbershop.png b/Resources/Textures/DeltaV/Structures/Wallmounts/signs.rsi/barbershop.png new file mode 100644 index 0000000000000000000000000000000000000000..d196072a32b0e63fa87efd8d4abe329dc2e4701d GIT binary patch literal 444 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?3oArNM~bhqvgP*A$W zHKHUqKdq!Zu_%?nIW?!avREOwq%> zc!}@BWQo;x#qxXA7#`H_wfV(&=mp1WQ3ZWd)iRs#GrBeWC$7eM#c(+Iq6cM>UqhmFO+8KJ$uCACtm!;I@WMqSu{%` z%WWe@hnSFC41LcJZS$Gf66g6vSNYdmy<1af)iuOyv2BR0prCY# zYeY$Kep*R+Vo@rCb81d;WwAnVNoh)EzCuWTe$K(=4{I107+XAD978JRyuD@Uci2Io z_2F~wfPCkpiW(DkG;o)5XhmtYv;>?Ji1g^_n#Scay@^{Puz*9$eBDk5jR|MfKB|?O z-P8Q!|2SpxNxRx@lRW0-*v-$Lugwg!e~s}BF(AdzP|9|h2}p}E&M98pd8Kr2Zk7M5 zzt)Vee(kNTEBd_feEa38$uCNu7s<}`S6LZ5eaZXlnfVPeqo zz0`u0ub<1?#>suLvzq=o=a-V_+g&Pqef75e;*+SZuVeio4|LTvNgr;ID-T#TXEK5q z5$OiHAe!Md&oWjJoiO*{7KR7sE_8fmtmB=@&++~EQ!hLD2jBU2THm=7`_1^zSD=8I z{Db)`eHnK#9QwO)r_eceo$pbxjM2;{qQ&+1)+>HyeE4ri%o%nA`3+GZBT;O9YkNTd WZUyJM8A;Q!L2{n1elF{r5}E)B&Btc| literal 0 HcmV?d00001 diff --git a/Resources/Textures/DeltaV/Structures/Wallmounts/signs.rsi/direction_icu.png b/Resources/Textures/DeltaV/Structures/Wallmounts/signs.rsi/direction_icu.png new file mode 100644 index 0000000000000000000000000000000000000000..d4d2e4cd5762be87ebe0539d27f4bf984f365749 GIT binary patch literal 488 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9GGLLkg|>2BR0prCY# zYeY$Kep*R+Vo@rCb81d;WwAnVNoh)EzCuWTe$K(=4{I107>hk!978JRyuG#2?@)lq zv5)KZAKYo}Y%fsw$SQM(!*88W+mQ)&&dDAOrqWlwy4ycq z+xDI3&;FIROYa=+SDSEW@|4t-#ePgc>m$A=NC7DZhSzdF%s}c7o5$r6lZlHoChdwlO(lHwx!SGU--LaxdA;uH>xB%4*Pn+s{AXlfNVwaa33l9?Y6D&nqoI_48Bm;o zVZ*zFCLo&On(YiWhO#!dIs7Y@zpiO`|8HNd>wNxCP*&T&9SVBfC!2OYxMRlmmXsA*Na zc$xp4*@deMb8{`~f2*~*_}g3bzT Date: Tue, 13 Feb 2024 15:55:35 +0000 Subject: [PATCH 27/29] bring back paradox anomaly (#825) * refactor and add log * add api needed for objective * backport LastProfileLoaded * fix midround antag rule * evil twin spawning code * evil twin yml and stuff * m * hopefully fully rename it * fixy --------- Co-authored-by: deltanedas <@deltanedas:kde.org> --- .../Components/ParadoxAnomalySpawner.cs | 17 ++ .../Systems/ParadoxAnomalySystem.cs | 164 ++++++++++++++++++ .../GenericAntag/GenericAntagSystem.cs | 8 + .../Systems/HumanoidAppearanceSystem.cs | 2 + .../Components/MidRoundAntagRuleComponent.cs | 9 +- .../StationEvents/Events/MidRoundAntagRule.cs | 27 ++- .../Terminator/Systems/TerminatorSystem.cs | 11 +- .../Humanoid/HumanoidAppearanceComponent.cs | 7 + .../SharedHumanoidAppearanceSystem.cs | 2 + .../game-rules/rule-paradox-anomaly.ftl | 5 + .../ghost/roles/ghost-role-component.ftl | 4 + .../objectives/conditions/paradox-anomaly.ftl | 2 + .../game-rules/rule-terminator.ftl | 6 +- .../Locale/en-US/prototypes/roles/antags.ftl | 4 +- .../Entities/Markers/Spawners/ghost_roles.yml | 17 +- .../Prototypes/DeltaV/GameRules/midround.yml | 11 ++ .../DeltaV/Objectives/paradox_anomaly.yml | 52 ++++++ Resources/Prototypes/GameRules/events.yml | 2 +- 18 files changed, 325 insertions(+), 25 deletions(-) create mode 100644 Content.Server/DeltaV/ParadoxAnomaly/Components/ParadoxAnomalySpawner.cs create mode 100644 Content.Server/DeltaV/ParadoxAnomaly/Systems/ParadoxAnomalySystem.cs create mode 100644 Resources/Locale/en-US/deltav/game-ticking/game-rules/rule-paradox-anomaly.ftl create mode 100644 Resources/Locale/en-US/deltav/objectives/conditions/paradox-anomaly.ftl create mode 100644 Resources/Prototypes/DeltaV/GameRules/midround.yml create mode 100644 Resources/Prototypes/DeltaV/Objectives/paradox_anomaly.yml diff --git a/Content.Server/DeltaV/ParadoxAnomaly/Components/ParadoxAnomalySpawner.cs b/Content.Server/DeltaV/ParadoxAnomaly/Components/ParadoxAnomalySpawner.cs new file mode 100644 index 00000000000..c3264584a1c --- /dev/null +++ b/Content.Server/DeltaV/ParadoxAnomaly/Components/ParadoxAnomalySpawner.cs @@ -0,0 +1,17 @@ +using Content.Server.DeltaV.ParadoxAnomaly.Systems; +using Robust.Shared.Prototypes; + +namespace Content.Server.DeltaV.ParadoxAnomaly.Components; + +/// +/// Creates a random paradox anomaly and tranfers mind to it when taken by a player. +/// +[RegisterComponent, Access(typeof(ParadoxAnomalySystem))] +public sealed partial class ParadoxAnomalySpawnerComponent : Component +{ + /// + /// Antag game rule to start for the paradox anomaly. + /// + [DataField] + public EntProtoId Rule = "ParadoxAnomaly"; +} diff --git a/Content.Server/DeltaV/ParadoxAnomaly/Systems/ParadoxAnomalySystem.cs b/Content.Server/DeltaV/ParadoxAnomaly/Systems/ParadoxAnomalySystem.cs new file mode 100644 index 00000000000..62d994dac34 --- /dev/null +++ b/Content.Server/DeltaV/ParadoxAnomaly/Systems/ParadoxAnomalySystem.cs @@ -0,0 +1,164 @@ +using Content.Server.DeltaV.ParadoxAnomaly.Components; +using Content.Server.DetailExaminable; +using Content.Server.GenericAntag; +using Content.Server.Ghost.Roles; +using Content.Server.Ghost.Roles.Components; +using Content.Server.Psionics; +using Content.Server.Spawners.Components; +using Content.Server.Station.Systems; +using Content.Server.Terminator.Systems; +using Content.Shared.Humanoid; +using Content.Shared.Humanoid.Prototypes; +using Content.Shared.Mind; +using Content.Shared.Mind.Components; +using Content.Shared.Preferences; +using Content.Shared.Roles; +using Content.Shared.Roles.Jobs; +using Robust.Shared.Prototypes; +using Robust.Shared.Random; +using Robust.Shared.Utility; +using System.Diagnostics.CodeAnalysis; + +namespace Content.Server.DeltaV.ParadoxAnomaly.Systems; + +/// +/// 90% of the work is done by exterminator since its a reskin. +/// All the logic here is spawning since thats tricky. +/// +public sealed class ParadoxAnomalySystem : EntitySystem +{ + [Dependency] private readonly GenericAntagSystem _genericAntag = default!; + [Dependency] private readonly GhostRoleSystem _ghostRole = default!; + [Dependency] private readonly IPrototypeManager _proto = default!; + [Dependency] private readonly IRobustRandom _random = default!; + [Dependency] private readonly MetaDataSystem _metaData = default!; + [Dependency] private readonly PsionicsSystem _psionics = default!; + [Dependency] private readonly SharedHumanoidAppearanceSystem _humanoid = default!; + [Dependency] private readonly SharedMindSystem _mind = default!; + [Dependency] private readonly SharedRoleSystem _role = default!; + [Dependency] private readonly StationSystem _station = default!; + [Dependency] private readonly StationSpawningSystem _stationSpawning = default!; + [Dependency] private readonly TerminatorSystem _terminator = default!; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnTakeGhostRole); + } + + private void OnTakeGhostRole(Entity ent, ref TakeGhostRoleEvent args) + { + Log.Info($"Using paradox anomaly spawner {ent}"); + if (!TrySpawnParadoxAnomaly(ent.Comp.Rule, out var twin)) + return; + + Log.Info($"Created paradox anomaly {ToPrettyString(twin):twin}"); + var role = Comp(ent); + _ghostRole.GhostRoleInternalCreateMindAndTransfer(args.Player, ent, twin.Value, role); + _ghostRole.UnregisterGhostRole((ent.Owner, role)); + + args.TookRole = true; + QueueDel(ent); + } + + private bool TrySpawnParadoxAnomaly(string rule, [NotNullWhen(true)] out EntityUid? twin) + { + twin = null; + + // Get a list of potential candidates + var candidates = new List<(EntityUid, EntityUid, SpeciesPrototype, HumanoidCharacterProfile)>(); + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out var mindContainer, out var humanoid)) + { + if (humanoid.LastProfileLoaded is not {} profile) + continue; + + if (!_proto.TryIndex(humanoid.Species, out var species)) + continue; + + if (_mind.GetMind(uid, mindContainer) is not {} mindId || !HasComp(mindId)) + continue; + + if (_role.MindIsAntagonist(mindId)) + continue; + + // TODO: when metempsychosis real skip whoever has Karma + + candidates.Add((uid, mindId, species, profile)); + } + + twin = SpawnParadoxAnomaly(candidates, rule); + return twin != null; + } + + private EntityUid? SpawnParadoxAnomaly(List<(EntityUid, EntityUid, SpeciesPrototype, HumanoidCharacterProfile)> candidates, string rule) + { + // Select a candidate. + if (candidates.Count == 0) + return null; + + var (uid, mindId, species, profile) = _random.Pick(candidates); + var jobId = Comp(mindId).Prototype; + var job = _proto.Index(jobId!); + + // Find a suitable spawn point. + var station = _station.GetOwningStation(uid); + var latejoins = new List(); + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var spawnUid, out var spawnPoint)) + { + if (spawnPoint.SpawnType != SpawnPointType.LateJoin) + continue; + + if (_station.GetOwningStation(spawnUid) == station) + latejoins.Add(spawnUid); + } + + if (latejoins.Count == 0) + return null; + + // Spawn the twin. + var destination = Transform(_random.Pick(latejoins)).Coordinates; + var spawned = Spawn(species.Prototype, destination); + + // Set the kill target to the chosen player + _terminator.SetTarget(spawned, mindId); + _genericAntag.MakeAntag(spawned, rule); + + ////////////////////////// + // /!\ WARNING /!\ // + // MAJOR SHITCODE BELOW // + // /!\ WARNING /!\ // + ////////////////////////// + + // Copy the details. + _humanoid.LoadProfile(spawned, profile); + _metaData.SetEntityName(spawned, Name(uid)); + + if (TryComp(uid, out var detail)) + { + var detailCopy = EnsureComp(spawned); + detailCopy.Content = detail.Content; + } + + if (job.StartingGear != null && _proto.TryIndex(job.StartingGear, out var gear)) + { + _stationSpawning.EquipStartingGear(spawned, gear, profile); + _stationSpawning.EquipIdCard(spawned, + profile.Name, + job, + station); + } + + foreach (var special in job.Special) + { + special.AfterEquip(spawned); + } + + var psi = EnsureComp(spawned); + _psionics.RollPsionics(spawned, psi, false, 100); + + return spawned; + } +} diff --git a/Content.Server/GenericAntag/GenericAntagSystem.cs b/Content.Server/GenericAntag/GenericAntagSystem.cs index 6b1774159c1..8b7a16a4cb2 100644 --- a/Content.Server/GenericAntag/GenericAntagSystem.cs +++ b/Content.Server/GenericAntag/GenericAntagSystem.cs @@ -57,6 +57,14 @@ public void MakeAntag(EntityUid uid, EntityUid mindId, GenericAntagComponent? co _mind.TryAddObjective(mindId, mind, id); } } + + /// + /// DeltaV - used by paradox anomaly + /// + public void MakeAntag(EntityUid uid, string rule) + { + AddComp(uid).Rule = rule; + } } /// diff --git a/Content.Server/Humanoid/Systems/HumanoidAppearanceSystem.cs b/Content.Server/Humanoid/Systems/HumanoidAppearanceSystem.cs index 36ab038562b..770e9fc39b3 100644 --- a/Content.Server/Humanoid/Systems/HumanoidAppearanceSystem.cs +++ b/Content.Server/Humanoid/Systems/HumanoidAppearanceSystem.cs @@ -64,6 +64,8 @@ public void CloneAppearance(EntityUid source, EntityUid target, HumanoidAppearan grammar.Gender = sourceHumanoid.Gender; } + targetHumanoid.LastProfileLoaded = sourceHumanoid.LastProfileLoaded; // DeltaV - let paradox anomaly be cloned + Dirty(targetHumanoid); } diff --git a/Content.Server/Nyanotrasen/StationEvents/Components/MidRoundAntagRuleComponent.cs b/Content.Server/Nyanotrasen/StationEvents/Components/MidRoundAntagRuleComponent.cs index 429db920dca..df8b687c3e1 100644 --- a/Content.Server/Nyanotrasen/StationEvents/Components/MidRoundAntagRuleComponent.cs +++ b/Content.Server/Nyanotrasen/StationEvents/Components/MidRoundAntagRuleComponent.cs @@ -1,4 +1,5 @@ using Content.Server.StationEvents.Events; +using Robust.Shared.Prototypes; namespace Content.Server.StationEvents.Components; @@ -6,11 +7,11 @@ namespace Content.Server.StationEvents.Components; public sealed partial class MidRoundAntagRuleComponent : Component { [DataField("antags")] - public IReadOnlyList MidRoundAntags = new[] + public List MidRoundAntags = new() { "SpawnPointGhostRatKing", - "SpawnPointGhostVampSpider", - "SpawnPointGhostFugitive", - "MobEvilTwinSpawn" + //"SpawnPointGhostVampSpider", + //"SpawnPointGhostFugitive", + "SpawnPointGhostParadoxAnomaly" }; } diff --git a/Content.Server/Nyanotrasen/StationEvents/Events/MidRoundAntagRule.cs b/Content.Server/Nyanotrasen/StationEvents/Events/MidRoundAntagRule.cs index bf307737601..169f7575490 100644 --- a/Content.Server/Nyanotrasen/StationEvents/Events/MidRoundAntagRule.cs +++ b/Content.Server/Nyanotrasen/StationEvents/Events/MidRoundAntagRule.cs @@ -1,41 +1,38 @@ -using System.Linq; -using Robust.Shared.Random; using Content.Server.GameTicking.Rules.Components; using Content.Server.StationEvents.Components; +using Robust.Shared.Random; +using System.Linq; namespace Content.Server.StationEvents.Events; -internal sealed class MidRoundAntagRule : StationEventSystem +public sealed class MidRoundAntagRule : StationEventSystem { - [Dependency] private readonly IRobustRandom _robustRandom = default!; + [Dependency] private readonly IRobustRandom _random = default!; protected override void Started(EntityUid uid, MidRoundAntagRuleComponent component, GameRuleComponent gameRule, GameRuleStartedEvent args) { base.Started(uid, component, gameRule, args); - var spawnLocations = EntityManager.EntityQuery().ToList(); - var backupSpawnLocations = EntityManager.EntityQuery().ToList(); + var spawnLocations = EntityQuery().ToList(); + var backupSpawnLocations = EntityQuery().ToList(); TransformComponent? spawn = new(); if (spawnLocations.Count > 0) { - var spawnLoc = _robustRandom.Pick(spawnLocations); + var spawnLoc = _random.Pick(spawnLocations); spawn = spawnLoc.Item2; } else if (backupSpawnLocations.Count > 0) { - var spawnLoc = _robustRandom.Pick(backupSpawnLocations); + var spawnLoc = _random.Pick(backupSpawnLocations); spawn = spawnLoc.Item2; } - if (spawn == null) + if (spawn?.GridUid == null) return; - if (spawn.GridUid == null) - { - return; - } - - Spawn(_robustRandom.Pick(component.MidRoundAntags), spawn.Coordinates); + var proto = _random.Pick(component.MidRoundAntags); + Log.Info($"Spawning midround antag {proto} at {spawn.Coordinates}"); + Spawn(proto, spawn.Coordinates); } } diff --git a/Content.Server/Terminator/Systems/TerminatorSystem.cs b/Content.Server/Terminator/Systems/TerminatorSystem.cs index b6699352779..837778d3c41 100644 --- a/Content.Server/Terminator/Systems/TerminatorSystem.cs +++ b/Content.Server/Terminator/Systems/TerminatorSystem.cs @@ -24,7 +24,7 @@ public override void Initialize() private void OnMapInit(EntityUid uid, TerminatorComponent comp, MapInitEvent args) { // cyborg doesn't need to breathe - RemComp(uid); + //RemComp(uid); // DeltaV - paradox anomaly does actually need to breathe } private void OnSpawned(EntityUid uid, TerminatorComponent comp, GhostRoleSpawnerUsedEvent args) @@ -47,6 +47,15 @@ private void OnCreated(EntityUid uid, TerminatorComponent comp, ref GenericAntag _role.MindAddRole(mindId, new TerminatorRoleComponent(), mind); } + /// + /// DeltaV - used for paradox anomaly. + /// + public void SetTarget(Entity ent, EntityUid mindId) + { + ent.Comp ??= EnsureComp(ent); + ent.Comp.Target = mindId; + } + /// /// Create a spawner at a position and return it. /// diff --git a/Content.Shared/Humanoid/HumanoidAppearanceComponent.cs b/Content.Shared/Humanoid/HumanoidAppearanceComponent.cs index 82d6964522c..b0bc0eb9a0c 100644 --- a/Content.Shared/Humanoid/HumanoidAppearanceComponent.cs +++ b/Content.Shared/Humanoid/HumanoidAppearanceComponent.cs @@ -1,5 +1,6 @@ using Content.Shared.Humanoid.Markings; using Content.Shared.Humanoid.Prototypes; +using Content.Shared.Preferences; // DeltaV using Robust.Shared.Enums; using Robust.Shared.GameStates; using Robust.Shared.Prototypes; @@ -82,6 +83,12 @@ public sealed partial class HumanoidAppearanceComponent : Component /// [ViewVariables(VVAccess.ReadOnly)] public Color? CachedFacialHairColor; + + /// + /// DeltaV - let paradox anomaly be cloned + /// + [ViewVariables] + public HumanoidCharacterProfile? LastProfileLoaded; } [DataDefinition] diff --git a/Content.Shared/Humanoid/SharedHumanoidAppearanceSystem.cs b/Content.Shared/Humanoid/SharedHumanoidAppearanceSystem.cs index 597afcbda2a..4974e283dd5 100644 --- a/Content.Shared/Humanoid/SharedHumanoidAppearanceSystem.cs +++ b/Content.Shared/Humanoid/SharedHumanoidAppearanceSystem.cs @@ -329,6 +329,8 @@ public virtual void LoadProfile(EntityUid uid, HumanoidCharacterProfile profile, humanoid.Age = profile.Age; + humanoid.LastProfileLoaded = profile; // DeltaV - let paradox anomaly be cloned + Dirty(humanoid); } diff --git a/Resources/Locale/en-US/deltav/game-ticking/game-rules/rule-paradox-anomaly.ftl b/Resources/Locale/en-US/deltav/game-ticking/game-rules/rule-paradox-anomaly.ftl new file mode 100644 index 00000000000..45bd554deef --- /dev/null +++ b/Resources/Locale/en-US/deltav/game-ticking/game-rules/rule-paradox-anomaly.ftl @@ -0,0 +1,5 @@ +paradox-anomaly-round-end-agent-name = Paradox Anomaly + +objective-issuer-self = [color=#1708EC]Self[/color] + +# briefing is in terminator ftl diff --git a/Resources/Locale/en-US/deltav/ghost/roles/ghost-role-component.ftl b/Resources/Locale/en-US/deltav/ghost/roles/ghost-role-component.ftl index f2e9238dfbf..977a5f47bcb 100644 --- a/Resources/Locale/en-US/deltav/ghost/roles/ghost-role-component.ftl +++ b/Resources/Locale/en-US/deltav/ghost/roles/ghost-role-component.ftl @@ -6,3 +6,7 @@ ghost-role-information-nukie-mouse-rules = Normal syndicate antagonist rules app ghost-role-information-listeningop-name = Listening Post Operative ghost-role-information-listeningop-description = You are a Listening Post operative. Get into range, observe the station, intercept communications and assist any operatives in the area! ghost-role-information-listeningop-rules = You are a Syndicate Operative tasked with the continuous reporting and monitoring of the station and its activities, as well as assisting any fellow operatives who may be aboard the station. As an antagonist, do whatever is required for you to complete this task. Make sure your station doesn't fall into enemy hands and DO NOT abandon your station! Hide your existence at any cost! + +ghost-role-information-paradox-anomaly-name = Paradox Anomaly +ghost-role-information-paradox-anomaly-description = Replace your double, or befriend them. +ghost-role-information-paradox-anomaly-rules = Try and replace your twin with this funny roleplay antag rather than plasma flooding the station or something. You can also just befriend them. diff --git a/Resources/Locale/en-US/deltav/objectives/conditions/paradox-anomaly.ftl b/Resources/Locale/en-US/deltav/objectives/conditions/paradox-anomaly.ftl new file mode 100644 index 00000000000..2eac3339bf4 --- /dev/null +++ b/Resources/Locale/en-US/deltav/objectives/conditions/paradox-anomaly.ftl @@ -0,0 +1,2 @@ +objective-paradox-anomaly-kill-title = Kill this universe's {$targetName} +objective-paradox-anomaly-friend-title = Keep your new friend {$targetName} alive 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 index 41237a5c10d..2e167431773 100644 --- a/Resources/Locale/en-US/game-ticking/game-rules/rule-terminator.ftl +++ b/Resources/Locale/en-US/game-ticking/game-rules/rule-terminator.ftl @@ -8,7 +8,11 @@ terminator-role-greeting = Use any means at your disposal to complete the mission. Glory to Cybersun. -terminator-role-briefing = Kill the target at all costs. +# DeltaV - paradox anomaly +terminator-role-briefing = + You are a bluespace anomaly that looks and sound identical to someone from this reality. + Kill them and assume their identity, or talk it out and become friends. + Your objectives support either playstyle (and you obviously can't do both). 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/prototypes/roles/antags.ftl b/Resources/Locale/en-US/prototypes/roles/antags.ftl index d12f70cda25..40f2c9a6820 100644 --- a/Resources/Locale/en-US/prototypes/roles/antags.ftl +++ b/Resources/Locale/en-US/prototypes/roles/antags.ftl @@ -31,5 +31,5 @@ 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. +roles-antag-terminator-name = Paradox Anomaly # DeltaV - paradox anomaly +roles-antag-terminator-objective = Replace your double, or befriend them. # DeltaV - paradox anomaly diff --git a/Resources/Prototypes/DeltaV/Entities/Markers/Spawners/ghost_roles.yml b/Resources/Prototypes/DeltaV/Entities/Markers/Spawners/ghost_roles.yml index b43f50890c2..88a2488db09 100644 --- a/Resources/Prototypes/DeltaV/Entities/Markers/Spawners/ghost_roles.yml +++ b/Resources/Prototypes/DeltaV/Entities/Markers/Spawners/ghost_roles.yml @@ -44,4 +44,19 @@ layers: - state: green - sprite: Structures/Wallmounts/signs.rsi - state: radiation \ No newline at end of file + state: radiation + +- type: entity + parent: MarkerBase + id: SpawnPointGhostParadoxAnomaly + name: paradox anomaly spawn point + components: + - type: GhostRole + name: ghost-role-information-paradox-anomaly-name + description: ghost-role-information-paradox-anomaly-description + rules: ghost-role-information-paradox-anomaly-rules + - type: ParadoxAnomalySpawner + - type: Sprite + sprite: Markers/jobs.rsi + layers: + - state: green diff --git a/Resources/Prototypes/DeltaV/GameRules/midround.yml b/Resources/Prototypes/DeltaV/GameRules/midround.yml new file mode 100644 index 00000000000..82b47c05718 --- /dev/null +++ b/Resources/Prototypes/DeltaV/GameRules/midround.yml @@ -0,0 +1,11 @@ +- type: entity + noSpawn: true + parent: BaseGameRule + id: ParadoxAnomaly + components: + - type: GenericAntagRule + agentName: paradox-anomaly-round-end-agent-name + objectives: + - ParadoxAnomalyKillObjective + - ParadoxAnomalyFriendObjective + - ParadoxAnomalyEscapeObjective diff --git a/Resources/Prototypes/DeltaV/Objectives/paradox_anomaly.yml b/Resources/Prototypes/DeltaV/Objectives/paradox_anomaly.yml new file mode 100644 index 00000000000..dd0b74c4616 --- /dev/null +++ b/Resources/Prototypes/DeltaV/Objectives/paradox_anomaly.yml @@ -0,0 +1,52 @@ +- type: entity + abstract: true + parent: BaseTerminatorObjective # mrp terminator real + id: BaseParadoxAnomalyObjective + components: + - type: Objective + issuer: self + +# not using base kill/keep alive objectives since these intentionally conflict with eachother +- type: entity + noSpawn: true + parent: BaseParadoxAnomalyObjective + id: ParadoxAnomalyKillObjective + description: This universe doesn't have room for both of us. + components: + - type: Objective + icon: + sprite: Objects/Weapons/Guns/Pistols/viper.rsi + state: icon + - type: TargetObjective + title: objective-paradox-anomaly-kill-title + - type: TerminatorTargetOverride + - type: KillPersonCondition + requireDead: true + +- type: entity + noSpawn: true + parent: BaseParadoxAnomalyObjective + id: ParadoxAnomalyFriendObjective + description: Perhaps there is room, as friends. + components: + - type: Objective + icon: + sprite: Objects/Misc/bureaucracy.rsi + state: folder-white + - type: TargetObjective + title: objective-paradox-anomaly-friend-title + - type: TerminatorTargetOverride + - type: KeepAliveCondition + +- type: entity + noSpawn: true + parent: [BaseParadoxAnomalyObjective, BaseLivingObjective] + id: ParadoxAnomalyEscapeObjective + name: Escape to centcom alive and unrestrained. + description: This is your universe now. + components: + - type: Objective + icon: + sprite: Structures/Furniture/chairs.rsi + state: shuttle + - type: EscapeShuttleCondition diff --git a/Resources/Prototypes/GameRules/events.yml b/Resources/Prototypes/GameRules/events.yml index 83dffda3095..2dcf3603cf9 100644 --- a/Resources/Prototypes/GameRules/events.yml +++ b/Resources/Prototypes/GameRules/events.yml @@ -280,7 +280,7 @@ lightBreakChancePerSecond: 0.0003 doorToggleChancePerSecond: 0.001 -# - type: entity +# - type: entity # DeltaV - replaced terminator with paradox anomaly in midroundantag rule # parent: BaseGameRule # id: TerminatorSpawn # noSpawn: true From 87d45e4ef14ea441de078c6f1a3d8a1f9a95d56b Mon Sep 17 00:00:00 2001 From: DeltaV-Bot Date: Tue, 13 Feb 2024 15:55:49 +0000 Subject: [PATCH 28/29] Automatic Changelog Update (#825) --- Resources/Changelog/DeltaVChangelog.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Resources/Changelog/DeltaVChangelog.yml b/Resources/Changelog/DeltaVChangelog.yml index d6365fb37d0..baab23e24cc 100644 --- a/Resources/Changelog/DeltaVChangelog.yml +++ b/Resources/Changelog/DeltaVChangelog.yml @@ -1636,3 +1636,11 @@ Entries: message: Removed the ability of Harpies to destroy people's ears. id: 244 time: '2024-02-13T13:29:37.0000000+00:00' +- author: deltanedas + changes: + - type: Add + message: >- + Brought back paradox anomalies. Beware anyone that looks *just* like + you! + id: 245 + time: '2024-02-13T15:55:35.0000000+00:00' From 6687a3187faaeac78153e17d1f4298365efda7a2 Mon Sep 17 00:00:00 2001 From: Debug <49997488+DebugOk@users.noreply.github.com> Date: Tue, 13 Feb 2024 17:12:37 +0100 Subject: [PATCH 29/29] Prevent action runners from being wasted on DeltaV-Bot (#831) Stop actions from running on our bot --- .github/workflows/build-map-renderer.yml | 2 +- .github/workflows/build-test-debug.yml | 2 +- .github/workflows/conflict-labeler.yml | 2 +- .github/workflows/labeler-pr.yml | 2 +- .github/workflows/test-packaging.yml | 2 +- .github/workflows/validate-rgas.yml | 2 +- .github/workflows/validate_mapfiles.yml | 2 +- .github/workflows/yaml-linter.yml | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/build-map-renderer.yml b/.github/workflows/build-map-renderer.yml index 35aed1a7f7f..01575f64b9b 100644 --- a/.github/workflows/build-map-renderer.yml +++ b/.github/workflows/build-map-renderer.yml @@ -10,7 +10,7 @@ on: jobs: build: - if: github.actor != 'PJBot' && github.event.pull_request.draft == false + if: github.actor != 'PJBot' && github.event.pull_request.draft == false && github.actor != 'DeltaV-Bot' strategy: matrix: os: [ubuntu-latest] diff --git a/.github/workflows/build-test-debug.yml b/.github/workflows/build-test-debug.yml index 47f9fd1a514..519f5af6f49 100644 --- a/.github/workflows/build-test-debug.yml +++ b/.github/workflows/build-test-debug.yml @@ -10,7 +10,7 @@ on: jobs: build: - if: github.actor != 'PJBot' && github.event.pull_request.draft == false + if: github.actor != 'PJBot' && github.event.pull_request.draft == false && github.actor != 'DeltaV-Bot' strategy: matrix: os: [ubuntu-latest] diff --git a/.github/workflows/conflict-labeler.yml b/.github/workflows/conflict-labeler.yml index 1a9b91601dc..a47965334c5 100644 --- a/.github/workflows/conflict-labeler.yml +++ b/.github/workflows/conflict-labeler.yml @@ -8,7 +8,7 @@ on: jobs: Label: - if: github.actor != 'PJBot' + if: github.actor != 'PJBot' && github.actor != 'DeltaV-Bot' runs-on: ubuntu-latest steps: - name: Check for Merge Conflicts diff --git a/.github/workflows/labeler-pr.yml b/.github/workflows/labeler-pr.yml index 711eb0ccac0..e1755aa26e3 100644 --- a/.github/workflows/labeler-pr.yml +++ b/.github/workflows/labeler-pr.yml @@ -5,7 +5,7 @@ on: jobs: labeler: - if: github.actor != 'PJBot' + if: github.actor != 'PJBot' && github.actor != 'DeltaV-Bot' runs-on: ubuntu-latest steps: - uses: actions/labeler@v3 diff --git a/.github/workflows/test-packaging.yml b/.github/workflows/test-packaging.yml index 2dce502697d..ccece69adb6 100644 --- a/.github/workflows/test-packaging.yml +++ b/.github/workflows/test-packaging.yml @@ -29,7 +29,7 @@ on: jobs: build: name: Test Packaging - if: github.actor != 'PJBot' && github.event.pull_request.draft == false + if: github.actor != 'PJBot' && github.event.pull_request.draft == false && github.actor != 'DeltaV-Bot' runs-on: ubuntu-latest steps: diff --git a/.github/workflows/validate-rgas.yml b/.github/workflows/validate-rgas.yml index 2c4bb40fdf3..0ed04021ebd 100644 --- a/.github/workflows/validate-rgas.yml +++ b/.github/workflows/validate-rgas.yml @@ -9,7 +9,7 @@ on: jobs: yaml-schema-validation: name: YAML RGA schema validator - if: github.actor != 'PJBot' && github.event.pull_request.draft == false + if: github.actor != 'PJBot' && github.event.pull_request.draft == false && github.actor != 'DeltaV-Bot' runs-on: ubuntu-latest steps: - uses: actions/checkout@v3.6.0 diff --git a/.github/workflows/validate_mapfiles.yml b/.github/workflows/validate_mapfiles.yml index fb11e1a4697..43d77841a86 100644 --- a/.github/workflows/validate_mapfiles.yml +++ b/.github/workflows/validate_mapfiles.yml @@ -9,7 +9,7 @@ on: jobs: yaml-schema-validation: name: YAML map schema validator - if: github.actor != 'PJBot' && github.event.pull_request.draft == false + if: github.actor != 'PJBot' && github.event.pull_request.draft == false && github.actor != 'DeltaV-Bot' runs-on: ubuntu-latest steps: - uses: actions/checkout@v3.6.0 diff --git a/.github/workflows/yaml-linter.yml b/.github/workflows/yaml-linter.yml index 691eb29f1de..796795b234d 100644 --- a/.github/workflows/yaml-linter.yml +++ b/.github/workflows/yaml-linter.yml @@ -10,7 +10,7 @@ on: jobs: build: name: YAML Linter - if: github.actor != 'PJBot' && github.event.pull_request.draft == false + if: github.actor != 'PJBot' && github.event.pull_request.draft == false && github.actor != 'DeltaV-Bot' runs-on: ubuntu-latest steps: - uses: actions/checkout@v3.6.0